|
发表于 2004-8-7 07:59:39
|
显示全部楼层
<>一个多目标优化的例子:
min f1(x) = 2x1 + 5x2
min f2(x) = 4x1 + x2
1x ≤ 5
x2≤ 6
x1 + x2≥ 7
x1 , x2≥ 0</P><>需要编写目标函数的 M 文件 opt26_2o.m,返回目标计算值: </P><>function f=myfun(x) </P><P>f(1)=2*x(1)+5*x(2); </P><P>f(2)=4*x(1)+x(2); </P><P>给定目标,权重按目标比例确定,给出初值: </P><P>goal=[20 12]; </P><P>weight=[20 12]; </P><P>x0=[2 5]; </P><P>给出约束条件的系数: </P><P>A=[1 0;0 1;-1 -1]; </P><P>b=[5 6 -7]; </P><P>lb=zeros(2,1); </P><P>[x,fval,attainfactor,exitflag] = fgoalattain(@opt26_2o,x0,goal,weight,A,b,[],[],lb,[])
磁盘中上面程序段的 M 文件为 opt26_2.m。
计算结果为: </P><P>x =</P><P> 2.9167 4.0833</P><P>
fval =</P><P> 26.2500 15.7500</P><P>
attainfactor =</P><P> 0.3125</P><P>
exitflag =</P><P> 1</P><P>注:来自《Matlab 6.1实用指南》
</P> |
|