想找一种方法,用IF ELSE函数来设置我的优化问题的约束条件。归纳起来就是:如果常数A小于变量B,那么变量D=0,否则D=A-B。下面是 一个明确的表述 .
I get the error
TypeError: '>' not supported between instances of 'int' and 'LpVariable'
有什么办法可以规避这个问题吗?
My python script is shown below:
import pulp
import random
# setting up constants
t_0=1000
for x in range(t_0):
A.append(random.randint(1,10))
# initializing LP
LP = pulp.LpProblem('LP',pulp.LpMinimize)
# adding variables
B = pulp.LpVariable("B", cat='Continuous', lowBound=0)
D = pulp.LpVariable.dicts("D", range(t_0), cat=pulp.LpContinuous, lowBound=0)
# adding constraints
for t in range(t_0):
if A[t] > B:
LP += D[t] == A[t] - B
else:
LP += D[t] == 0
LP += pulp.lpSum(D[t] for t in range(t_0))
status = LP.solve(pulp.CPLEX_PY(mip=True, msg=True, timeLimit=15,epgap=None))
print( 'LP status: ' + pulp.LpStatus[status] + '')