matlab多目標優化演算法
① 用遺傳演算法工具箱求解一個多目標優化問題,現在需要一個matlab程序,求高人指點
用遺傳演算法工具箱求解一個多目標優化問題的步驟:
1、根據題意,建立自定義目標函數,ga_fun1(x)
2、在命令窗口中,輸入
>> optimtool %調用遺傳演算法工具箱
3、在遺傳演算法工具箱界面中,分別對Fitnessfunction框內輸入@ga_fun1();A框內輸入[1,1,1];b框內輸入16;Aeq框內輸入[];beq框內輸入[];Lower框內輸入[0,0,0];Upper框內輸入[];
4、單擊Start。得到x=4.508 y=2.513 z=1.912值。
② 求matlab計算多目標優化問題。
用matlab求解題主的多目標優化問題,可以這樣來考慮:
1、創建目標函數,其內容
w1 =0.4;w2=1-w1;
y =w1*0.78539*(x(1)^2-x(2)^2)+w2*x(1)^2;
2、創建約束條件函數,其內容
c(1)=(9224400*x(1)/(x(1)^4-x(2)^4))-45;
c(2)=(13050819/(x(1)^4-x(2)^4))-1;
c(3)=216379-(x(1)^4-x(2)^4)/x(1);
c(4)=-x(1)+x(2);
ceq = [];
3、初設x0的初值,即 x0 =[80,20];
4、設定上下限值,即lb=[0,0]; ub=[170,100];
5、使用fmincon最小值最優化函數,求出x(1)、x(2)的值。即
[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x))
6、驗證約束條件,即
disp('x2-x1<0')
disp(x(2)-x(1))
運行代碼後得到如下結果。
③ 怎麼用matlab中的粒子群演算法求解多目標優化問題
不知道你所說的多目標是指什麼,據我的理解,既然有個目標函數,那麼多目標可以在目標函數那裡表示,我最近也在做這個粒子群演算法, 下面是我的vc++6.0代碼,改造了一下基本粒子群,求路徑的.. #include #include #include using namespace std; d
④ Matlab遺傳演算法計算多目標優化
太難了。。。。。
⑤ 用matlab 做多目標優化 ,利用 fgoalattain 函數,w如何設置好,為什麼一般設置成w=gaol
weight: 加權矢量用於控制fgoalattain中目標的相對不足或超額數值。 當目標值全部為非零時,為了確保活動目標的低於或超過相同百分比,將加權函數設置為abs(goal);
當加權函數權重為正時,fgoalattain會嘗試使目標小於目標值。 要使目標函數大於目標值,請將權重設置為負值而不是正值。 要使目標函數盡可能接近目標值,請使用EqualityGoalCount選項並將該目標作為fun返回的向量的第一個元素(請參閱前面的fun和options描述)。
轉自這個連接
原文鏈接:https://blog.csdn.net/Power1_Power2/article/details/82957815
⑥ 用matlab求解多目標優化問題的程序,如何對目標函數進行加權
對各個目標值的權重進行計算,如有三個目標x1,x2,x3,每個目標的權重設分別為a(1),a(2),a(3),則最終的目標函數為a(1)*x1+a(2)*x2+a(3)*x3。具體權重怎麼設置有很多種方法,也可以根據各個目標的重要性進行人為的設定,設定完後三個目標的權重之和要為1,即:a(1)+a(2)+a(3)=1.
⑦ 用matlab優化,多目標優化問題,數學模型如下圖,編程如下,為什麼在兩台機子上運行結果不一樣
這很正常,復雜問題的求解往往採用先選取一個初始解,然後採用某種演算法進行迭代的方式。fgoalattain函數應該就是採用這種方式。和傳統的求解方式不同,這種方式求解並不能准確的得到最優解,而是通過演算法向最優解逼近。演算法的不同、初始解的不同以及迭代的次數都有可能影響到最終解,所以得到不同的解也是很正常的。
⑧ 利用MATLAB求多目標線性函數優化問題,求高手告知!最好能給出代碼
利用MATLAB求多目標線性函數優化問題,可以用
fgoalattain函數。求解方法:
1、建立自定義函數文件,其內容
function f = myfun(x)
f(:,1) = a*x(1)+b*x(2)+c*x(3)+d*x(4)
f(:,2) =e*x(1)+f*x(2)+g*x(3)+h*x(4)
2、建立自定義函數文件,其內容
function [c,ceq] =mycon(x)
ceq=1-(x(1)+x(2)+x(3)+x(4))
3、建立執行文件,其內容
x0=[x10,x20,x30,x40]
[x,f] = fgoalattain(myfun,x0,[],[],[],[],[],[],[0,0,0,0],[1,1,1,1],mycon)