前提・実現したいこと
以下の数理最適化問題をscipy.linprogを使って解いた結果が手計算と一致しない理由と解決策を知りたい
ここに質問の内容を詳しく書いてください。
①
Minimize -3x-4y
Subject to x + 4y ≦ 1700
2x + 3y ≦ 1400
2x + y ≦ 1000
x ≧ 0
y ≧ 0
②
import numpy as np
from scipy import optimize
c = np.array([-3, -4], dtype=np.float64)
G = np.array([[1, 4], [2, 3], [2, 1]], dtype=np.float64)
h = np.array([1700, 1400, 1000], np.float64)
sol = optimize.linprog(c, A_ub=G, b_ub=h, bounds=(0, None))
print(sol.x)
print(sol.fun)
③
[399.99988463 199.99996114]
-1999.9994984688583
発生している問題・エラーメッセージ
①の数理最適化問題を解くために②のコードを実行したところ結果が③となりました。
手計算で行うとx=400,y=200のとき最小値-2000となるのですが
なぜ手計算とコードの演算結果がずれるのかがわかりません。
試したこと
「linprog 少数 ずれ」 など検索は試しました。
補足情報(FW/ツールのバージョンなど)
jupyter notebook使用、python3以降です。
よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/17 11:40