我必须优化一组具有循环迭代的方程。我有一个 pyomo 代码如下。我尝试使用几个求解器,但它们都挂起。有没有办法处理循环?
感谢和问候
从 pyomo.environ 导入 *
从 vmplib 导入 *
导入系统
导入回溯
#sys.setrecursionlimit(90000)
模型 = ConcreteModel()
model.limits = ConstraintList()
#Taxpayer v0.2>Taxpayer v0.2 计划标准集>开始现金>开始现金价值测量MC
model.x8 = Var(内=NonNegativeReals,初始化=1000.0000)
#Taxpayer v0.2>Taxpayer v0.2 计划标准集>现金>现金价值测量MC
模型.x4 = 目标()
model.x4.set_sense(最大化)
#现金模式套餐>就业网络>雇主>净工资>净工资金额>净工资金额价值测量MC
model.x7 = Var(内=NonNegativeReals,初始化=25000.0000)
#现金模型套餐>现金网络>银行>储蓄账户>利率>利率价值测量MC
model.x5 = Var(内=NonNegativeReals,初始化=5.0000)
#现金模型套餐>现金网络>纳税人>税收>税率>税率价值测量MC
model.x3 = Var(内=NonNegativeReals,初始化=50.0000)
#现金模型套餐>现金网络>储蓄者>收入来源>劳动净收入>劳动净收入价值测量MC
模型.x6 = 表达式()
#现金模型套餐>现金网络>储蓄者>收入来源>利息收入>利息收入价值测量MC
模型.x2 = 表达式()
#现金模型套餐>现金网络>Saver>成本结构>纳税>纳税价值测量MC
模型.x1 = 表达式()
#Taxpayer v0.2>Taxpayer v0.2 计划标准集>现金>现金价值测量MC
model.x4.set_value(model.x8+model.x6+model.x2-model.x1)
model.c4 = 约束(expr=model.x4 >= 0)
#现金模型套餐>现金网络>储蓄者>收入来源>劳动净收入>劳动净收入价值测量MC
model.x6.set_value(model.x7)
model.c6 = 约束(expr=model.x6 >= 0)
#现金模型套餐>现金网络>储蓄者>收入来源>利息收入>利息收入价值测量MC
model.x2.set_value(model.x4-0.01*model.x5)
model.c2 = 约束(expr=model.x2 >= 0)
#现金模型套餐>现金网络>Saver>成本结构>纳税>纳税价值测量MC
model.x1.set_value(model.x2 - 0.01*model.x3)
model.c1 = 约束(expr=model.x1 >= 0)
定义 maxz(m):
返回 m.x4 <= 26666.6666
model.constz = 约束(规则 = maxz)
solver = SolverFactory('couenne')
solver.options[‘max_iter’] = 6000
尝试:
结果 =solver.solve(model, tee=True)
除了:
traceback.print_exc()
response = {‘error’:‘错误处理请求’}
traceback.print_exc()