Python 如何在gekko中动态构造约束?
我是gekko的新手,我想用它来解决线性规划问题 我在单独的字典(my_vars,Cost,Min和Max)中有变量名、成本、最小和最大界限,变量名是它们的关键字,目标是通过确定满足约束的变量数量来最小化总成本 我做的如下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
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用户的良好支持。