繁体   English   中英

带有唯一零件的PULP优化仅计入目标函数?

[英]PULP Optimization with unique parts only counting towards objective function?

我希望有人能帮助我朝正确的方向开始。 我有一个这样的熊猫数据框:

在此处输入图片说明

列是机器,行是组。 1表示机器具有该组,0表示没有。 实际数据帧更大,各组中有更多重叠。

我需要做的是指定所选计算机列的数量限制,同时最大化所选唯一组的数量。 因此,在示例中:我可以选择哪三台机器来覆盖最独特的组? 两次选择一个组没有任何惩罚,但这也无济于事。

我已经尝试使用python的PuLP软件包来做到这一点,但是我正在努力编写一个目标函数,该目标函数仅奖励唯一的组贡献(它基本上是试图最大化组的总数,而不是唯一的组)。

我真的被困在这里,不胜感激!

我认为首先写下一个数学模型总是有用的。 就像是:

在此处输入图片说明

现在可以轻松地在PuLP中转录该模型。 您可以放松y以使其在0到1之间连续(这可能对某些求解器有所帮助)。 K=3的结果应类似于:

----     34 VARIABLE x.L  machine on/off

A 1.000,    C 1.000,    D 1.000


----     34 VARIABLE y.L  groups covered

group1 1.000,    group2 1.000,    group3 1.000,    group4 1.000


----     34 VARIABLE z.L     =        4.000  number of groups covered

改变K来研究权衡(您可以绘制K z一些漂亮图)。

注意:这个问题有点像集合覆盖问题,而且解决起来非常快。 对于200组,100台机器,K = 20的数据帧,它在2.5秒内即可解决(MIP模型具有201个方程式和300个二进制变量):

----     27 VARIABLE x.L  machine on/off

m1   1.000,    m5   1.000,    m10  1.000,    m14  1.000,    m17  1.000,    m21  1.000,    m28  1.000,    m29  1.000
m36  1.000,    m41  1.000,    m50  1.000,    m52  1.000,    m79  1.000,    m81  1.000,    m82  1.000,    m83  1.000
m85  1.000,    m92  1.000,    m93  1.000,    m100 1.000


----     27 VARIABLE y.L  groups covered

group1   1.000,    group2   1.000,    group3   1.000,    group4   1.000,    group5   1.000,    group6   1.000
group7   1.000,    group8   1.000,    group10  1.000,    group11  1.000,    group12  1.000,    group13  1.000
group14  1.000,    group15  1.000,    group16  1.000,    group18  1.000,    group19  1.000,    group20  1.000
group21  1.000,    group22  1.000,    group23  1.000,    group25  1.000,    group26  1.000,    group28  1.000
group29  1.000,    group31  1.000,    group32  1.000,    group33  1.000,    group34  1.000,    group35  1.000
group37  1.000,    group38  1.000,    group39  1.000,    group40  1.000,    group41  1.000,    group42  1.000
group43  1.000,    group44  1.000,    group45  1.000,    group46  1.000,    group47  1.000,    group48  1.000
group49  1.000,    group50  1.000,    group51  1.000,    group52  1.000,    group53  1.000,    group54  1.000
group55  1.000,    group56  1.000,    group57  1.000,    group58  1.000,    group59  1.000,    group60  1.000
group62  1.000,    group63  1.000,    group64  1.000,    group65  1.000,    group67  1.000,    group68  1.000
group69  1.000,    group70  1.000,    group71  1.000,    group74  1.000,    group75  1.000,    group76  1.000
group77  1.000,    group78  1.000,    group79  1.000,    group80  1.000,    group81  1.000,    group82  1.000
group83  1.000,    group84  1.000,    group85  1.000,    group86  1.000,    group87  1.000,    group88  1.000
group89  1.000,    group90  1.000,    group91  1.000,    group92  1.000,    group94  1.000,    group95  1.000
group96  1.000,    group97  1.000,    group98  1.000,    group99  1.000,    group100 1.000,    group102 1.000
group103 1.000,    group104 1.000,    group105 1.000,    group106 1.000,    group107 1.000,    group108 1.000
group109 1.000,    group110 1.000,    group111 1.000,    group112 1.000,    group113 1.000,    group114 1.000
group115 1.000,    group116 1.000,    group117 1.000,    group118 1.000,    group119 1.000,    group120 1.000
group121 1.000,    group122 1.000,    group123 1.000,    group124 1.000,    group126 1.000,    group127 1.000
group128 1.000,    group129 1.000,    group130 1.000,    group131 1.000,    group132 1.000,    group133 1.000
group134 1.000,    group135 1.000,    group136 1.000,    group137 1.000,    group138 1.000,    group139 1.000
group140 1.000,    group141 1.000,    group142 1.000,    group143 1.000,    group144 1.000,    group146 1.000
group147 1.000,    group148 1.000,    group150 1.000,    group151 1.000,    group152 1.000,    group153 1.000
group155 1.000,    group156 1.000,    group157 1.000,    group158 1.000,    group159 1.000,    group160 1.000
group161 1.000,    group162 1.000,    group163 1.000,    group164 1.000,    group165 1.000,    group166 1.000
group167 1.000,    group168 1.000,    group169 1.000,    group170 1.000,    group171 1.000,    group173 1.000
group176 1.000,    group177 1.000,    group178 1.000,    group179 1.000,    group180 1.000,    group181 1.000
group182 1.000,    group183 1.000,    group186 1.000,    group187 1.000,    group188 1.000,    group189 1.000
group190 1.000,    group191 1.000,    group192 1.000,    group194 1.000,    group196 1.000,    group197 1.000
group198 1.000,    group199 1.000,    group200 1.000


----     27 VARIABLE z.L        =      177.000  number of groups covered

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM