数学建模多目标规划函数fgoalattain
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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