-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
多目標(biāo)優(yōu)化模型(多目標(biāo)優(yōu)化模型求解)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于多目標(biāo)優(yōu)化模型的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、matlab 多目標(biāo)優(yōu)化的實(shí)際例子
遺傳算法GA求解無約束最優(yōu)化問題,采用遺傳算法求函數(shù)的最小值:
f(x,y)=x^4-16x^2-5xy+y^4-16y^2-5y
函數(shù)如下:
f=inline('x(1)^4-16*x(1)^2-5*x(1)*x(2)+x(2)^4-16*x(2)^2-5*x(2)','x');
l=[-5 -5];
u=[5 5];
x0=[0 0];
Np=30;
Nb=[12 12];
Pc=0.5;
Pm=0.01;
eta=0.8;
kmax=200;
[xos,fos]=fminsearch(f,x0)
[xo_gen,fo_gen]=genetic(f,x0,l,u,Np,Nb,Pc,Pm,eta,kmax)
其中調(diào)用的遺傳算法函數(shù)為如下幾個(gè)
genetic函數(shù)
function [xo,fo]=genetic(f,x0,l,u,Np,Nb,Pc,Pm,eta,kmax)
N=length(x0);
if nargin<10,kmax=100;end
if nargin<9|eta>1|eta<=0,eta=1;end
if nargin<8,Pm=0.01;end
if nargin<7,Pc=0.5;end
if nargin<6,Nb=8*ones(1,N);end
if nargin<5,Np=10;end
NNb=sum(Nb);
xo=x0(:)';l=l(:)';u=u(:)';
fo=feval(f,xo);
X(1,:)=xo;
for n=2:Np,X(n,:)=1+rand(size(x0)).*(u-1);
P=gen_encode(X,Nb,l,u);
for k=1:kmax
X=gen_decode(P,Nb,l,u);
for n=1:Np,fX(n)=feval(f,X(n,:));end
[fxb,nb]=min(fX);
if fxb<fo,fo=fxb;xo=X(nb,:);end
fX1=max(fxb)-fX;
fXm=fX1(nb);
if fXm<eps,return;end
for n=1:Np
X(n,:)=X(n,:)+eta*(fXm-fX1(n))/fXm*(X(nb,:)-X(n,:));
end
P=gen_encode(X,Nb,l,u);
is=shuffle([1:Np]);
for n=1:2:Np-1
if rand<Pc
P(is(n:n+1),:)=crossover(P(is(n:n+1),:),Nb);
end
end
P=mutation(P,Nb,Pm);
end
gen_encode函數(shù)
function P=gen_encode(X,Nb,l,u)
Np=size(X,l);
N=length(Nb);
for n=1:Np
b2=0;
for m=1:N
b1=b2+1;
b2=b2+Nb(m);
Xnm=(2^Nb(m)-1)*(X(n,m)-l(m))/(u(m)-l(m));
P(n,b1:b2)=dec2bin(Xnm,Nb(m));
end
end
gen_decode函數(shù)
function X=gen_decode(P,Nb,l,u)
Np=size(P,l);
N=length(Nb);
for n=1:Np
b2=0;
for m=1:N
b1=b2+1;
b2=b1+Nb(m)-1;
X(n,m)=bin2dec(P(n,b1:b2))*(u(m)-l(m))/(2^Nb(m)-1)+l(m);
end
end
crossover函數(shù)
function chrms2=crossover(chrms2,Nb)
Nbb=length(Nb);
b2=0;
for m=1:Nbb
b1=b2+1;
bi=b1+mod(floor(rand*Nb(m)),Nb(m));
b2=b2+Nb(m);
tmp=chrms2(1,bi:b2);
chrms2(1,bi:b2)=chrms2(2,bi:b2);
chrms2(2,bi:b2)=tmp;
end
mutation函數(shù)
function P=mutation(P,Nb,Pm)
Nbb=length(Nb);
for n=1:size(P,1)
b2=0;
for m=1:Nbb
if rand <Pm
b1=b2+1;
bi=b1+mod(floor(rand*Nb(m)),Nb(m));
b2=b2+Nb(m);
P(n,bi)=~P(n,bi);
end
end
end
shuffle函數(shù)
function is=shuffle(is)
N=length(is);
for n=N:-1:2
in=ceil(rand*(n-1));
tmp=is(in);is(in)=is(n);is(n)=tmp;
end
運(yùn)行結(jié)果為
xos =
3.0453 3.1031
fos =
-186.4878
xo_gen=
2.9805 3.3150
fo_gen=
-184.2604
二、多目標(biāo)優(yōu)化中權(quán)重設(shè)置問題?
你這個(gè)問題太專業(yè)了。我試著回答一下。
權(quán)重指數(shù)你可以在計(jì)算的時(shí)候分開計(jì)算。比如溫濕度合計(jì)權(quán)重40%,在計(jì)算的時(shí)候你就分開計(jì)算,例如:15%+25%。然后你在最后合計(jì)的時(shí)候?qū)懗梢粋€(gè)數(shù)值就可以了。這樣也不影響精度,也達(dá)到了你的要求。
三、matlab多目標(biāo)優(yōu)化求解的例子
出錯(cuò)原因:下列的函數(shù)表達(dá)式定義錯(cuò)誤,
x=fmincon('((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)',x0,A,b,[],[],lb,[])
糾正方法,用句柄函數(shù)來定義函數(shù)表達(dá)式,即
@(x)((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2)
完整寫法如下,
x=fmincon(@(x)((-3*x(1)+2*x(2)+fval1)^2+(4*x(1)+3*x(2)+fval2)^2)^(1/2),x0,A,b,[],[],lb,[])
更改后運(yùn)行,可得到
x1 = 0.1756;x2= 5.8829
四、優(yōu)化模型中的決策變量為什么要相互獨(dú)立
相互獨(dú)立的兩個(gè)變量可以分開優(yōu)化,各自優(yōu)化的結(jié)果不會(huì)相互影響,相互關(guān)聯(lián)的變量因?yàn)樗麄冎g的相關(guān)性,整體優(yōu)化的結(jié)果與他們分開優(yōu)化的結(jié)果不同,所以不能相互關(guān)聯(lián)的變量不能分開進(jìn)行優(yōu)化,設(shè)有多目標(biāo)優(yōu)化問題
,如果存在決策向量 x ,實(shí)數(shù)
,至少一個(gè)目標(biāo)函數(shù)
,使得
那么變量
與
相關(guān)。
以上就是關(guān)于多目標(biāo)優(yōu)化模型相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
多目標(biāo)粒子群算法(多目標(biāo)粒子群算法實(shí)例)
多目標(biāo)優(yōu)化模型(多目標(biāo)優(yōu)化模型求解)
淘寶合作安裝平臺(tái)(淘寶合作安裝平臺(tái)有哪些)