我目前正在使用Python中的Pulp模块处理优化问题。我想将我的变量设置为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 :(得分:1)
您不能在纸浆中使用模数运算符,因为这会成为一个非线性问题。
但是,简单的解决方案是保持X[i]
整数,然后在约束中使用7500*X[i]
并相应地报告解决方案。