如何在Python(纸浆包装、优化)中将约束中的两个变量相乘?
我有一个关于下面代码的问题。在这个问题中,我们试图找到x(i)的最大值。要找到一个最佳可行的解决方案,需要三个变量,我不会用细节来打扰你。定义目标函数后,我们继续定义约束。参数d_ajs包含a、j和s的所有组合的整数值。现在的问题是,将两个变量相乘会返回以下错误:非常量表达式不能相乘 有人能帮我吗?是什么原因导致此错误?如何解决 提前谢谢如何在Python(纸浆包装、优化)中将约束中的两个变量相乘?,python,variables,optimization,constraints,pulp,Python,Variables,Optimization,Constraints,Pulp,我有一个关于下面代码的问题。在这个问题中,我们试图找到x(i)的最大值。要找到一个最佳可行的解决方案,需要三个变量,我不会用细节来打扰你。定义目标函数后,我们继续定义约束。参数d_ajs包含a、j和s的所有组合的整数值。现在的问题是,将两个变量相乘会返回以下错误:非常量表达式不能相乘 有人能帮我吗?是什么原因导致此错误?如何解决 提前谢谢 from pulp import * prob = LpProblem("Model2", LpMaximize) # Variables x = pd.
from pulp import *
prob = LpProblem("Model2", LpMaximize)
# Variables
x = pd.Series(index=b_i.index)
for i in b_i.index:
x[i] = LpVariable("x"+str(i), cat = 'Binary')
y = pd.DataFrame(index=employees, columns=shifts)
for i in employees:
for j in shifts:
y.loc[i][j] = LpVariable("y"+str(i)+","+str(j), cat='Binary')
p = {}
for a in aeroplanes:
p[a] = pd.DataFrame(index=employees, columns=shifts)
for i in employees:
for j in shifts:
p[a].loc[i][j] = LpVariable("p"+str(a)+","+str(i)+","+str(j), cat='Binary')
# Objective
obj = ''
for i in employees:
obj += x[i]
prob += obj
# Constraints
s1 = time.time()
# Enough for the employees for the jobs
for a in aeroplanes:
for j in shifts:
for s in skills:
nr = ""
for i in employees:
nr += y.loc[i][j]*p[a].loc[i][j]
prob += nr >= d_ajs[a].loc[j][s]
Hi-Palm不支持非线性规划,通过将两个变量相乘,可以使问题非线性
我建议您考虑一下您的问题,看看是否有办法将其转化为线性问题,或者使用另一种支持非线性问题的工具。问题是,两个变量的乘积通常不是线性的,您正在进行线性规划。开始。你想解决什么精确的优化问题?目标函数是什么?制约因素是什么?