数学建模多目标规划函数fgoalattain

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB 中文论坛讲义

多目标规划优化问题

Matlab 中常用于求解多目标达到问题的函数为fgoalattain.假设多目标函数问题的数学模型为:

ub

x lb beq

x Aeq b

x A x ceq x c goal

weight x F t s y

x ≤≤=≤=≤≤-**0

)(0

)(*)(..min ,γγ weight 为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度; goal 为用户设计的与目标函数相应的目标函数值向量;

γ为一个松弛因子标量;

F(x)为多目标规划中的目标函数向量。

综上,fgoalattain 的优化过程就是使得F 逼近goal;

工程应用中fgoalattain 函数调用格式如下:

[x,fval]=fgoalattain (fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)

x0表示初值;

fun 表示要优化的目标函数;

goal 表示函数fun 要逼近的目标值,是一个向量,它的维数大小等于目标函数fun 返回向量F 的维数大小;

weight 表示给定的权值向量,用于控制目标逼近过程的步长;

例1. 程序(利用fgoalattain 函数求解)

23222

12

3222132min )3()2()1(min x x x x x x ++-+-+-

0,,6

..321321≥=++x x x x x x t s

①建立M 文件.

function f=myfun(x)

f(1)= x(1)-1)^2+(x(2)-2)^2+(x(3)-3)^2;

f(2)= x(1)^2+2*x(2)^2+3*x(3)^2;

②在命令窗口中输入.

goal=[1,1];

weight=[1,1];

Aeq=[1,1,1];

beq=[6];

x0=[1;1;1];

lb=[0,0,0]; %也可以写lb=zero(3,1);

[x,fval]=fgoalattain(‘myfun’,x0,goal,weight,[ ],[ ],Aeq,beq,lb,[ ])

③得到结果.

x =

3.2727

1.6364

1.0909

fval =

8.9422 19.6364

例2.某钢铁公司因生产需要欲采购一批钢材,市面上的钢材有两种规格,第1种规格的单价为3500元/t ,第2种规格的单价为4000元/t.要求购买钢材的总费用不超过1000万元,够得钢材总量不少于2000t.问如何确定最好的采购方案,使购买钢材的总费用最小且购买的总量最多.

解:设采购第1、2种规格的钢材数量分别为1x 和2x .根据题意建立如下多目标优化问题的数学模型.

0,2000

100000

40003500max 40003500)(min

212121211≥≥+≤++=x x x x x x x x x f ①建立M 文件. 在Matlab 编辑窗口中输入:

function f=myfun(x)

f(1)= 3500*x(1)+4000*x(2);

f(2)=-x(1)-x(2);

②在命令窗口中输入.

goal=[10000000,-2000];

weight=[10000000,-2000];

x0=[1000,1000];

A=[3500,4000;-1,-1];

b=[10000000;-2000];

lb=[0,0]; %也可以写lb=zero(3,1);

[x,fval]=fgoalattain(‘myfun ’,x0,goal,weight,A,b,[ ],[ ],lb,[ ])

③得到结果.

x =

1000 1000

fval =

7500000 -2000

相关文档
最新文档