1

Мне нужно разработать макет процесса в Excel с помощью Солвера. У меня есть столбец значений, который я назначил как "Изменяя ячейки", и который должен быть изменен, чтобы найти минимальный результат. Проблема в том, что вместо изменения этих значений мне нужно поменять их местами, пока я не найду наилучшую комбинацию.

Как указать в Солвере или с помощью магии Excel, что мне нужно, чтобы значения менялись, но не перезаписывались, поскольку такой подход всегда возвращает 0 везде?

Может быть, есть математически обоснованное ограничение, которое я мог бы использовать, чтобы предотвратить изменение этих значений?

1 ответ1

1

Учитывая ограничение обмена, вы действительно спрашиваете: среди всех переупорядочений набора значений, какая перестановка этих значений минимизирует целевую функцию?

Эта проблема может быть структурирована так, чтобы Солвер мог найти решение. Ключ заключается в том, чтобы использовать порядок значений, а не сами значения, так как количество Солвера меняется, чтобы найти минимальное значение целевой функции. Солвер имеет встроенный механизм для перестановки этих значений.

На рисунке ниже показана настройка рабочего листа для иллюстративного примера.

  • Ячейки A4:A7 содержат значения, которые необходимо переупорядочить, чтобы найти минимум.

  • Ячейки C4:C7 содержат начальный порядок строк для этих значений - значения в C4:C7 - это те, которые будут меняться Солвером.

  • Формулы в E4:E7 ищут значения в A4:A7 которые соответствуют порядку строк в C4:C7 .

  • Ячейка C9 содержит формулу, которая будет минимизирована в моем примере - обратите внимание, что формула зависит от значений в E4:E7 , а не от значений в A4:A7 .

первоначальная настройка рабочего листа

Далее идут настройки Солвера для задачи. Здесь необходимо установить ограничение для ячеек C4:C7 в значение AllDifferent а в качестве метода решения - значение Evolutionary .


Настройки Солвера


Чтобы установить ограничение для C4:C7 на AllDifferent , выберите опцию dif из раскрывающегося списка в диалоговом окне Add Constraint. (См. Эту ссылку для полезного обсуждения специальных параметров ограничений, доступных в Solver.)

настройка ограничения диф

Я не счел необходимым возиться с необязательными настройками для метода решения, например, установив ограничение по времени или итерации при поиске решения. С помощью всего лишь четырех переменных ячеек и очень простой целевой функции Solver нашел решение всего за несколько секунд. Порядок строк, который дал минимальное решение, был показан в C4:C7 , а порядок значений в E4:E7 .

Решающее решение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .