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的絕對值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM