matlab線性規划


線性規划問題

  在一組線性約束條件下的限制下,求一線性目標函數最大或最小的問題。在這里插入圖片描述

線性規划標准型

  • 數學標准型在這里插入圖片描述

    可行解:滿足約束條件的解矩陣x=[x1,x2,x3,..,xn]。

    最優解:是目標函數達到最大值或者最小值的可行解。

    可行域:所有可行解構成的集合稱為問題的可行解,記為R。

  • matlab標准型在這里插入圖片描述

    • f,x,b,beq,lb,ub為列向量
    • f稱為價值向量
    • b稱為資源向量
    • A,Aeq為矩陣

Matlab線性規划函數——linprog

>> help linprog
linprog - Solve linear programming problems

    This MATLAB function solves min f'*x such that A*x ≤ b.

    x = linprog(f,A,b)
    x = linprog(f,A,b,Aeq,beq)
    x = linprog(f,A,b,Aeq,beq,lb,ub)
    x = linprog(f,A,b,Aeq,beq,lb,ub,options)
    x = linprog(problem)
    [x,fval] = linprog(___)
    [x,fval,exitflag,output] = linprog(___)
    [x,fval,exitflag,output,lambda] = linprog(___)

    另請參閱 intlinprog, mpsread, optimoptions, quadprog

    linprog 的參考頁
  • x:返回決策向量的取值
  • fval返回目標函數的最優解
  • f為價值向量
  • A和b對應線性不等式約束
  • Aeq和beq對應線性等式約束
  • lb和ub分別對應決策向量的下界向量和上界向量
  • options是控制參數

例題講解

在這里插入圖片描述

  1. 題目分析

      這里求解的最優解是最大值,而matlab里面的標准函數是求最小值為最優解,因此需要對題目進行變形。另外,對最優解的約束同樣需要進行整理稱為matlab的使用形式。整理結果如下:

    在這里插入圖片描述

  2. Matlab****程序實現

    f=[-2;-3;5];
    a=[-2,5,-1;1,3,1];
    b=[-10;12];
    aeq=[1,1,1];
    beq=7;
    [x,y]=linprog(f,a,b,aeq,beq,zeros(3,1));
    x,y=-y				%由於之前將求max最優解變形稱為了min,這里的y要求相反的值
    

    輸出結果

    x=3x1
    	6.4286
    	0.5714
    		 0
    y=14.5714
    

在這里插入圖片描述

  1. 題目分析

    這個題目里面求的最優解為最小值,因此不需要進行轉換,只需要對約束條件進行轉換即可。在約束條件中,只有線性不等式約束以及決策向量下界向量,沒有線性等式約束。轉換結果如下:在這里插入圖片描述

  2. 程序實現

    f=[2;3;1];    %價值向量是列向量
    a=[1,4,2;3,2,0];
    b=[8;6];
    aeq=[];
    beq=[];
    [x,y]=linprog(f,-a,-b,aeq,beq,zeros(3,1))	%一定要注意這里的符號
    
  3. 特別說明:一定要記住matlab的線性規划標准函數的形式,標准形式里面只有小於等於號,如果程序出現大於號一定要進行變換!!!


免責聲明!

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



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