Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python(纸浆包装、优化)中将约束中的两个变量相乘?_Python_Variables_Optimization_Constraints_Pulp - Fatal编程技术网

如何在Python(纸浆包装、优化)中将约束中的两个变量相乘?

如何在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.

我有一个关于下面代码的问题。在这个问题中,我们试图找到x(i)的最大值。要找到一个最佳可行的解决方案,需要三个变量,我不会用细节来打扰你。定义目标函数后,我们继续定义约束。参数d_ajs包含a、j和s的所有组合的整数值。现在的问题是,将两个变量相乘会返回以下错误:非常量表达式不能相乘

有人能帮我吗?是什么原因导致此错误?如何解决

提前谢谢

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不支持非线性规划,通过将两个变量相乘,可以使问题非线性


我建议您考虑一下您的问题,看看是否有办法将其转化为线性问题,或者使用另一种支持非线性问题的工具。

问题是,两个变量的乘积通常不是线性的,您正在进行线性规划。开始。你想解决什么精确的优化问题?目标函数是什么?制约因素是什么?