Анализирующий файл решения (.sol) в pyomo - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть модель в pyomo, скажем, на машине 1, и у меня есть решатель CPLEX на машине 2. Я преобразую модель pyomo (ConcreteModel) в файл problem.lp с функцией model.write("problem.lp") на машине 1. Затем я перенесите этот файл на компьютер 2 и получите файл solution.sol из решателя CPLEX. Но имена переменных в файле решения отличаются от имен переменных модели.

Это вызывает проблему при анализе решения.

Есть ли способ преобразовать или сопоставить имена переменных в файле решения с именем модели?

Спасибо.

Редактировать 1: Я думаю, что это сводится к поиску карты символов, когда модель написана. Идентификатор карты символов возвращается model.write("problem.lp") (см. здесь ). Теперь вопрос, у меня есть идентификатор карты символов. Как получить файл карты символов и использовать его для декодирования переменных в файле solution.sol?

1 Ответ

0 голосов
/ 19 октября 2018

Как указано в правке 1, карта символов возвращается при записи модели в problem.lp. Как указано в строках 27-29 этого кода , может быть получен кортеж имен переменных в модели и ее ссылочной переменной.

Затем XML-файл, который генерирует CPLEX (solution.sol), может быть проанализирован в python с использованием пакета, подобного xml. Теперь у нас есть карта, а также значения. Нам просто нужно сравнить ссылочные переменные и сохранить их значение в переменной с именем, как в модели.

...