【问题标题】:Solving minimization problem over discrete matrices with constraints求解带约束的离散矩阵的最小化问题
【发布时间】:2020-08-03 22:57:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: python numpy scipy mathematical-optimization discrete-optimization


    【解决方案1】:

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

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

    【讨论】:

    • 有没有办法在 Pyomo 或 CVXPY 中对离散矩阵的最小化问题进行建模?我一直在收集一些信息,但还没有找到如何最小化矩阵。
    • 是的。两者都允许表达 MIQP 和 MIP 模型。 CVXPY 允许直接矩阵表示法。在 Pyomo 中,只需使用索引变量。
    • 你知道如何在 CVXPY 中创建离散变量吗?文档没有说明任何内容,我还没有找到这个问题的答案。
    • x = cp.Variable(10, boolean=True) 和 Z = cp.Variable((5, 7), integer=True)(来自文档)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2023-03-12
    • 1970-01-01
    • 2014-12-29
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多