導航:首頁 > 五金知識 > 遺傳演算法工具箱非線性約束條件

遺傳演算法工具箱非線性約束條件

發布時間:2021-12-02 11:35:27

A. 請高人指點:matlab遺傳演算法工具箱編程,求一個多約束,多元非線性方程的最小值


將下屬兩個目標函數分別保存在兩個m文件中
function f1=func1(x) %第一目標函數
f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;
function f2=func2(x) %第二目標函數
f2=x(:,1).*(1-x(:,2))+10;

function GA()
clear;clc;close all
NIND=100; %個體數目
MAXGEN=50; %最大遺傳代數
NVAR=2; %變數個數
PRECI=20; %變數的二進制位數
GGAP=0.9; %代溝
trace1=[];trace2=[];trace3=[]; %性能跟蹤
%建立區域描述器
% rep([PRECI],[1,NVAR])
FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI); %初始種群
v=bs2rv(Chrom,FieldD) ; %初始種群十進制轉換
gen=1;
while gen<MAXGEN,
[NIND,N]=size(Chrom);
M=fix(NIND/2);
ObjV1=func1(v(1:M,:)); %分組後第一目標函數值
FitnV1=ranking(ObjV1); %分配適應度值
SelCh1=select('sus',Chrom(1:M,:),FitnV1,GGAP); %選擇
ObjV2=func2(v(M+1:NIND,:)); %分組後第二目標函數值
FitnV2=ranking(ObjV2); %分配適應度值
SelCh2=select('sus',Chrom(M+1:NIND,:),FitnV2,GGAP); %選擇
SelCh=[SelCh1;SelCh2]; %合並
SelCh=recombin('xovsp',SelCh,0.7); %重組
Chrom=mut(SelCh); %變異
v=bs2rv(Chrom,FieldD);
trace1(gen,1)=min(func1(v));
trace1(gen,2)=sum(func1(v))/length(func1(v));
trace2(gen,1)=min(func2(v));
trace2(gen,2)=sum(func2(v))/length(func2(v));
trace3(gen,1)=min(func1(v)+func2(v));
trace3(gen,2)=sum(func1(v))/length(func1(v))+sum(func2(v))/length(func2(v));
gen=gen+1;
end
figure(1);clf;
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid on;
legend('解的變化','種群均值的變化')
xlabel('迭代次數');ylabel('目標函數值');
figure(2);clf;
plot(trace2(:,1));hold on;
plot(trace2(:,2),'-.');
plot(trace2(:,1),'.');
plot(trace2(:,2),'.');grid;
legend('解的變化','種群均值的變化');
xlabel('迭代次數');ylabel('目標函數值');
figure(3);clf;
plot(trace3(:,1));hold on;
plot(trace3(:,2),'-.');
plot(trace3(:,1),'.');
plot(trace3(:,2),'.');grid;
legend('解的變化','種群均值的變化');
xlabel('迭代次數');ylabel('目標函數值');
figure(4);clf;plot(func1(v));hold on;
plot(func2(v),'r-.');grid;

B. matlab遺傳演算法工具箱求解非線性約束問題,如何在GUI設置,或者這個程序如何編

感覺lb=[2,30];和ub=[2,30];上有問題。根據我的判斷,lb=[2,30];和ub=[];,這樣的話,可以得到,x1=5.91529880464077,x2= 91.34970961511135,y=8.612323770417001

C. 遺傳演算法非線性約束問題

很多時候遺傳演算法並不能給出合理的答案,你可以考慮適當的更改初始種群的大小、迭代次數的上限、函數精度等處理一下!工具箱中的函數往往是通用的,必要的時候你需要自己提供種群初始函數,甚至優勝劣汰、變異等等,建議復雜的優化問題還是交給lingo吧!

D. 使用matlab遺傳演算法工具箱如何加入目標函數中變數的約束條件啊,可否在M文件中加

首先回答你第一個問題:怎麼加入變數的約束條件?

打開遺傳演算法工具箱的窗體中會有下圖所示的選項,即是約束條件的編輯

至於添加的方式,這里要重點的提一下,首先將問題抽象成規劃問題的標准形式(如果你不懂什麼是標准形式的話,建議你去翻閱運籌學那本書,上告訴你什麼是標准形式),然後用矩陣語言寫出來,最後將矩陣的系數填寫到線性不等約束和線性相等約束中,同時定義所求變數x的上界和下界(記住有多少個變數就有多少列,如果你發現有些條件中沒有出現某些變數,那麼就應該用0補足,這個是matlab解決規劃問題與lingo想比較麻煩的一個地方,)。

然後回答你第二個問題:可否在M文件中添加約束條件?

當然可以,界面的東西是為了方便不熟悉matlab編程的人而設計出來的,但是其底層的演算法和介面肯定是有的。

