Есть ли у COIN-OR CBC ограничения по размеру файла .lp? - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь запустить следующую модель оптимизации, но решатель 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 ГБ

Пожалуйста, дайте мне знать, если у кого-то была похожая проблема, и каков был обходной путь.

Любые идеи о том, какпостроить на этот раз модели притока / оттока с другим подходом?

Спасибо, Нельсон

...