###質問内容
Pythonで最適化問題のナップザック問題を解こうとしています。
以下のサイトを参考にしているのですが、「ortoolpy」パッケージのknapsack関数での実装とpulpパッケージをインポートして計算する実装のコードの違いがよくわかりません。
なぜ2つの方法があり、どちらの方が優れているのでしょうか(実行速度が早い等)。
ソースコードは以下のサイトから引用しています。
組み合わせ最適化を使おう
###該当のソースコード
python
1from ortoolpy import knapsack 2size = [21, 11, 15, 9, 34, 25, 41, 52] 3weight = [22, 12, 16, 10, 35, 26, 42, 53] 4capacity = 100 5knapsack(size, weight, capacity) 6>>> 7(105, [0, 1, 3, 4, 5])
python
1from pulp import * 2size = [21, 11, 15, 9, 34, 25, 41, 52] 3weight = [22, 12, 16, 10, 35, 26, 42, 53] 4capacity = 100 5r = range(len(size)) 6m = LpProblem(sense=LpMaximize) # 数理モデル 7x = [LpVariable('x%d'%i, cat=LpBinary) for i in r] # 変数 8m += lpDot(weight, x) # 目的関数 9m += lpDot(size, x) <= capacity # 制約 10m.solve() 11print((value(m.objective), [i for i in r if value(x[i]) > 0.5])) 12>>> 13(105.0, [0, 1, 3, 4, 5])

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/23 10:08