如何解决使用纸浆,根据一些约束选择一个项目
|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 为真,0 为假。 我必须从给定的 df 中选择所有项目,满足以下条件: 1.total project selected count
2.在选定的项目中,项目数应如下: 1.banglore 选址项目
我必须选择同时满足这两个条件的项目。 我无法为此写出方程。请帮助我解决这个问题。
解决方法
我认为你很接近。你没有显示你从上面得到的答案,但我的猜测是你得到了一堆野生整数值,包括负数,因为你的决策变量没有界限,所以它可能在区域 __ 中选择 -568 个项目.
第一期: 当变量表示是/否类型的决定时,您应该将其设为二元变量。改变这个:
proj_vars = pulp.LpVariable.dicts("project",project_list,cat='Integer')
到:
proj_vars = pulp.LpVariable.dicts("project",cat='Binary')
第二期: 现在,您缺少一个目标函数……您所拥有的只是一堆“上限约束”,并且模型(至少是您发布的那部分)没有增加(或分配)项目的动力。你把它作为一个最小化模型......你在最小化什么?
根据您的描述,您似乎想要做最大 数量的项目,但受您的限制。所以要做到这一点,你必须:添加一个简单的目标,它只是项目的总和,然后将问题转化为最大化问题。有道理吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。