Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

一般的な線形計画問題

この例では、次のような典型的な線形計画問題を解きます。

minxfTxsuchthat{Axb,Aeqx=beq,x0.

sc50b.mat ファイルを読み込みます。このファイルはこの例を実行する際に使用でき、行列およびベクトル AAeqbbeqf、ならびに下限 lb が含まれます。

load sc50b

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

disp(size(A))
    30    48
disp(size(Aeq))
    20    48

dual-simplex アルゴリズムと反復表示を使用するようにオプションを設定します。

options = optimoptions(@linprog,'Algorithm','dual-simplex','Display','iter');

この問題に上限はないため、ub[] に設定します。

ub = [];

linprog を呼び出して問題を解きます。

[x,fval,exitflag,output] = ...
    linprog(f,A,b,Aeq,beq,lb,ub,options);
LP preprocessing removed 2 inequalities, 16 equalities,
16 variables, and 26 non-zero elements.

 Iter      Time            Fval  Primal Infeas    Dual Infeas  
    0     0.011    0.000000e+00   0.000000e+00   9.999644e-01  
   14     0.029   -1.435826e+02   6.556491e+02   0.000000e+00  
   33     0.031   -7.000000e+01   0.000000e+00   0.000000e+00  

Optimal solution found.

問題を解くために linprog によって使用される終了フラグ、解での目的関数値、および反復の回数を検証します。

exitflag,fval,output.iterations
exitflag = 1
fval = -70
ans = 33

反復表示で目的関数値および反復の回数を確認することもできます。