Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.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 如何在gekko中动态构造约束?_Python_Optimization_Constants_Linear Programming_Gekko - Fatal编程技术网

Python 如何在gekko中动态构造约束?

Python 如何在gekko中动态构造约束?,python,optimization,constants,linear-programming,gekko,Python,Optimization,Constants,Linear Programming,Gekko,我是gekko的新手,我想用它来解决线性规划问题 我在单独的字典(my_vars,Cost,Min和Max)中有变量名、成本、最小和最大界限,变量名是它们的关键字,目标是通过确定满足约束的变量数量来最小化总成本 我做的如下 LP = GEKKO(remote=False) vars = LP.Array(LP.Var, (len(my_vars))) i=0 for xi in vars: xi.lower = Min[list(my_vars)[i]] xi.upper = M

我是gekko的新手,我想用它来解决线性规划问题

我在单独的字典(my_vars,Cost,Min和Max)中有变量名、成本、最小和最大界限,变量名是它们的关键字,目标是通过确定满足约束的变量数量来最小化总成本

我做的如下

LP = GEKKO(remote=False)
vars = LP.Array(LP.Var, (len(my_vars)))
i=0
for xi in vars:
    xi.lower = Min[list(my_vars)[i]]
    xi.upper = Max[list(my_vars)[i]]
    i += 1
<>这里我想用变量的原始名称代替席,有什么办法?< /P> 它继续是

LP.Minimize(sum(float(Cost[list(my_vars)[i]])*vars[i] for i in range(len(my_vars))))
LP.Equation(sum(vars) == 100)
另外,我在两个panda数据帧文件中有约束的左手边(LHS)(变量系数)和右手边(RHS)数字,并且喜欢使用for循环构造方程


我不知道怎么做?

这里有一种方法可以使用字典值来构造问题:

从gekko导入gekko
#存储为列表
my_vars=['x1','x2']
#存储为字典
成本={'x1':100,'x2':125}
Min={'x1':0,'x2':0}
Max={'x1':70,'x2':40}
LP=GEKKO(远程=False)
va=LP.Array(LP.Var,(len(my_vars)))#Array
vd={}#字典
对于我,席在枚举(MyIvar):
vd[xi]=va[i]
vd[xi]。下限=最小值[xi]
vd[xi]。上限=最大值[xi]
#成本函数
Lp。最小化(Lp和)([成本]席席席[VX[Xi]在MyIVARAR])
#作为数组求和
线性规划方程(线性规划和(va)==100)
#这也是一本字典
Lp方程(Lp和)([Vi[Xi]在席席Viar Var)=100)
LP.solve(disp=True)
我在席维瓦尔:
打印(xi,vd[xi]。值[0])
打印('Cost:'+str(LP.options.OBJFCNVAL))
这就产生了一个解决方案:

EXIT: Optimal Solution Found.

 The solution was found.

 The final value of the objective function is  10750.00174236579
 
 ---------------------------------------------------
 Solver         :  IPOPT (v3.12)
 Solution time  :  0.012199999999999996 sec
 Objective      :  10750.00174236579
 Successful solution
 ---------------------------------------------------
 

x1 69.999932174
x2 30.0000682
Cost: 10750.001742

下面是一些利用问题稀疏性与Gekko合作的示例。

感谢您对Gekko用户的良好支持。