2016-03-25 12 views
1

は、Gurobiと最適化にはとても新しいものです。私はこれを簡単なライナーモデルで解決したいと思いますが、私は私が検出できない間違いをしたようです。 したがって、実装するために特定の量の労力を消費する3つの機能の中で、特定の容量が与えられた場合に最も高い値を持つものを選択したいと考えています。 特徴、値、= 3GurobiのPythonでの線形プログラミング

努力 f1,3,2 f2,5,1 f3,1,2 容量

ここでは私のコードです:

from gurobipy import * 
m = Model("C1")  
featuresname, value, effort = multidict({ 
    "F1":[3,2], 
    "F2":[5,1], 
    "F3":[1,2] 
}) 
featureset = {} 
for f in featuresname: 
    featureset[f] = m.addVar(obj=value[f], name=f) 
m.modelSense = GRB.MAXIMIZE 
m.update() 
capacity = 3 
m.addConstr(quicksum(effort[f] * featureset[f] for f in featuresname) <=capacity,f) 
result = m.optimize() 
print(result) 
if m.status == GRB.Status.OPTIMAL: 
    print('Optimal objective: %g' % m.objVal) 
elif m.status != GRB.Status.INFEASIBLE: 
    print('Optimization was stopped with status %d' % m.status) 

私はすべてのこれらの例を読みhttp://www.gurobi.com/resources/examples/example-models-overview問題を見つけることができません....あなたは私にいくつかのヒントを教えてくださいできますか?

+0

コードは大丈夫です。それが正しくないとあなたは何を期待していますか? – vcp

答えて

0

Gurobiの出力やエラーが表示されているだけでなく、コードを見るだけであれば、制約を追加した後でモデルを更新するのを忘れてしまったようです。

だから私は "m.update()" の直前に "結果= m.optimizeを()" を追加することをコード以外の

は、[OK]を探します。

関連する問題