Генерация случайных решений в CPLEX
У меня есть простая модель в IBM ILOG CPLEX.
dvar float x in 1..99;
dvar float y in 1..99;
dvar float z in 1..99;
subject to
{
x + y - z == 41.3;
}
Мне нужны случайные решения для x
, y
а также z
, Тем не менее, я всегда получаю 41.3
, 1
, 1
,
Я использую не тот инструмент? Более того, мне нужно пять случайных решений. Не только один. Как я могу сделать это?
1 ответ
Решение
Для технико-экономического обоснования (без целевой функции) CPLEX прекращает работу, когда находит приемлемое решение. Нет возможности получить все крайние точки.
Что вы можете попробовать:
- установить целевую функцию
- решить и сохранить решение
- измените целевую функцию, чтобы найти другое решение (которое должно быть сделано случайно, если вы хотите случайные решения)
Вам придется использовать некоторый API для кодирования логики. Эта идея описана более подробно здесь: http://orinanobworld.blogspot.de/2013/02/finding-multiple-extreme-rays.html
Но это способ усложнить вашу проблему. Я бы просто сделал следующее:
- установить z случайно
- рассчитать х + у = г + 41,3
- выберите случайное значение r от 0 до 1
- х = (х + у) * г
- у = (х + у) * (1-й)