原创 分佈估計算法解決旅行商問題(TSP)

在用分佈估計算法解決旅行商問題時,結構與傳統的分佈估計算法相似,只不過是把概率向量換成了“概率矩陣”而已:通過概率矩陣生成解。評估解。選擇優勢羣體。更新概率矩陣。重複以上4步直至迭代結束。這裏說的“概率矩陣”記錄了上一代優勢羣體中,“城市對

原创 分佈估計算法求解0-1揹包問題二

一些其他函數重量計算函數:functionwgtsum = weightsum(pop, weights)%計算種羣的重量%pop input 種羣%weights input 重量向量%wgtsum

原创 分佈估計算法求解0-1揹包問題一

0-1揹包問題是:有一個固定容量的揹包,和固定種類的物品,每種物品只有一件。每件物品有各自的價值和重量,求解哪些物品放入揹包可以使價值總和最大,且不超過揹包容量。本例中用分佈估計算法求解0-1揹包問題結果如下:可以看到,分佈估計算法可能在很

原创 蟻羣算法解決旅行商(TSP)問題

使用蟻羣算法解決旅行商問題步驟如下:初始化參數。將螞蟻隨機的放在城市上。螞蟻各自按概率選擇下一座城市。螞蟻完成各自的周遊。更新信息素,進行下一次迭代。在更新信息素的過程中,只有最優路線上的信息素會進行增加操作,且不能超過信息素最大值。結果如

原创 k-近鄰算法

k-近鄰算法(kNN)採用測量不同特徵值之間的距離方法進行分類。使用數據範圍:數值型和標稱型。 優點:精度高、對異常值不敏感、無數據輸入假定。 缺點:計算複雜度高、空間複雜度高。k-近鄰算法的一般流程:收集數據。準備數據:格式化數據格式、

原创 幾種優化算法入門 目錄

遺傳算法的基本概念用遺傳算法求函數最大值一:編碼和適應值用遺傳算法求函數最大值二:選擇、交叉和變異用遺傳算法求函數最大值三:主程序和結果輪盤賭法簡單介紹Matlab中遺傳算法工具箱的使用遺傳算法解決旅行商問題(TSP)一:初始化和適應值遺

原创 蟻羣算法求函數最大值一

這裏使用蟻羣算法求函數的最大值,函數是:f = -(x.^4 + 3*y.^4 - 0.2*cos(3*pi*x) - 0.4*cos(4*pi*y) + 0.6);步驟如下:初始化參數。初始化蟻羣,第一代蟻羣隨機分佈在可行域中。初始化信息

原创 蟻羣算法求函數最大值二

狀態轉移和約束邊界函數函數說明如下:functionsants = edgeselection(ants, tau, P0, lamda, xl, xu, yl, yu)% 狀態轉移 + 約束邊界% ants input

原创 差分進化算法(DE)求函數最小值

差分進化算法求函數 Z = 3 * cos(X .* Y) + X + Y , -4 <= X <= 4, -4 <= Y <= 4。計算目標函數值計算目標函數值的函數:function z = calobj (pop)% 計算目標函數值%

原创 用遺傳算法求函數最大值三:主程序和結果

主程序主程序如下:clear clc popsize = 30; % 種羣規模chromlength = 10; % 染色體長度pc = 0.5; % 交

原创 用遺傳算法求函數最大值二:選擇、交叉和變異

選擇選擇(或複製)操作決定哪些個體可以進入下一代。這裏採用輪盤賭法選擇,這種方法比較容易實現。在輪盤賭法中,設種羣大小爲n,其中個體i的適應值是f_ifi,則i被選擇的概率爲:p_i = \frac{f_i}{\sum_{j=1}^{n}

原创 Matlab中遺傳算法工具箱的使用

這裏介紹Matlab中遺傳算法ga()函數的用法,其常用語法如下:[x, fval] x = ga(fun,nvars)其中x是遺傳算法得到的解,fval是解對應的函數值。fun是目標函數,nvars是自變量個數。求解 f(x,y)=(co

原创 遺傳算法的基本概念

遺傳算法(genetic algorithm, GA)是模擬自然界生物進化機制的一種算法,遵循適者生存、優勝劣汰的法則。遺傳算法的作用對象是種羣(Population),種羣中的每個個體是問題的一個解,叫做染色體(Chromosome)。

原创 用遺傳算法求函數最大值一:編碼和適應值

下面使用一個具體的例子來解釋遺傳算法。 問題如下:求函數 f(x)=9×sin(5x)+8×cos(4x), x∈[5,10] 的最大值。設置參數首先需要設定幾個參數:popsize = 30; % 種羣規模ch