當前位置:首頁 » 操作系統 » 線性規劃遺傳演算法

線性規劃遺傳演算法

發布時間: 2024-08-23 18:21:44

1. 遺傳演算法能不能解決線性規劃順便舉個例子或者鏈接吧。

當然可以了,不過就是看你這個線性規劃的約束條件怎麼設置,一般可以在求適應度的時候設置為可行域外適應度值取一個足夠大的數

2. 求助大神 利用遺傳演算法解決非線性規劃問題,最好有MATLAB代碼

%%%%%%%%%%%
無聊到專門幫你寫了個程序。不想全部寫完,自己補完。PS:這題怎麼看都是線性規劃
&&&&&&&&&&&&&&
%%%%%%%%%%%%%%利用遺傳演算法計算最優化問題%%%%%%%
%遺傳演算法參數設置
popsize=200; %種群個數
generation=500;%種群迭代次數,繁殖後代數
pc=0.4; %兩個體之間交叉概率
pm=0.05; %個體變異的概率
yueshu=0; %約束成立的標志為1
%初始化群體
for i=1:popsize
while(yuesu==0) %當約束成立時,不再變異。約束不成立時變異。
x(i,1)=randint(1,1,[0,35]); %隨機生成(0-35)的整數
x(i,2)=randint(1,1,[0,60]);
x(i,3)=randint(1,1,[0,40]);
x(i,4)=randint(1,1,[0,40]);
x(i,5)=randint(1,1,[0,30]);
x(i,6)=randint(1,1,[0,30]);
x(i,7)=randint(1,1,[0,35]);
x(i,8)=randint(1,1,[0,20]);
%這里自己寫幾行程序就好
if
%這里判斷約束條件,若符合,yueshu=1;
end
end
end
for n=1:generation
%計算適應度
[row col]=size(x);
for i=1:row
fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;
end
%輪盤賭選擇
zong=sum(fitness);
xt=x;
for i=1:row
temp=rand(1);
for j=1:row
if temp< fitness(j)/zong
break;
end
end
x(i,:)=xt(j,:);
end
%兩個個體交叉變異
x2=x;
[row col]=size(x);
for i=1:2:row
temp=rand(1);
if temp<pc
%%%%%%%%%%%%%這里還要自己寫個程序判斷是否符合約束,不符合一直交叉,直到交叉到符合約束
point=randint(1,1,[1,8]);
x(i,point:8)=x2(i+1,point:8);
x(i+1,1:point)=x2(i,1:point);
end
end
%單個點變異
x3=x;
[row col]=size(x);
for i=1:row
for j=1:8
temp=rand(1);
if(temp<pm)
yueshu=0;
while(yueshu==0) %當約束成立時,不再變異。約束不成立時變異。
if j==1 x(i,1)=randint(1,1,[0,35]);end
if j==2 x(i,2)=randint(1,1,[0,60]);end
if j==3 x(i,3)=randint(1,1,[0,40]);end
if j==4 x(i,4)=randint(1,1,[0,40]);end
if j==5 x(i,5)=randint(1,1,[0,30]);end
if j==6 x(i,6)=randint(1,1,[0,30]);end
if j==7 x(i,7)=randint(1,1,[0,35]);end
if j==8 x(i,8)=randint(1,1,[0,20]);end
%這里自己寫程序啊
if
%這里判斷約束條件,若符合,yueshu=1;
end
end
end
end
end
end
[row col]=size(x);
for i=1:row
fitness(i)=(x(i,1)+x(i,2)+x(i,3)+x(i,5)+x(i,6)+x(i,7)+x(i,8))/20;
end
maxx=find(fitness==max(fitness));
x(maxx,:)

3. 數學建模演算法有哪些

