1

我正在尝试用 python 解决订单最小化问题。因此,我将 M 个订单分配给 N 个工人。每个工人都有一个基本能量水平 X_i,它收集在向量 X 中。此外,每个订单都有一个特定的能量消耗 E_j,它收集在 E 中。话虽如此,我正在尝试解决以下问题

在此处输入图像描述

其中 Y 是某个最佳能级,范数为 2 范数。在约束条件下,任何一列加起来正好是一,因为订单应该完成并且只能由一名工人完成。我查看了 scipy.optimize 但据我所知,它似乎不支持这种优化。

有人知道 Python 中有什么工具可以解决这种离散优化问题吗?

4

1 回答 1

2

答案取决于规范。如果你想要 2 范数,这是一个 MIQP(混合整数二次规划)问题。它是凸的,所以周围有很多求解器(例如 Cplex、Gurobi、Xpress——这些都是商业求解器)。它也可以由 MINLP 求解器处理,例如 BonMin(开源)。一些可以提供帮助的建模工具是 Pyomo 和 CVXPY。

如果您想要 1 范数,则可以将其表述为线性 MIP(混合整数规划)模型。有很多 MIP 求解器,例如 Cplex、Gurobi、Xpress(商业)和 CBC、GLPK(开源)。一些建模工具是 Pyomo、CVXPY 和 PuLP。

于 2020-04-21T09:16:25.577 回答