2017-07-06 14 views
0

現在、Pythonのパルプモジュールを使用した最適化の問題に取り組んでいます。変数を7500の整数倍に設定したいのですが、私は以下のようにconstriantを作成しましたが、エラーを表示しています。パルプを使用した最適化の制約を与える

import pandas as pd 
import numpy as np 
from pulp import * 

prob = LpProblem('Cost minimization' , LpMinimize) 
X = LpVariable.dicts('',tsap.varName, lowBound=0, upBound=None,  cat=LpInteger) 
prob += lpSum(X[i] * j for i,j in zip(tsap.varName, tsap.coeff)),'Total cost' 

l=7500 

for i in X: 
prob += i % l == 0 

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-9-73548ad8b39f> in <module>() 
     1 for i in X: 
    ----> 2  prob += i % l == 0 
     3 

TypeError: not all arguments converted during string formatting 

希望の目標を達成する方法はありますか?

+0

あなたは線形計画ではできないモジュロ演算子を使用しようとしています。しかし、おそらく、整数でなければならないダミーのLpVariable、kを設定し、次にi == 7500 * kという制約を追加することができます。 – thomaskeefe

答えて

1

パルプのモジュロ演算子は、非線形の問題になるため使用できません。

はしかし、簡単な解決策はX[i]整数を維持することであり、次にあなた制約で7500*X[i]を使用し、それに応じてソリューションを報告しています。

関連する問題