我正在尝试通过lpDot()生成方程式,例如

PulpVar = [x1,x2]

Constants = [5,6]


然后将点积做为:

model += lpDot(PulpVar, Constants)


据我所知,这应该生成一个等式为x1*5+x2*6

但我得到lpAffineExpression作为输出,因此生成的lp文件为空

最佳答案

lpDot()–给出两个列表,形式为[a1,a2,…,an]和[x1,x2,…,
  [xn]将构造一个线性表达式以用作约束或
  变量ref


因此,如果您使用常量,则lpDot()将返回点积,即<class 'pulp.pulp.LpAffineExpression'>

import pulp

x1 = [1]
x2 = [2]

X = [x1,x2]
Constants = [5, 6]

model = pulp.lpDot(X, Constants)
print(model, type(model))


输出:

17 <class 'pulp.pulp.LpAffineExpression'>


如果对方程式x1*5+x2*6进行定量,则应使用LpVariable像这样:

import pulp


PulpVar1 = pulp.LpVariable('x1')
PulpVar2 = pulp.LpVariable('x2')
Constants = [13, 2]

model = pulp.lpDot([PulpVar1, PulpVar2], Constants)
print(model, type(model))



输出:

5*x1 + 6*x2 <class 'pulp.pulp.LpAffineExpression'>

关于python - PuLP :lpDot()有什么作用,如何使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57309541/

10-12 17:48