如何解决在Anaconda GUI上将Syder与Pyomo,GLPK一起使用是否可行?如果是这样,为什么这对我不起作用?
我对编程和优化领域非常陌生。我想知道是否可以使用Anaconda GUI在Spyder上使用Pyomo和Glpk求解器?
这是我使用MacBook上的终端窗口下载Pyomo和Glpk的方式: conda install -c conda-forge pyomo conda install -c conda-forge glpk
我想使用Spyder重新创建一个简单的优化仓库问题,但是我正在运行 进入Spyder控制台上的此错误:
runfile('/Users/.../Spyder Tutorials and Examples /ch3_concrete_ex.py',wdir='/Users/.../Spyder Tutorials and Examples ')
runfile('/Users/.../Spyder Tutorials and Examples /ch3_concrete_ex.py',wdir='/Users/.../Spyder Tutorials and Examples ')
File "/Users/a.../Spyder Tutorials and Examples /ch3_concrete_ex.py",line 46
pyomo solve --solver=glpk ch3_concrete_ex.py
^
SyntaxError: invalid syntax
我的猜测是我需要在Spyder的环境中添加Glpk和Pyomo吗?有人可以吗 提供一些指导?我不应该为此使用Anaconda吗?
下面是我的代码的副本:
from pyomo.environ import *
model=ConcreteModel(name="(WL)")
N=['Harlingen','Memphis']
M=['NYC','LA',"Chicago",'Houston']
d={('Harlingen','NYC'):1956,\
('Harlingen','LA'):1606,'Chicago'): 1410,'Houston'):330,\
('Memphis','NYC'):1096,'LA'):1792,'Houston'): 330}
P=2
model.x = Var(N,M,bounds=(0,1))
model.y = Var(N,within=Binary)
def obj_rule(model):
return sum(d[n,m]*model.x[n,m] for n in N for m in M)
model.obj=Objective(rule=obj_rule)
def one_per_cust_rule (model,m):
return sum(model.x[n,m] for n in N)==1
model.one_per_cust_rule= Constraint(M,rule=one_per_cust_rule)
def warehouse_active_rule(model,n,m):
return model.x[n,m] <= model.y[n]
model.warehouse_active_rule= Constraint(N,rule=warehouse_active_rule)
def num_warehouses_rule(model):
return sum(model.y[n] for n in N) <=P
model.num_warehouses= Constraint(rule=num_warehouses_rule)
pyomo solve --solver=glpk ch3_concrete_ex.py
任何提示将不胜感激!
解决方法
您遇到了问题,因为您试图在程序中执行终端命令。让我解释一下...有几种方法可以调用pyomo来解决模型。如果安装正确,Pyomo具有一个命令行界面,您可以使用命令pyomo
进行调用。因此,此命令:
pyomo solve --solver=glpk ch3_concrete_ex.py
这是您要从终端提示中编写的内容,不是程序内的。
我发现以该程序的语法调用所有求解器的东西并像其他任何python程序一样运行文件要容易得多。用以下语法替换上面的行:
solver = SolverFactory('glpk')
solution = solver.solve(model)
display(model)
,然后像在spyder中一样或在终端上像其他任何python程序一样运行您的程序:
% : python ch_3_concrete_ex.py
我刚刚做过,它可以正常工作/解决。
但是我很惊讶glpk可以安装conda。我记得安装了它,这在Mac上是一个很大的痛苦。他们必须清理了安装过程。如果您正在学习学术课程,并且会做很多优化工作,那么Gurobi就是很棒的,并且具有免费/廉价的许可证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。