『壹』 matlab遺傳演算法工具箱優化結果數值
ga就是在窮舉不可能完成時,用一種方式找到最優解
ga工具的完整形式如下表示
[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES] =
GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options)
X是最優自變數
FVAL是求得的最優值
其他以此是推出標志,結構體,終止時的總群,終止時種群函數值
後半部分以此是目標函數,目標函數自變數個數
A和b是線性約束不等式AX〈b
Aeq和beq是一對線性等式約束,AeqX=beq
lb是X值下限,ub是X值下限
NONLCON是非線性約束函數 options是運行方式。這兩個可以寫函數自己完成,也可默認
函數默認計算最小值,計算最大值要加負號
『貳』 matlab的遺傳演算法優化工具箱怎麼用
如果按照默認設來置來運行GA,輸入源fitness函數和未知量個數,就可以運行了。通常,優化問題的目標函數就是fitness函數。如果想重新設置一下GA的參數,可在options處,設置,具體參數設置還要看看幫助文件。
『叄』 如何用遺傳演算法實現多變數的最優化問題
是不是像求函數最值那樣子?建議你了解一下遺傳演算法的實數編碼,這個對於求函數最值很方便,不用像二進制那樣需要轉換。
簡單介紹一下思路:
最重要的是確定適應度函數,只要確定這個函數就很容易了,就用你不會編程,直接調用matlab的工具箱就行了。
1st.設置種群規模,並初始化種群p,並計算各個個體的適應度。
例如,20個個體,每個個體包含5個變數,x1,x2,x3,x4,x5.
如果你用matlab來編程的話,這個可以很容易實現,會用到random('unif',a,b)這個函數吧。
例如x1的取值范圍是[0,1],那麼x1=random('unif',0,1).
2nd.採用輪盤賭選出可以產生後代的父本,p_parents。
額,輪盤賭的實質就是適應度大的被選出的概率大。這個不難,但說起來比較長,你可以自己去看一下。
3rd.雜交過程的思路隨機將p_parents中的個體隨機兩兩配對,然後隨機產生一個1到n的數(n為變數的個數),設為i,交換每對父本中i之後的變數值。交換以後的p_parents成為後代p_offspring.
這里變起來有點點復雜,不過只要耐心一點,編好配對過程和交換過程。
4th.變異過程,這個比較簡單,不過需要自己把握的較好。
基本的思路是設置一個概率,例如0.05,然後產生一個隨機數如果隨機數比0.05小那麼這個變數值就要產生微小的增加或減少。
這個變異過程要歷遍p_offspring所有的變數喔。
5th.將p和p_offspring合並起來,然後選出適應度大的,重新構成一個如原始種群規模相等的種群。
『肆』 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;
『伍』 如何用遺傳演算法實現多變數的最優化問題
將多個變數的數值編碼編排進去,進行組合,只需要增長基因個體的長度,但是要明確每個變數具體的位置,然後讓每個變數轉化成二進制的等長編碼,組合在一起,就可以來運算了。
具體操作步驟如下:
1、首先要利用一個矩陣去跟蹤每組迭代的結果的大小:
2、然後,要構造一個解碼矩陣FieldD,由bs2rv函數將種群Chrom根據解碼矩陣換成時值向量,返回十進制的矩陣:
且FieldD矩陣的結構如下:
3、要先將目標函數顯示出來,看看基本的函數的形式:
4、設計遺傳演算法的參數估計:
5、經遺傳演算法之後,這個最優解的位置是:(圖中標記藍點的位置)
『陸』 如何調用MATLAB遺傳演算法工具箱
1、打開MATLAB軟體。
『柒』 運用MATLAB遺傳演算法工具箱求解非線性多目標優化問題,煩請高人指點!
matlab中沒有rep這個函數,需要你自己定義這個函數。
『捌』 用遺傳演算法工具箱求解一個多目標優化問題,現在需要一個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遺傳演算法工具箱優化變數定義問題
你定義的目標函數有問題。應把h1、h2、h3看成一個變數組,即h=[h1,h2,h3],即
function y=Fitfun1(h)
y=25*h(1)+50*h(2)-10*h(3) %為了說回明問題,把函數表達答式寫成該形式
如還不能理解,最好把具體問題貼出來,包括其約束條件,以便我們幫助你。
『拾』 matlab優化工具箱中遺傳演算法的問題
ga就是在窮舉不可能完成時,用一種方式找到最優解
ga工具的完整形式如下表示
[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES] =
GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options)
X是最優自變數
FVAL是求得的最優值
其他以此是推出標志,結構體,終止時的總群,終止時種群函數值
後半部分以此是目標函數,目標函數自變數個數
A和b是線性約束不等式AX〈b
Aeq和beq是一對線性等式約束,AeqX=beq
lb是X值下限,ub是X值下限
NONLCON是非線性約束函數 options是運行方式。這兩個可以寫函數自己完成,也可默認
函數默認計算最小值,計算最大值要加負號
非線性約束條件的寫法
function [c,ceq]=nonlcon(x) 定義函數自變數是x,x可以是一列矩陣
c=[]; c表示非線性等式約束,以為沒有,所以為空
ceq=[x(1)-2*(x(2))^2;
x(1)+X(2) ] ceq是非線性不等式約束,默認ceq<=0,ceq可以為一列矩陣.
>>