1. 蒙特卡羅演算法。 該演算法又稱隨機性模擬演算法,是通過計算機模擬來解決問題的演算法,同時可以通過模擬來檢驗自己模型的正確性,幾乎是比賽時必用的方法。
2. 數據擬合、參數估計、插值等數據處理演算法。 比賽中通常會遇到大量的數據需要處理,而處理數據的關鍵就在於這些演算法,通常使用MATLAB 作為工具。
3. 線性規劃、整數規劃、多元規劃、二次規劃等規劃類演算法。 建模競賽大多數問題屬於最優化問題,很多時候這些問題可以用數學規劃演算法來描述,通常使用Lindo、Lingo 軟體求解。
4. 圖論演算法。 這類演算法可以分為很多種,包括最短路、網路流、二分圖等演算法,涉及到圖論的問題可以用這些方法解決,需要認真准備。
5. 動態規劃、回溯搜索、分治演算法、分支定界等計算機演算法。 這些演算法是演算法設計中比較常用的方法,競賽中很多場合會用到。
6. 最優化理論的三大非經典演算法:模擬退火演算法、神經網路演算法、遺傳演算法。 這些問題是用來解決一些較困難的最優化問題的,對於有些問題非常有幫助,但是演算法的實現比較困難,需慎重使用。
7. 網格演算法和窮舉法。 兩者都是暴力搜索最優點的演算法,在很多競賽題中有應用,當重點討論模型本身而輕視演算法的時候,可以使用這種暴力方案,最好使用一些高級語言作為編程工具。
8. 一些連續數據離散化方法。 很多問題都是實際來的,數據可以是連續的,而計算機只能處理離散的數據,因此將其離散化後進行差分代替微分、求和代替積分等思想是非常重要的。
9. 數值分析演算法。 如果在比賽中採用高級語言進行編程的話,那些數值分析中常用的演算法比如方程組求解、矩陣運算、函數積分等演算法就需要額外編寫庫函數進行調用。
10. 圖象處理演算法。 賽題中有一類問題與圖形有關,即使問題與圖形無關,論文中也會需要圖片來說明問題,這些圖形如何展示以及如何處理就是需要解決的問題,通常使用MATLAB 進行處理。
以下將結合歷年的競賽題,對這十類演算法進行詳細地說明。
以下將結合歷年的競賽題,對這十類演算法進行詳細地說明。
2 十類演算法的詳細說明
2.1 蒙特卡羅演算法
大多數建模賽題中都離不開計算機模擬,隨機性模擬是非常常見的演算法之一。
舉個例子就是97 年的A 題,每個零件都有自己的標定值,也都有自己的容差等級,而求解最優的組合方案將要面對著的是一個極其復雜的公式和108 種容差選取方案,根本不可能去求解析解,那如何去找到最優的方案呢?隨機性模擬搜索最優方案就是其中的一種方法,在每個零件可行的區間中按照正態分布隨機的選取一個標定值和選取一個容差值作為一種方案,然後通過蒙特卡羅演算法模擬出大量的方案,從中選取一個最佳的。另一個例子就是去年的彩票第二問,要求設計一種更好的方案,首先方案的優劣取決於很多復雜的因素,同樣不可能刻畫出一個模型進行求解,只能靠隨機模擬模擬。
2.2 數據擬合、參數估計、插值等演算法
數據擬合在很多賽題中有應用,與圖形處理有關的問題很多與擬合有關系,一個例子就是98 年美國賽A 題,生物組織切片的三維插值處理,94 年A 題逢山開路,山體海拔高度的插值計算,還有吵的沸沸揚揚可能會考的「非典」問題也要用到數據擬合演算法,觀察數據的走向進行處理。此類問題在MATLAB中有很多現成的函數可以調用,熟悉MATLAB,這些方法都能游刃有餘的用好。
2.3 規劃類問題演算法
競賽中很多問題都和數學規劃有關,可以說不少的模型都可以歸結為一組不等式作為約束條件、幾個函數表達式作為目標函數的問題,遇到這類問題,求解就是關鍵了,比如98年B 題,用很多不等式完全可以把問題刻畫清楚,因此列舉出規劃後用Lindo、Lingo 等軟體來進行解決比較方便,所以還需要熟悉這兩個軟體。
2.4 圖論問題
98 年B 題、00 年B 題、95 年鎖具裝箱等問題體現了圖論問題的重要性,這類問題演算法有很多,包括:Dijkstra、Floyd、Prim、Bellman-Ford,最大流,二分匹配等問題。每一個演算法都應該實現一遍,否則到比賽時再寫就晚了。
2.5 計算機演算法設計中的問題
計算機演算法設計包括很多內容:動態規劃、回溯搜索、分治演算法、分支定界。比如92 年B 題用分枝定界法,97 年B 題是典型的動態規劃問題,此外98 年B 題體現了分治演算法。這方面問題和ACM 程序設計競賽中的問題類似,推薦看一下《計算機演算法設計與分析》(電子工業出版社)等與計算機演算法有關的書。
2.6 最優化理論的三大非經典演算法
這十幾年來最優化理論有了飛速發展,模擬退火法、神經網路、遺傳演算法這三類演算法發展很快。近幾年的賽題越來越復雜,很多問題沒有什麼很好的模型可以借鑒,於是這三類演算法很多時候可以派上用場,比如:97 年A 題的模擬退火演算法,00 年B 題的神經網路分類演算法,象01 年B 題這種難題也可以使用神經網路,還有美國競賽89 年A 題也和BP 演算法有關系,當時是86 年剛提出BP 演算法,89 年就考了,說明賽題可能是當今前沿科技的抽象體現。03 年B 題伽馬刀問題也是目前研究的課題,目前演算法最佳的是遺傳演算法。
2.7 網格演算法和窮舉演算法
網格演算法和窮舉法一樣,只是網格法是連續問題的窮舉。比如要求在N 個變數情況下的最優化問題,那麼對這些變數可取的空間進行采點,比如在[a; b] 區間內取M +1 個點,就是a; a+(b-a)/M; a+2 (b-a)/M; …… ; b 那麼這樣循環就需要進行(M + 1)N 次運算,所以計算量很大。比如97 年A 題、99 年B 題都可以用網格法搜索,這種方法最好在運算速度較快
的計算機中進行,還有要用高級語言來做,最好不要用MATLAB 做網格,否則會算很久的。窮舉法大家都熟悉,就不說了。
2.8 一些連續數據離散化的方法
大部分物理問題的編程解決,都和這種方法有一定的聯系。物理問題是反映我們生活在一個連續的世界中,計算機只能處理離散的量,所以需要對連續量進行離散處理。這種方法應用很廣,而且和上面的很多演算法有關。事實上,網格演算法、蒙特卡羅演算法、模擬退火都用了這個思想。
2.9 數值分析演算法
這類演算法是針對高級語言而專門設的,如果你用的是MATLAB、Mathematica,大可不必准備,因為象數值分析中有很多函數一般的數學軟體是具備的。
2.10 圖象處理演算法
01 年A 題中需要你會讀BMP 圖象、美國賽98 年A 題需要你知道三維插值計算,03 年B 題要求更高,不但需要編程計算還要進行處理,而數模論文中也有很多圖片需要展示,因此圖象處理就是關鍵。做好這類問題,重要的是把MATLAB 學好,特別是圖象處理的部分。

