Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 从PuLP到GEKKO:约束的语法映射,目标函数_Python_Pulp_Gekko - Fatal编程技术网

Python 从PuLP到GEKKO:约束的语法映射,目标函数

Python 从PuLP到GEKKO:约束的语法映射,目标函数,python,pulp,gekko,Python,Pulp,Gekko,我正在研究一个员工分配问题,该问题最初是在plup中建模的。然而,在开发过程中,一些约束条件以及目标变得非线性。在比较了一些包之后,我选择了,但不知怎么的,我的优化无法启动并运行 我面临两个问题: 1。约束公式 假设我有一些简单的约束,比如 在pill中,我有如下内容: #每个职位p必须只分配给一名员工e 对于位置_名称中的p: 继任者_prob+=纸浆.lpSum([X[p][e]代表员工_姓名中的e])==1 #只能选择符合p职位资格的员工e 对于位置_名称中的p: 对于员工姓名中的e: S

我正在研究一个员工分配问题,该问题最初是在
plup
中建模的。然而,在开发过程中,一些约束条件以及目标变得非线性。在比较了一些包之后,我选择了,但不知怎么的,我的优化无法启动并运行

我面临两个问题:

1。约束公式

假设我有一些简单的约束,比如

pill
中,我有如下内容:

#每个职位p必须只分配给一名员工e
对于位置_名称中的p:
继任者_prob+=纸浆.lpSum([X[p][e]代表员工_姓名中的e])==1
#只能选择符合p职位资格的员工e
对于位置_名称中的p:
对于员工姓名中的e:
Sequence_prob+=X[p][e]>>错误:不支持*:“float”和“generator”的操作数类型
我想知道我的约束代码是否正确(变量类型的选择等),以及如何修复分割目标。非常感谢您的帮助,因为我已经尝试了不同的变量,但无法运行。

对于#1您的约束公式看起来是正确的。通过使用
m打开run文件夹()
并使用文本编辑器打开
.apm
文件,可以检查Gekko写了什么。它列出了所有方程、参数、变量和目标语句

对于#2来说,除了包含的内容之外,您可能还有其他错误。此外,参数值是固定的-目标函数通常具有由优化器调整的变量类型。否则,如果目标函数仅由参数值组成,则它是一个不会影响解决方案的常数,除非从目标中添加或减去一个常数

下面是一个简单的程序,可以用来调查Gekko是如何编写模型
.apm
文件的

从gekko导入gekko
作为pd进口熊猫
m=GEKKO()
打印(m._路径)
x=m.Array(m.Var,(3,4))
mydict=[{'a':1,'b':2,'c':3,'d':4},
{'a':100,'b':200,'c':300,'d':400},
{'a':1000,'b':2000,'c':3000,'d':4000}]
w=pd.数据帧(mydict)
y=[0,2]
z=[1,3]
对于范围内的p(len(y)):
m、 方程(范围(len(z))内e的和(x[p][e])==1)
对于范围内的p(len(y)):
对于范围(len(z))内的e:
m、 方程(x[p][e]
谢谢!我玩了你的代码片段,我想它现在可以按照我想要的方式工作了。由于我的代表过低,因此未显示我对您答案的投票:)