ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

一般的な線形計画問題

この例では、一般的な線形計画問題の解き方を示します。問題は、次のとおりです。

minxfTx such that {Axb,Aeqx=beq,x0.

以下のようにして行列およびベクトル AAeqbbeqf および下限 lb を MATLAB® ワークスペースに読み込むことができます。

load sc50b

sc50b.mat の問題には 48 の変数、30 の不等式、20 の等式があります。

この問題を解くには、linprog を使用します。

options = optimoptions(@linprog,'Algorithm','dual-simplex','Display','iter');
[x,fval,exitflag,output] = ...
    linprog(f,A,b,Aeq,beq,lb,[],options);

optimoptions を使用して、反復表示を設定しているので表示される結果は以下になります。

LP preprocessing removed 2 inequalities, 16 equalities,
16 variables, and 26 non-zero elements.

 Iter      Time            Fval  Primal Infeas    Dual Infeas  
    0     0.001    0.000000e+00   0.000000e+00   1.305023e+00  
    6     0.001   -1.587098e+02   4.008882e+02   0.000000e+00  
   33     0.002   -7.000000e+01   0.000000e+00   0.000000e+00  

Optimal solution found.

exitflag 値が正であることは、ユーザーの linprog が収束したことを意味します。また fval の最終関数値および output.iterations の反復数を得ることもできます。

exitflag,fval,output

exitflag =

     1


fval =

   -70


output = 

  struct with fields:

         iterations: 33
    constrviolation: 3.4106e-13
            message: 'Optimal solution found.'
          algorithm: 'dual-simplex'
      firstorderopt: 2.5180e-14