4. 數學建模的工具有哪些

數學建模是一種將實際問題抽象為數學模型,通過求解模型來預測和解決實際問題的方法。在數學建模過程中,我們需要使用一些工具來幫助我們更好地理解和解決問題。以下是一些常用的數學建模工具:


1.編程語言:Python、MATLAB、R等編程語言在數學建模中被廣泛使用。它們可以幫助我們快速實現數學模型的求解和分析,以及數據的處理和可視化。


2.數據分析軟體:Excel、SPSS、SAS等數據分析軟體可以幫助我們對數據進行清洗、整理和分析,為建立數學模型提供基礎。


3.繪圖軟體:Visio、AutoCAD、Origin等繪圖軟體可以幫助我們將數學模型的結果以圖形的形式展示出來,更直觀地反映問題的規律。


4.優化演算法:線性規劃、整數規劃、遺傳演算法、粒子群優化等優化演算法可以幫助我們在數學模型中找到最優解,為決策提供依據。


5.統計方法:回歸分析、時間序列分析、聚類分析等統計方法可以幫助我們從數據中發現規律,為建立數學模型提供支持。


6.機器學習和人工智慧:神經網路、支持向量機、決策樹等機器學習和人工智慧技術可以幫助我們處理復雜的非線性問題,提高模型的准確性。


7.專業領域軟體:針對特定領域的軟體,如地理信息系統(GIS)、運籌學軟體(Lingo、GAMS等)等,可以幫助我們更好地解決特定領域的問題。


8.資料庫管理系統:MySQL、Oracle、SQLServer等資料庫管理系統可以幫助我們存儲和管理大量的數據,為數學建模提供數據支持。


9.文獻檢索和管理工具:EndNote、NoteExpress等文獻檢索和管理工具可以幫助我們快速查找和管理相關文獻,為數學建模提供理論支持。


10.團隊協作工具:騰訊文檔、WPSOffice、Teambition等團隊協作工具可以幫助團隊成員共享資料、協同工作,提高數學建模的效率。

5. 線性規劃和遺傳演算法哪個好學

線性規劃好毀租學。線性規劃簡單,遺傳演算法解纖鍵兆決多目標問題,有多個目標函數,而線性規劃只有一個。標準的遺傳演算法存在局部搜索能力差和早熟等亮稿缺陷,不能保證演算法收斂。經典的非線性規劃演算法大多採用梯度下降的方法求解,局部搜索能力強。

熱點內容
支付寶支付密碼如何修改 發布:2024-11-25 06:38:47 瀏覽:923
java開發要學習什麼技術 發布:2024-11-25 06:20:28 瀏覽:1000
java猿 發布:2024-11-25 06:18:36 瀏覽:127
如何刷安卓44 發布:2024-11-25 06:18:32 瀏覽:529
安卓手機怎麼限制app時間 發布:2024-11-25 06:14:15 瀏覽:403
福建虛擬伺服器管理軟體雲伺服器 發布:2024-11-25 06:05:46 瀏覽:106
android載入圖片 發布:2024-11-25 06:05:00 瀏覽:168
linux的ls 發布:2024-11-25 05:47:56 瀏覽:844
oracle存儲過程游標實例 發布:2024-11-25 05:40:32 瀏覽:804
xpsql2000 發布:2024-11-25 05:20:20 瀏覽:372