Excel Solver не подчиняется двоичному ограничению

StackOverflow https://stackoverflow.com/questions/1326509

  •  19-09-2019
  •  | 
  •  

Вопрос

Я создал модель в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top