Python は、scipy.linprog を使用した例を含む線形計画法の問題を解決します

scipy.optimize から linprog をインポート

linprog 関数の scipy 公式ドキュメント

scipy.optimize.linprog(c, A_ub=なし, b_ub=なし, A_eq=なし, b_eq=なし, 境界=なし, メソッド= 'highs', コールバック= なし, オプション= なし, x0= なし, 統合性=なし)

線形計画法は、次の形式の問題を解決します。

パラメーター:

c:1 次元配列

A_ub:2 次元配列、オプション

b_ub:1 次元配列、オプション

A_eq: 2 次元配列、オプション

b_eq: 1 次元配列、オプション

境界シーケンス、オプション

x: 1 次元配列

以下では例を使用して、この関数を使用して線形計画問題を解決してみます。

画像-20230831142625576

画像-20230831142633450

c=[-70, -50, -60] 
A_ub = [[2, 4, 3], [3, 1, 5], [7, 3, 5]] 
b_ub = [150, 160, 200]
result=linprog(c,A_ub=A_ub,b_ub=b_ub,bounds=[(0,None),(0,None),(0,None)],method='highs') 
result

        メッセージ: 最適化は正常に終了しました。(HiGHS ステータス 7: 最適)
        成功: True
         ステータス: 0 
            fun: -2590.909090909091 
              x: [ 2.121e+00 1.576e+01 2.758e+01] 
            nit: 3 
          lower: 残留: [ 2.121e+00 1.576e+01 2.758 e+01]
                 マージナル: [ 0.000e+00 0.000e+00 0.000e+00]
          アッパー: 残差: [ inf inf inf]
                 マージナル: [ 0.000e+00 0.000e+00 0.000e+00] 
          eqlin: 残差: [ ]
                 周縁: [] 
        ineqlin: 残差: [ 0.000e+00 0.000e+00 0.000e+00]
                 周縁: [-6.364e+00 -0.000e+00 -8.182e+00] 
 mip_node_count: 0 
 mip_dual_bound: 0.0
        ミップギャップ: 0.0

得られる目標解は答えと一致しますが、x の最適解の値は異なり、実現可能な解が複数存在する可能性があります。

おすすめ

転載: blog.csdn.net/weixin_61720360/article/details/132602539