Python 2.7 纸浆优化中的约束条件

Python 2.7 纸浆优化中的约束条件,python-2.7,pulp,Python 2.7,Pulp,我目前正在使用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,

我目前正在使用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
将熊猫作为pd导入
将numpy作为np导入
从纸浆进口*
prob=LpProblem(“成本最小化”,LpMinimize)
X=LpVariable.dicts(“”,tsap.varName,下限=0,上限=None,cat=LpInteger)
prob+=lpSum(X[i]*j代表i,j在zip中(tsap.varName,tsap.coeff)),“总成本”
l=7500
对于X中的i:
prob+=i%l==0
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
1对于X中的i:
---->2 prob+=i%l==0
3.
TypeError:在字符串格式化过程中并非所有参数都已转换

有什么方法可以达到预期的目标吗?

在纸浆中不能使用模运算符,因为这将成为一个非线性问题


然而,简单的解决方案是保持
X[i]
整数,然后在约束中使用
7500*X[i]
并相应地报告解决方案。

您试图使用模运算符,这在线性规划中是无法做到的。但是,您可以设置一个伪lpk变量,它必须是一个整数,然后添加一个i==7500*k的约束。