如何使用自定义函数解决线性规划优化问题

问题描述 投票:0回答:1

我需要使用

linprog
进行优化(
minimize
占用太多 RAM),但我需要添加一个相对复杂的约束,无法用矩阵表示。有没有办法将
minimize
与类似
linprog
的解算器一起使用,而不使用大量内存?或者有没有办法在 linprog 中实现自定义函数?

这是我想做的一个例子:

# inequality constraint
cons = lambda x: sum(x) - 1000
bounds = [(0, 1) for _ in enumerate(solution_length)
coefficients = # coefficients here

results = scipy.optimize.minimize(coefficients, cons=({"ineq": cons},), bounds = bounds)

或者使用 scipy minimize 和大小为 10,000,000+ 的矩阵来解决线性问题,而不用非线性方法求解。

我应该从哪里开始?

python scipy scipy-optimize
1个回答
1
投票

正如函数的作者 @MattHaberland 提到的,无法在

linprog
milp
中实现自定义可调用。我最终能够重新实现
linprog
的多次迭代来解决我的问题(感谢 @NickODell),但如果函数 absolute 需要自定义可调用,那么
minimize
是您最好的选择。

有关解决复杂线性规划问题的更多信息,这里有一篇关于最基本问题之一的维基百科文章,即旅行推销员:https://en.wikipedia.org/wiki/Travelling_salesman_problem

© www.soinside.com 2019 - 2024. All rights reserved.