经过数年和多年的Matlab,我仍然是Python的新手.我正在尝试使用Pulp来设置整数线性程序.
鉴于一系列数字:
{P[i]:i=1...N}
Run Code Online (Sandbox Code Playgroud)
我想最大化:
sum( x_i P_i )
Run Code Online (Sandbox Code Playgroud)
受限制
A x <= b
A_eq x = b_eq
Run Code Online (Sandbox Code Playgroud)
和边界(基于矢量的边界)
LB <= x <= UB
Run Code Online (Sandbox Code Playgroud)
然而,在纸浆中,我没有看到如何正确地进行矢量声明.我用的是:
RANGE = range(numpy.size(P))
x = pulp.LpVariable.dicts("x", LB_ind, UB_ind, "Integer")
Run Code Online (Sandbox Code Playgroud)
我只能输入个别边界(所以只有1个数字).
prob = pulp.LpProblem("Test", pulp.LpMaximize)
prob += pulp.lpSum([Prices[i]*Dispatch[i] for i in RANGE])
Run Code Online (Sandbox Code Playgroud)
对于约束,我真的必须每行做这行吗?似乎我错过了一些东西.我将不胜感激.文档讨论了一个简短的例子.在我的情况下,变量的数量是几千.