最新のリリースでは,このページがまだ翻訳されていません。gydF4y2Baこのページの最新版は英語でご覧になれます。gydF4y2Ba
この例では,混合整数線形問題を解く方法を説明します。この例は複雑ではありませんが,gydF4y2BaintlinproggydF4y2Ba
の構文を使用して問題を定式化する一般的な手順を示しています。gydF4y2Ba
この問題への問題ベースのアプローチについては,gydF4y2Ba混合整数線形計画法の基礎:問題ベースgydF4y2Baを参照してください。gydF4y2Ba
さまざまな化学組成の鋼鉄を融合して,特定の化学組成の25トンの鋼鉄を精製するものとします。精製された製品には,重量で炭素5%とモリブデン5%(つまり,炭素が25トン* 5% = 1.25トン,モリブデンが1.25トン)が含まれている必要があります。目的は鋼鉄の融合コストを最小化することです。gydF4y2Ba
维斯特伯格Carl-Henrikこの問題は,说比约克隆德およびEskil Hultman”gydF4y2Ba混合整数规划在瑞典某钢厂的应用gydF4y2Ba1977年2月“接口7卷,2号页39-43から引用されたものです。これらの要旨はgydF4y2Bahttps://doi.org/10.1287/inte.7.2.39gydF4y2Baで参照できます。gydF4y2Ba
このために4つの鋼鉄のインゴットを購入できます。各インゴットの1つしか利用できません。gydF4y2Ba
3つのグレードの合金および1つのグレードの鋼鉄くずを購入できます。合金と鋼鉄くずは分割して購入できます。gydF4y2Ba
問題を定式化するには,まず制御変数を決定します。変数gydF4y2Bax (1) = 1gydF4y2Ba
を取るとインゴットgydF4y2Ba1gydF4y2Baの購入を意味し,gydF4y2Bax (1) = 0gydF4y2Ba
を取るとインゴットを購入しないことを意味します。同様に,変数gydF4y2Bax (2)gydF4y2Ba
~gydF4y2Bax (4)gydF4y2Ba
は,インゴットgydF4y2Ba2gydF4y2Ba~gydF4y2Ba4gydF4y2Baを購入するかどうかを示す2値変数です。gydF4y2Ba
変数gydF4y2Bax (5)gydF4y2Ba
~gydF4y2Bax (7)gydF4y2Ba
は購入する合金gydF4y2Ba1gydF4y2Ba、gydF4y2Ba2gydF4y2Ba,およびgydF4y2Ba3.gydF4y2Baの量をトン単位で示し,gydF4y2Bax (8)gydF4y2Ba
は購入する鋼鉄くずの量を示します。gydF4y2Ba
intlinproggydF4y2Ba
の入力を指定することにより問題を定式化します。関連するgydF4y2BaintlinproggydF4y2Ba
構文は次のとおりです。gydF4y2Ba
[x, fval] = intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托)gydF4y2Ba
intlinproggydF4y2Ba
の入力を最初(gydF4y2BafgydF4y2Ba
)から最後(gydF4y2Ba乌兰巴托gydF4y2Ba
)まで作成します。gydF4y2Ba
fgydF4y2Ba
はコスト係数のベクトルです。インゴットのコストを表す係数はインゴットの重量 x トン当たりコストです。
f = (350 * 5330 * 3310 * 4280 * 6500450400100);gydF4y2Ba
整数値は最初の4つです。gydF4y2Ba
intcon = 1:4;gydF4y2Ba
ヒント:gydF4y2Ba2値変数を指定するには,gydF4y2BaintcongydF4y2Ba
の変数が整数となるように設定し,下限にgydF4y2Ba0gydF4y2Ba
上,限にgydF4y2Ba1gydF4y2Ba
を指定します。gydF4y2Ba
この問題には線形不等式制約はないので,gydF4y2Ba一个gydF4y2Ba
とgydF4y2BabgydF4y2Ba
は空の行列(gydF4y2Ba[]gydF4y2Ba
)になります。gydF4y2Ba
一个= [];b = [];gydF4y2Ba
この問題には3つの等式制約があります。最初の制約は総重量が25トンであることです。gydF4y2Ba
5 * x (1) + 3 * x (2) + 4 * x (3) + 6 * x (4) + (5) + x (6) + x (7) + (8) = 25gydF4y2Ba
2番目の制約は炭素の重量が25トンの5%(1.25トン)であることです。gydF4y2Ba
5 * 0.05 * (1) + 3 * 0.04 * x (2) + 4 * 0.05 * x (3) + 6 * 0.03 * (4)gydF4y2Ba
+ 0.08 * 0.07 x (5) + * x (6) + 0.06 * (7) x (8) = 1.25 + 0.03 *gydF4y2Ba
3番目の制約はモリブデンの重量が1.25トンであることです。gydF4y2Ba
5 * 0.03 * (1) + 3 * 0.03 * x (2) + 4 * 0.04 * x (3) + 6 * 0.04 * (4)gydF4y2Ba
+ 0.06 * 0.07 x (5) + * x (6) + 0.08 * (7) x (8) = 1.25 + 0.09 *gydF4y2Ba
この制約をAeq * x = beqという行列形式で指定します。gydF4y2Ba
Aeq =[5, 3、4、6,1,1,1,1;5 * 0.05, 3 * 0.04, 4 * 0.05, 6 * 0.03, 0.08, 0.07, 0.06, 0.03;5 * 0.03, 3 * 0.03, 4 * 0.04, 6 * 0.04, 0.06, 0.07, 0.08, 0.09);说真的= (25;1.25;1.25);gydF4y2Ba
各変数は0以下に制限されます。整数変数は1以上に制限されます。gydF4y2Ba
1磅= 0(8日);乌兰巴托= 1 (8,1);乌兰巴托(5:结束)=正;gydF4y2Ba%非整型变量没有上限gydF4y2Ba
すべての入力を指定したら,ソルバーを呼び出します。gydF4y2Ba
[x, fval] = intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托);gydF4y2Ba
LP:最佳目标值为8125.60万。切割生成:应用3个mir切割。下界是8495000000。相对差距为0.00%。找到最优解。Intlinprog在根节点停止,因为客观值在最优值options的间隙公差范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是在公差选项内的整数。IntegerTolerance = 1e-05(默认值)。gydF4y2Ba
解を表示します。gydF4y2Ba
x, fvalgydF4y2Ba
x =gydF4y2Ba8×1gydF4y2Ba1.0000 1.0000 0 1.0000 7.2500 0 0.2500 3.5000gydF4y2Ba
fval = 8.4950 e + 03gydF4y2Ba
8495美元最適購入コストはです。インゴットgydF4y2Ba1gydF4y2Ba、gydF4y2Ba2gydF4y2Ba、gydF4y2Ba4gydF4y2Baを購入し,gydF4y2Ba3.gydF4y2Baを購入しません。合金gydF4y2Ba1gydF4y2Ba7.25をトン,合金gydF4y2Ba3.gydF4y2Ba0.25をトン,鋼鉄くずを3.5トン購入します。gydF4y2Ba
intcon = []gydF4y2Ba
を設定し,整数制約なしで問題を解く効果を確認します。インゴットの断片を購入できないため、解は異なるものになり、現実的ではありません。