我需要使用
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+ 的矩阵来解决线性问题,而不用非线性方法求解。
我应该从哪里开始?
正如函数的作者 @MattHaberland 提到的,无法在
linprog
或 milp
中实现自定义可调用。我最终能够重新实现 linprog
的多次迭代来解决我的问题(感谢 @NickODell),但如果函数 absolute 需要自定义可调用,那么 minimize
是您最好的选择。
有关解决复杂线性规划问题的更多信息,这里有一篇关于最基本问题之一的维基百科文章,即旅行推销员:https://en.wikipedia.org/wiki/Travelling_salesman_problem