Linprog Python - 实现二进制数
Linprog Python - Implementing binary numbers
我有多个约束,它们可以直接进入 linprog,但我有两个约束,其中有一个二进制组件。以下为:
1 或 0 是 Nabc
Mabc - 11(1) <= 0 <-- M111 - 11(1)
要么
Mabc - 11(0) <= 0 <-- M111 - 11(0)
abc是下标
我如何在 linprog 模块中实现它,或者如何使其不需要二进制文件。
这是我可以在 python 中实现的一个,因为没有与之关联的二进制数:
Mabc <= 40
Scipy 的 linprog 只解决了 Linear-programming 个问题。
您的问题不是 LP,而是 Mixed-integer 问题 (MIP),因此无法解决(那里没有可用的 Branch-and-Bound 或 Branch-and-Cut 代码)。
我不明白你的例子,但很可能没有 Binary/Integer 个变量就无法解决。
您可以尝试 pulp,这是获得支持公式和求解的 MIP-ready 库的最简单方法(例如 CBC 和 GLPK;CBC 至少在 windows-install).
我有多个约束,它们可以直接进入 linprog,但我有两个约束,其中有一个二进制组件。以下为:
1 或 0 是 Nabc
Mabc - 11(1) <= 0 <-- M111 - 11(1) 要么 Mabc - 11(0) <= 0 <-- M111 - 11(0)
abc是下标
我如何在 linprog 模块中实现它,或者如何使其不需要二进制文件。
这是我可以在 python 中实现的一个,因为没有与之关联的二进制数:
Mabc <= 40
Scipy 的 linprog 只解决了 Linear-programming 个问题。
您的问题不是 LP,而是 Mixed-integer 问题 (MIP),因此无法解决(那里没有可用的 Branch-and-Bound 或 Branch-and-Cut 代码)。
我不明白你的例子,但很可能没有 Binary/Integer 个变量就无法解决。
您可以尝试 pulp,这是获得支持公式和求解的 MIP-ready 库的最简单方法(例如 CBC 和 GLPK;CBC 至少在 windows-install).