Excel Solver не подчиняется двоичному ограничению
Вопрос
Я создал модель в Excel для использования совместно с Solver.В основном это работает.Единственная проблема заключается в том, что Solver на самом деле не обрабатывает ячейки, ограниченные как двоичные, должным образом.Когда поиск решения завершен, некоторые числа на самом деле равны 0,9999996, 1,0000000003, 0,0000017 и так далее.
Я использую Excel 2004 в Mac OS X.Есть идеи?
Решение
Из-за конечной точности компьютеров и характера алгоритмов оптимизации в решатель встроены допуски.Я бы попробовал нажать кнопку «Параметры» в диалоговом окне «Параметры решения», а затем увеличить точность (скажем, с 0,000001 по умолчанию до 0,00000001).Я не уверен, что это сработает, но попробовать стоит.
Моя компания выпускает решатель коммерческого уровня, подключенный к Excel, под названием What’sBest.Если вышеперечисленное не сработает, вы можете рассмотреть это.Дополнительную информацию можно найти на сайте www.lindo.com.
Другие советы
Если двоичные значения далеки от 0 или 1, возможно, вам придется перейти к параметрам в окне «Поиск решения» и проверить, установлен ли флажок «Игнорировать целочисленные ограничения».
Если решатель не может найти решение в течение заданного периода времени или за разрешенное количество итераций (или если правильный ответ невозможен), он не будет возвращать двоичные ответы.
Один из возможных обходных путей, в зависимости от типа проблемы ты пытаешься решить и насколько точный ответ вам нужен, заключается в установке нескольких ячеек (возможно, с наименьшими значениями в ячейках, для которых вы рассчитываете) с ограничениями <=1
и >=0
а не двоичный.Предоставленное вами изображение не отображается, поэтому я не совсем уверен, что вам нужно.
(Может быть полезно настроить ячейку с суммовым произведением для ячеек, не установленных как двоичные;см. ниже.)
Например, если вы пытаетесь решить в общей сложности 22 (решения нет), вы начинаете с:
9 1
9 1
9 1
6 1
3 1
Если вы установите все значения во втором столбце как двоичные, вы получите:
9 0.5625
9 0.5625
9 0.5625
6 0.708333333
3 0.854166667
Если вы установите первые 3 как двоичные, а последние два как <=1
& >=0
, вы получите:
9 0
9 1
9 1
6 0.333333333
3 0.666666667
Суммарное произведение последних двух строк = 4, которое затем можно использовать, чтобы вручную установить одну из последних двух строк как 1, а другую как 0, в зависимости от того, хотите ли вы получить ответ немного ниже или выше целевого значения.
У меня была аналогичная проблема, и я мог ее решить, перейдя к параметрам решателя и установив флажок «Использовать автоматическое масштабирование».Я не уверен, что это решит вашу проблему или нет, но стоит попробовать.
Вероятно, это не ваша проблема, но имейте в виду, что есть Ignore Integer Constraints
флажок в разделе «Параметры», который установлен по умолчанию в Excel Solver.По крайней мере, так обстоит дело с моей копией Excel 2011 для Mac.