Есть ли ограничение на размер файла .lp или количество переменных в CBC/GLPK?

Я пытаюсь решить MIP в GLPK и/или CBC. Файл .lp имеет размер 907 мегабайт и содержит примерно 5 миллионов переменных, но он даже не работает на CBC и работает более 8 дней на GLPK, но решение не найдено. Также всякий раз, когда я устанавливаю ограничение по времени для GLPK, он говорит, что ПРЕВЫШЕН ОГРАНИЧЕНИЕ ВРЕМЕНИ; ПОИСК ПРЕКРАЩЕН, и мне было интересно, можно ли получить вывод с помощью окна CMD или Python.

ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 616, solve
        Solver (cbc) returned non-zero return code (-1073740791) ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 619, solve
        See the solver log above for diagnostic information. Traceback (most recent call last):

  File "<ipython-input-1-55698ac3ed56>", line 1, in <module>
    runfile('D:/Data/Central Data Repository/Pooling Optimisation/Python Scripts/Run_Solver_From_Spyder v2.py', wdir='D:/Data/Central Data Repository/Pooling Optimisation/Python Scripts')

  File "C:\ProgramData\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda2\lib\site-packages\spyder\utils\site\sitecustomize.py", line 86, in execfile
    exec(compile(scripttext, filename, 'exec'), glob, loc)

  File "D:/Data/Central Data Repository/Pooling Optimisation/Python Scripts/Run_Solver_From_Spyder v2.py", line 37, in <module>
    results = opt.solve(instance, options=solver_opt, tee=True, keepfiles=True)

  File "C:\ProgramData\Anaconda2\lib\site-packages\pyomo\opt\base\solvers.py", line 623, in solve
    "Solver (%s) did not exit normally" % self.name)

ApplicationError: Solver (cbc) did not exit normally

person redanimal375    schedule 10.09.2018    source источник
comment
Для LP это много, но не слишком (мы пропускаем число ненулевых, которое более важно для LP; размер файла LP указывает на то, что он может быть довольно плотным). Если модель представляет собой LP и она разреженная, вы можете изучить возможность использования решателя внутренних точек. Если ваша модель представляет собой MIP (т. е. содержит дискретные переменные), то зачастую лучшим способом является использование коммерческого решателя. Хорошо бы показать первую часть лога решателя.   -  person Erwin Kalvelagen    schedule 10.09.2018
comment
Добавлен журнал решателя для ошибки cbc. @ЭрвинКалвелаген   -  person redanimal375    schedule 11.09.2018
comment
Я предполагаю, что у вас заканчивается память   -  person Erwin Kalvelagen    schedule 11.09.2018
comment
Компьютер, на котором это работает, имеет 128 ГБ ОЗУ, так что я надеюсь, что нет!   -  person redanimal375    schedule 11.09.2018


Ответы (1)


Как правило, ЛП-модели разрешимы. 8 дней это слишком. Вы можете найти сравнение решателей lp здесь "http://plato.asu.edu/ftp/lpsimp.html". Вы можете изменить свой решатель.

Если решатель находит решение до завершения, вы можете обратиться к python-pyomo.

Кроме того, CBC является решателем MIP. Но вы сказали, что ваша модель LP.

person kur ag    schedule 10.09.2018
comment
Извините, это действительно MIP. Порекомендуете ли вы какие-либо решатели с открытым исходным кодом, которые могли бы решить эту проблему. Что касается того, найдет ли он решение, знаете ли вы, какой код должен вывести его в pyomo. Спасибо. - person redanimal375; 10.09.2018
comment
Если вы студент, есть бесплатные версии коммерческих решателей. Вы можете использовать их с пиомо. Как и на странице lp, есть страница сравнения для MIP, пожалуйста, изучите plato.asu.edu/ftp/ milpc.html. Вы можете найти хороший пример на этой странице hselab.org/pyomo-get-variable-values. .html для получения значений. Кроме того, как пользователь SO, посмотрите здесь stackoverflow.com/help/someone-answers. - person kur ag; 10.09.2018