天天看點

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
               
matlab線性規劃
  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的線性規劃标準函數的形式,标準形式裡面隻有小于等于号,如果程式出現大于号一定要進行變換!!!