|project|loc_Bangalore|loc_Pune|cat_s|cat_c|
|:------|:-----------:|:------:|:---:|:---:|
|abc |1 |0 |0 |1 |
|Sys |1 |0 |0 |1 |
|Syst |0 |1 |1 |0 |
|EPS |1 |0 |0 |1 |
|foss |1 |0 |0 |1 |
|opc |0 |1 |1 |0 |给定的
以上df 1中的
为true,0为false。我必须从给定的df中选择所有的项目,满足以下条件:1.总体项目选择count<=4(班加罗尔定位project+pune location project+cat_s project+cat_c <=4)
2.在选择项目项目时,应包括以下几个方面:1. project<=3 2.港口选址项目<=1 3.cat_s project<=1 4.cat_c project<=3
我必须选择同时满足这两种条件的项目。我不能为this.Pls写方程,帮我解决这个问题。
发布于 2021-06-10 16:04:34
我觉得你们关系很好。你没有给出你从上面得到的答案,但我猜你得到了一堆野生整数值,包括负整数值,因为你的决策变量没有边界,所以它可以在__区域选择-568个项目。
第一个问题:当变量表示是/否类型的决策时,您应该将它变成二进制变量。改变这一点:
proj_vars = pulp.LpVariable.dicts("project",project_list,cat='Integer')至:
proj_vars = pulp.LpVariable.dicts("project",project_list,cat='Binary')第二个问题:现在,你失去了一个目标函数.你所拥有的只是一堆“上层约束”,模型(至少是你发布的那篇文章)没有增加(或分配)项目的动机。你把它当作最小化模型..。你在减少什么?
从您所描述的情况来看,您似乎希望在受约束的情况下执行最大数量的项目。要做到这一点,您必须:添加一个简单的目标,即项目之和,并将问题转换为最大化问题。讲得通?
https://stackoverflow.com/questions/67916836
复制相似问题