Я пытаюсь использовать решатель для решения нелинейной проблемы, но результаты не согласуются и изменяются при определенных условиях. Эта проблема не существует при использовании платформы Risk Solver, но при использовании обычного Excel Solver. Оптимизация и ограничения не сложны, поэтому я не понимаю, что происходит.Excel Solver не дает согласованных результатов
Вот файл: temp.xlsm
Уведомления есть макросы, связанные с кнопками прикрепленных запустить решатель.
реплицировать проблема:
- Открыть файл
- Нажмите
Months
вкладку - Initial Заражение должна быть на уровне 11%
- Нажмите
Optimize Net Revenue
(Correct оптимальные условия, это хорошо) - Изменить Исходная инфекция до 1%
- Нажмите
Optimize Net Revenue
- Изменить Initial Заражение назад до 11%
- Нажмите
Optimize Net Revenue
Примечание: Optimal Чистый доход теперь ниже, а в прошлом месяце последний столбец является отрицательным, когда он должен быть равен нулю. Кажется, что решатель нужно сбрасывать каждый раз, или есть ошибка, но я не могу понять это. Вот макрос:
Sub Monthly_Solver()
Application.Run "SolverReset"
Application.Run "SolverOk", "$T$18", 1, "0", "$F$6:$F$17,$N$6:$N$17", 1, "GRG Nonlinear"
Application.Run "SolverAdd", "$F$6:$F$17", 5, "binary"
Application.Run "SolverAdd", "$N$6:$N$17", 1, "$M$6:$M$17"
Application.Run "SolverAdd", "$N$6:$N$17", 3, "0"
Application.Run "SolverAdd", "$T$18", 3, "0"
Application.Run "SolverSolve", True
End Sub
Благодарим за помощь.Я попытался изменить 'N17 = 0', чтобы получить одно и то же решение, но оно не работает. Кроме того, спасибо за ссылку, но я не уверен, как определить условие if/then как линейное ограничение. – Vedda
Ниже приведены шаги, которые я выполняю: Текущий оптимальный чистый доход в вашей книге составляет 1,661.56. Начальная инвазия 11% -> 1% пересчитана формула, а оптимальный чистый доход - 11 167,71. Оптимизируйте чистый доход, а решение - 15 416,39. Теперь я изменяю N17 на 0, оптимальный чистый доход пересчитывается как 11 292,04. Изменение начального заражения до 11% дает 1,236.14, и нажатие «оптимизировать чистый доход» дает 1,661.56, что совпадает с первым решением. Есть ли какой-то шаг по-другому? – ayhan
Хорошо, да, это сейчас. Теперь изменение ячейки над ней «N16 = 0» дает еще один оптимальный чистый доход, который ниже, чем просто «N17 = 0», что не имеет смысла. Я понимаю, что может быть локальное оптимальное решение, но решатель должен менять бинарную переменную 'Spray', которая, изменяя' F16 = 1', создаст большее решение. Это не имеет никакого смысла. – Vedda