⑴ 用粒子群演算法,編寫MATLAB程序,關於線性規劃問題,怎麼樣處理那些限制條件(就是那幾個<=的式子)
B=I2*g2;
I3=int(B,L2,600,1600);
%以上為第三次積分,未驗證
g1=(1/(44.036*sqrt(2*pi)))*exp((-0.5)*((L1-880.72)/44.036)^2);
D=I3*g1;
R=int(A,L1,400,1400)
⑵ 關於粒子群演算法的問題
粒子群的版本甚多,常用的是加有慣性權重w的
v[] = w * v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[])
一般選擇慣性權重在迭代過程中線性下降,目的是在迭代的初期,以比較大的權重分配給粒子的原速度,而防止粒子過早的傾向於其本身的局部最優與全局最優,此時的全局搜索能力是可以的。但粒子群是基於牛頓力學的,隨著w的減小,速度v的作用會在更新中弱化,對應的是,pbest和gbest的作用得到了加強,這也就意味著,粒子會更加趨向於pbest和gbest的方向移動。這個時候粒子就特別容易陷入局部最優了。
其實陷入局部最優不只是粒子群的問題,進化類的演算法都存在這個問題,只不過有些演算法隨機性強一些,收斂速度慢一些,所以更加容易跳出局部最優(但不是絕對避免)
⑶ 粒子群演算法在求解整數規劃問題時局限性表現在什麼地方
粒子群優化演算法的應用及演算法改進:
http://ipub.cqvip.com/Shop/PackDetail.aspx?id=69534
⑷ 粒子群演算法的優缺點
優點:PSO同遺傳演算法類似,是一種基於迭代的優化演算法。系統初始化為一組隨機解,通過迭代搜尋最優值。同遺傳演算法比較,PSO的優勢在於簡單容易實現,並且沒有許多參數需要調整。
缺點:在某些問題上性能並不是特別好。網路權重的編碼而且遺傳運算元的選擇有時比較麻煩。最近已經有一些利用PSO來代替反向傳播演算法來訓練神經網路的論文。
(4)01規劃問題粒子群演算法擴展閱讀:
注意事項:
基礎粒子群演算法步驟較為簡單。粒子群優化演算法是由一組粒子在搜索空間中運動,受其自身的最佳過去位置pbest和整個群或近鄰的最佳過去位置gbest的影響。
對於有些改進演算法,在速度更新公式最後一項會加入一個隨機項,來平衡收斂速度與避免早熟。並且根據位置更新公式的特點,粒子群演算法更適合求解連續優化問題。
⑸ 粒子群演算法的介紹
粒子群演算法,也稱粒子群優化演算法(Particle Swarm Optimization),縮寫為 PSO, 是近年來由J. Kennedy和R. C. Eberhart等1開發的一種新的進化演算法(Evolutionary Algorithm - EA)。PSO 演算法屬於進化演算法的一種,和模擬退火演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover) 和「變異」(Mutation) 操作,它通過追隨當前搜索到的最優值來尋找全局最優。這種演算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性。粒子群演算法是一種並行演算法。
⑹ 粒子群演算法及其應用
既然是數學系的,可以考慮從粒子群演算法的收斂性證明和分布性檢驗方面著手,偏理論性的證明,這方面比較欠缺,有點類似於高樓地基不穩,大家卻在上面繼續壘
可以參考遺傳演算法的模式定理或隱性並行性定理等,如果能夠提出關於粒子群演算法的定理,應該足夠具有挑戰性了
還有就是對粒子群演算法進行演算法融合或改進,然後針對改進的演算法進行測試,檢驗其在函數優化等方面的效能。
⑺ 粒子群演算法的matlab程序,一個線性規劃問題的解決。主要是那個限制條件的處理。
[r,c] = find(R == max(R(:))); 檢索R中最大元素所在的位置(行標r和列標c)
thetap = theta(c(1)); theta()是自定義函數
⑻ 粒子群演算法解決實際問題時 其維度如何與實際問題相對應
要明白粒子群演算法中,粒子的位置即代表了問題的解,例如你需要求一條路徑 路徑上假定N個節點 那麼N即是這個粒子中的維度
⑼ 用粒子群演算法求解線性約束整數規劃的Matlab程序
對粒子群的約束問題涉及的比較少。這兒摘抄下網路的內容:
PSO演算法推廣到約束優化問題,分為兩類:(http://ke..com/view/1531379.htm)
(1)罰函數法。罰函數的目的是將約束優化問題轉化成無約束優化問題。
(2)將粒子群的搜索范圍都限制在條件約束簇內,即在可行解范圍內尋優。
第一種方法有相關論文,看了下,感覺比較適合等式約束情況,比較類似於在適應度函數中加入拉格朗日乘子的做法,如果論文下不到的話,請留言。
第二種做法倒是用過。大概講下。
針對你的問題,初始化兩維向量,但是由於存在不等式約束,所以考慮先初始化向量的第一維,然後動態算出第二維的范圍,隨機出第二維變數。然後就是計算適應度值,全局、局部最優。
更新過程一樣,先更新第一維變數,然後動態計算第二維的范圍,更新第二維,如果更新後超過了邊界,則取邊界值(或者也可以再次重新更新,直到滿足條件,直覺上感覺第一種還好點,第二種可能會出現無法更新的情況),更新完畢後,計算適應度,更新全局、局部最優解。
補充兩個鏈接吧
http://download.csdn.net/detail/yinjian_2004/1567342
論文:基於改進粒子群優化演算法的約束多目標優化
⑽ 粒子群演算法的演算法介紹
如前所述,PSO模擬鳥群的捕食行為。設想這樣一個場景:一群鳥在隨機搜索食物。在這個區域里只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。
PSO從這種模型中得到啟示並用於解決優化問題。PSO中,每個優化問題的解都是搜索空間中的一隻鳥。我們稱之為「粒子」。所有的粒子都有一個由被優化的函數決定的適應值(fitness value),每個粒子還有一個速度決定他們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在解空間中搜索。
PSO 初始化為一群隨機粒子(隨機解)。然後通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個極值來更新自己。第一個就是粒子本身所找到的最優解,這個解叫做個體極值pBest。另一個極值是整個種群目前找到的最優解,這個極值是全局極值gBest。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那麼在所有鄰居中的極值就是局部極值。 在找到這兩個最優值時,粒子根據如下的公式來更新自己的速度和新的位置:
v[] = w * v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a)
present[] = present[] + v[] (b)
v[] 是粒子的速度, w是慣性權重,present[] 是當前粒子的位置. pbest[] and gbest[] 如前定義 rand () 是介於(0, 1)之間的隨機數. c1, c2 是學習因子. 通常 c1 = c2 = 2.
程序的偽代碼如下
For each particle
____Initialize particle
END
Do
____For each particle
________Calculate fitness value
________If the fitness value is better than the best fitness value (pBest) in history
____________set current value as the new pBest
____End
____Choose the particle with the best fitness value of all the particles as the gBest
____For each particle
________Calculate particle velocity according equation (a)
________Update particle position according equation (b)
____End
While maximum iterations or minimum error criteria is not attained
在每一維粒子的速度都會被限制在一個最大速度Vmax,如果某一維更新後的速度超過用戶設定的Vmax,那麼這一維的速度就被限定為Vmax