我正在研究减少纸浆的问题。
部分问题如下:
position =[1,2,3]
df=pd.DataFrame({'type':['a','b','b','a','b'],'name':['x1','x2','x3','x4','x5'],'number':[10,1,4,5,8]})
choices = LpVariable.dicts("Choice",(position,df['name']),0,1,LpInteger)
X=11
for r in position:
prob += lpSum(choices[r][k]* j for j,k in zip(df['number'],df['name']) ) <= X, ""
在示例代码中,X的固定值为11。但是,我想使X取决于已做出的选择。对于总和中包含的每种类型,应将约束最小化为1。例如,如果choices [1] [x3],choices [2] [x4],choices [3] [x2]等于1 ,则意味着概率总和等于10(1 * 4 + 1 * 5 + 1 * 1)。在原始约束下(具有固定的X),这会很好。但是,由于我在总和中包括了两种不同的类型(x2和x3是b型,x4是a型),所以总和不应大于9(11-1-1)而不是11。
目前,我不知道如何解决此问题。有没有人可以帮助我?预先感谢您的宝贵时间。