碰到不懂的函數,請記得:help函數名

helpga之後會得到一下一些函數

ga

//這個是定義

Syntax //這個是語法也即是調用的規則

x=ga(fitnessfcn,nvars)

x=ga(fitnessfcn,nvars,A,b)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)

x=ga(problem)

[x,fval]=ga(...)

[x,fval,exitflag]=ga(...)

直接給你將最長的那個吧

x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)

X是返回所求的解

fitnessfcn是適應度函數

nvars是適應度函數中所含變數的維數

A是不等式約束中變數的系數矩陣,b是不等式約束中不含變數的值矩陣

Aeq是等式約束中變數的系數矩陣,beq是等式約束中不含變數的值矩陣

LB是下界,UB是上界

nonlcon是非線性約束條件

至於options嘛 我也木有用過,其實你也可以不用管的。

懂了木有呢,親?

E. 用遺傳演算法工具箱怎麼求解線性約束函數

Matlab遺傳演算法工具箱是可以施加的非線性隱性約束條件的。例如:
min z= 3050*x1³+0.25*x2;
其中x1定義域[-0.381,0.381],x2定義域[-100,100]
求目標函數值為10時的x1、x2值。
求解結果
x1=0.14169943480903302 x2=5.289387991237991
function [c,ceq]=ga_con(x) %非線性約束條件函數
c=10-(3050*x(1)^3+0.25*x(2));
ceq=[];

F. 約束條件如何在遺傳演算法工具箱中體現

Matlab優化工具箱中的fmincon()函數就可以求解有約束的最小化包括線性約束和非線性約束,還有邊界控制等具體可以看看幫助系統,如果在操作上有什麼具體問題我們再探討

G. 請問,Matlab遺傳演算法工具箱能施加的非線性隱性約束條件嗎謝謝!!!

Matlab遺傳演算法工具箱是可以施加的非線性隱性約束條件的。例如:

min z= 3050*x1³+0.25*x2;

其中x1定義域[-0.381,0.381],x2定義域[-100,100]

求目標函數值為10時的x1、x2值。

求解結果

x1=0.14169943480903302 x2=5.289387991237991

function [c,ceq]=ga_con(x) %非線性約束條件函數

c=10-(3050*x(1)^3+0.25*x(2));

ceq=[];

H. matlab遺傳演算法工具箱應用問題.在適應度函數處應該輸入什麼約束條件怎麼輸入

這個ga工具箱只能解決簡單的線性約束問題,你的約束條件是非線性約束,所以你還是要使用gatbx菲爾德大學的那個工具箱,你的問題帶有不等式約束,轉化為無約束的拉格朗日對偶問題求解

I. Matlab遺傳工具箱使用時添加非線性約束條件

是非線性約束
再單獨寫個.M文件,像目標函數那樣,把兩個約束條件寫進去,在約束區有個「Nonlinear constraint function」 @+"你的約束文件名"

J. 用matlab的optimization工具箱遺傳演算法,添加約束條件的問題。

你看到下邊那個nonlinear constraint function了嗎?
把你的約束寫在一個m文件的function中,函數名比如取為:xconstr
則將@xconstr寫到nonlinear constraint function後面的框里,應該就可以了。線性約束的話直接寫在上方的欄目中。

你的優化問題沒看到,用遺傳演算法求解一般沒有問題。這種智能優化演算法的最大優點在於求解多局部解優化問題時能得到全局性較好的最有解。如果你不考解的全局最優性的話,可以直接使用fmincon函數來求解。關於fmincon函數,可以在matlab命令行中輸入 doc fmincon命令以查看幫助。

閱讀全文

與遺傳演算法工具箱非線性約束條件相關的資料

熱點內容
江西佳沃工程機械怎麼樣 瀏覽:383
儀表盤上的液體是什麼意思 瀏覽:660
四川東成電動工具 瀏覽:506
超聲波裝置怎麼放置 瀏覽:104
機床跟服裝有什麼關系嘛 瀏覽:298
河南巨人起重機械有限公司怎麼樣 瀏覽:733
筷子手工製作工具箱 瀏覽:581
機械加工如何記績效 瀏覽:684
超聲波封口為什麼時靈時不靈 瀏覽:928
機械設備的單位是什麼 瀏覽:204
暖氣片閥門開多少合適 瀏覽:546
深圳塑料五金製品 瀏覽:296
五金材料市場分析 瀏覽:126
機械傷害的分類有哪些 瀏覽:746
河南實用儀器儀表什麼價格 瀏覽:554
高層地下車庫需要哪些設備用房 瀏覽:710
ga工具箱設置約束條件 瀏覽:57
自動准同期裝置由哪三個 瀏覽:858
飛詩工具箱不識別CAD 瀏覽:10
新寶來怎麼製冷 瀏覽:259