Как написать простой файл MPS для отправки на серверы NEOS
Я пытаюсь найти программу с открытым исходным кодом, которая достаточно быстра для моей проблемы. Я пытаюсь создать файл MPS, чтобы я мог отправить его на серверы NEOS и сравнить производительность различных решателей.
Моя проблема заключается в том, что в самых сложных случаях примерно 150 целочисленных переменных, но я начну с простого случая, чтобы помочь мне понять, как работает формат файла MPS.
Это проблема:
minimize : 330.3 * M1 + 1132.88 * M2 + 955.86 * M3
subject to:
20 <= 60 * M2 <= 20.9
20 <= 34 * M3 <= 20.9
M1 + M2 + M3 = 1
и я написал следующий файл MPS:
NAME problema1
ROWS
L K
L N
E ONE
N CUSTO
COLUMNS
M1 ONE 1 CUSTO 330.3
M2 K 60
M2 ONE 1 CUSTO 1132.88
M3 N 34
M3 ONE 1 CUSTO 955.86
RHS
KLESS K 20.9
NLESS N 20.9
ONEREST ONE 1
RANGES
RANGE1 K 0.9
RANGE2 N 0.9
ENDATA
Используя линейные решатели, доступные на NEOS ( https://neos-server.org/neos/solvers/index.html), только Gurobi может решить эту проблему. Другие считают, что проблема неосуществима (а это не так).
Я уверен, что это проблема с моим файлом MPS, но я просто не могу понять, что это такое. Что я делаю неправильно?
1 ответ
Действительно, ваш файл MPS имеет проблему. Строки в разделе RHS должны иметь одно имя, например
RHS
RHS1 K 20.9
RHS1 N 20.9
RHS1 ONE 1
В основном решатель выбирает один набор RHS. Аналогично для раздела RANGES. Я не уверен, что вы намеревались использовать строки в разделе RANGES.