主要内容

このページ最新ではありませ。をクリックし,英语のの最新版版を参照参照し。

パレートフロントのとプロット

この例で,Fgoalattain2次元しし次元关数のパレートをし,プロットする方法を说明说明ますます。

このこののつのつの关数は,凸关数凸关数 1 + X 2 をシフトてたバージョンです。关数のコードは,この例の最后に记载さたSimple_mult补助关数に表示さ。。

両方の关数が,领域 X 0 で减少し领域 X 1 で増加ます。。。とのの间で,,, F 1 (( X が増加し, F 2 (( X が减少ためトレードオフが存在します。 X から - 1 / 2 までの范囲の 3 / 2 2つのつのをプロットします。。

t = linspace(-1/2,3/2);f = simple_mult(t);情节(t,f,'行宽',2)保持图([0,0],[0,8],,'G - ');图([1,1],[0,8],,'G - ');图([0,1],[1,6],,'k。',,,,“标记”,15);文本(-0.25,1.5,'最低(f_1(x))')文字(.75,5.5,'最低(f_2(x))') 抓住离开传奇('f_1(x)',,,,'f_2(x)')xlabel({'X';“绿线之间的权衡区域”})

图包含一个轴。轴包含7个类型行的对象,文本。这些对象表示F_1(X),F_2(X)。

2つの,まず,,,つの关数のなしの最小値を求め求めます。このこの例ではは, F 1 (( X の最小値ががでで F 2 (( X 6である小値であることわかります通常最适化ルーチンを使用して最最小値を求める必要がが

その场合目的の特定の成分返す关数をするのがが一般一般的(この例の最后にあるPickIndex补助关数が k 番目のを返しますます。。,化を使って各成分の最小値小値をますます。。fminbndを使用ます,よりの问题ではfminuncを使用し。

k = 1;[min1,minfn1] = fminbnd(@(x)pickIndex(x,k),-1,2);k = 2;[min2,minfn2] = fminbnd(@(x)pickIndex(x,k),-1,2);

目的关数なし最适解をを设定します关数がが互い互いにに干渉干渉しない,,つまり,,トレードオフが存在しししし

目标= [minfn1,minfn2];

パレートフロント计算するに,, 一种 が0から1ののベクトルベクトル [[ 一种 ,,,, 1 - 一种 这是给予的 をし。重みをな値设定し,ゴール到达问题をを。。。

nf = 2;目标功能的数量百分比n = 50;绘图的点数%onen = 1/n;x =零(n+1,1);f =零(n+1,nf);fun = @simple_mult;x0 = 0.5;选项= optimoptions(“ fgoalattain”,,,,'展示',,,,'离开');为了r = 0:n t = onen*r;%0至1重量= [T,1-T];[x(r+1,:),f(r+1,:)] = fgoalattain(有趣,x0,目标,重量,...[],[],[],[],[],[],[],选项);结尾图图(f(:,1),f(:,2),'ko');Xlabel('f_1')ylabel('f_2'

图包含一个轴。轴包含类型线的对象。

2つの关数トレードオフを确认。。。

补助关数

次のコード关数Simple_multiを作成し。

功能f = simple_mult(x)f(:,1)= sqrt(1+x。^2);f(:,2)= 4 + 2*sqrt(1+(x-1)。^2);结尾

次のコード关数PickIndexを作成し。

功能z = pickIndex(x,k)z = simple_mult(x);%评估两个目标z = z(k);返回目标k结尾

参考

关连するトピック