matlab实现多目标规划


代码实现:
(1)编写M函数Fun.m:

function F=Fun(x);
F=[-100*x(1)-90*x(2)-80*x(3)-70*x(4)  %转成最小值
    3*x(2)+2*x(4)];

(2)编写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];
%因为fgoalattain中的参数goal是希望达到的最优目标值,所以下面先将单独x1,x2的最优解求出来
[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的绝对值
posted @ 2021-10-06 20:01  py佐料  阅读(1197)  评论(0编辑  收藏  举报