Я пытаюсь запустить следующую модель оптимизации, но решатель CBC вылетает со следующим сообщением:
ОШИБКА: Солвер (cbc) возвратил ненулевой код возврата (3) ОШИБКА: Смотрите диагностический журнал выше для диагностической информации.
Основная идея состоит в том, чтобы убедиться, что количество каждого Типа / Группы в каждом узле 'n' переносится на узел 'n-1 'после одного временного шага' ts '.Моя реальная модель более сложна, с реальными функциями Objective и некоторыми другими ограничениями, но это мое текущее узкое место.
import pyomo.environ as pyo
from pyomo.opt import SolverFactory
model = pyo.AbstractModel()
# Parameters
model.T = 5*252 # total time-steps
model.N = 252 # total number of nodes
# Sets
model.time_steps = pyo.RangeSet(0, model.T) # set of time steps
model.nodes = pyo.RangeSet(1, model.N) # set of nodes
model.groups = pyo.Set(initialize=['A','B']) # set of groups
model.types = pyo.Set(initialize=['Type1','Type2','Type3','Type4','Type5']) # set of types
# Variables
model.node_amounts = pyo.Var(model.time_steps, model.nodes, model.types, model.groups, initialize=0)
# Objectives
def total_cost_rule(model):
return True
model.obj = pyo.Objective(rule=total_cost_rule)
# Constraints
def flow_rule(model, ts, n, ccy, g):
if ts == 0:
if n == model.N:
return model.node_amounts[ts, n, ccy, g] == 1
else:
return model.node_amounts[ts, n, ccy, g] == 0
else:
if n == model.N:
return model.node_amounts[ts, n, ccy, g] == 0
else:
return model.node_amounts[ts, n, ccy, g] == model.node_amounts[ts-1, n+1, ccy, g]
model.flow_constraints = pyo.Constraint(model.time_steps, model.nodes, model.types, model.groups, rule=flow_rule)
# Concrete Model
concrete_model = model.create_instance()
# Solving model
opt = SolverFactory('cbc')
results = opt.solve(concrete_model, tee=True, keepfiles=True)
When I run the same model using 'glpk' it works fine.
opt = SolverFactory('glpk')
Знаете ли вы, если решатель CBC имеет какое-то ограничение по размеру?Файл 'lp' имеет размер около 250 МБ и ~ 10 миллионов строк.
Я использую его в среде Windows: - Python 3.6.3 64-bit.- CBC v.2.9.7 - Pyomo 5.6.1 - ОЗУ 32 ГБ
Пожалуйста, дайте мне знать, если у кого-то была похожая проблема, и каков был обходной путь.
Любые идеи о том, какпостроить на этот раз модели притока / оттока с другим подходом?
Спасибо, Нельсон