Python中的优化问题
我需要解决一个问题。我有5个设备。它们都有4种I / O类型。并且存在目标输入/输出组合。在第一步,我想找到设备之间的所有组合,以便所选设备的总I / O数量都等于或大于目标值。让我解释:
# Devices=[numberof_AI,numberof_AO,numberof_BI,numberof_BO,price]
Device1=[8,8,4,4,200]
Device1=[16,0,16,0,250]
Device1=[8,0,4,4,300]
Device1=[16,8,4,4,300]
Device1=[8,8,2,2,150]
Target=[24,12,16,8]
也有约束。组合,最大。设备数量最多为5个。
在第二步,在找到的组合中,我将选择最便宜的一个。
实际上,我设法用Python中的for循环来解决这个问题。我的工作就像一个魅力。但即使我使用cython也需要太多时间。
对于这类问题,我还可以从中获益吗?
没有找到相关结果
已邀请:
3 个回复
先对冈蒲
运行它非常快,我得到n1 = 2和n2 = 1而其他都是0。
桑娠贯涤
的可能性(因为五个位置中的每一个都可能未被使用,你必须使用
)。然后针对每种可能性,检查它是否符合您的标准。我不明白为什么这需要花费这么多时间。 以下脚本在我的机器上花费不到一秒钟来计算这些东西。
需要Python 2.7。
宠封钞轰
这会产生以下输出:
因此,最佳解决方案是2 x Device1,1 x Device2,0 x Device3,0 x Device4,0 x Device5。 (请注意,变量使用从零开始的索引命名.Device1对应于0,Device2对应于1,依此类推。)