您的位置:首页 > 大数据 > 人工智能

MATLAB fgoalattain()函数 解…

2017-03-14 10:49 621 查看
多目标规划可以归结为




其中x,weight,goal,b,lb和ub是向量,A和Aeq是矩阵C(x),ceq(x)和f(x)是向量函数,他们可以是非线性函数。
F(x)是所考虑的目标函数,goal 是欲达到的目标,多目标规划的Matlab 函数fgoalattain
 的用法为 
     
     [x,fval]=
fgoalattain('fun',x0,goal,weight) 
     
     [x,fval]=
fgoalattain('fun',x0,goal,weight,A,b) 
     
     [x,fval]=
fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq) 
     
     [x,fval]=
fgoalattain('fun',x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) 
其中fun 是用 M 文件定义的目标向量函数,x0 是初值,weight  是权重。A,b
定义不等式约束A*x ≤ b ,Aeq,beq定义等式约束 Aeq*x=Beq ,nonlcon是用 M 文件定义的非线性约束c(x)
≤0,ceq(x)=0 。返回值 fval是目标向量函数的值。 
要完整掌握其用法,请用 help  fgoalattain 或 type
 fgoalattain 查询相关的帮助。 

例5  求解多目标线性规划问题 




 

解   (i )编写 M  函数
Fun.m: 

function F=Fun(x); 

F(1)=-100*x(1)-90*x(2)-80*x(2)-70*x(4); 

F(2)=3*x(2)+2*x(4); 

(ii )编写 M  文件  

a=[-1 -1  0
 0 

   0  0
 -1 -1 

   3  0
  2  0 

   0  3
  0  2]; 

b=[-30 -30 120 48]'; 

c1=[-100 -90 -80 -70]; 

c2=[0 3 0 2]; 

[x1,g1]=linprog(c1,a,b,[],[],zeros(4,1))
 %求第一个目标函数的目标值 

[x2,g2]=linprog(c2,a,b,[],[],zeros(4,1))
 %求第二个目标函数的目标值 

g3=[g1;g2]  %目标goal的值 

[x,fval]=fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4,1)) 

%这里权重weight=目标goal的绝对值 

就可求得问题的解.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: