Использование Excel Solver для оптимизации расписания конференций

Использование Excel Solver для оптимизации расписания конференций

Я хочу использовать Excel Solver для оптимизации расписания конференции. Конечная цель — чтобы каждая сессия конференции была тематически связной, а сессии были сгруппированы по темам.

Я создал гипотетическую ситуацию, в которой мне нужно распределить 20 исследовательских работ по 5 сессиям, по 4 работы на сессию. Охвачено 5 тем, по 4 работы на каждую.

Созданная мной таблица Excel выглядит следующим образом.

введите описание изображения здесь

Я попытался использовать Excel Solver, чтобы определить оптимальные настройки, при которых в одном сеансе будут рассматриваться все работы по теме 1, в следующем сеансе — все работы по теме 2 и т. д.

Ячейки I25:M29 показывают, какие темы рассматриваются в одном сеансе.

Сейчас цель — максимизировать $N$30. Это суммирует ячейки I30:M30, что учитывается, если один из субъектов в сеансе дает сумму 4, например, COUNTIF(I25:I29,4).

Это делается путем изменения ячеек переменных I2:M21, которые представляют собой двоичную переменную для каждой статьи, отнесенной к одной сессии.

Ограничения, которые я ввел:

  • Количество докладов на сессию не должно превышать 4.
  • I2:M21 — двоичные
  • Каждый доклад должен быть отнесен к сессии, т.е. N2:N21 = 1

введите описание изображения здесь

Проблема в следующем: я не могу заставить это работать правильно. Я пробовал несколько вариантов, например, эволюционный, нелинейный GRG, но ни один из них не дает очевидного решения, которое выглядит так:

введите описание изображения здесь

Что вы думаете по этому поводу, какие параметры Solver помогут мне найти это решение?

решение1

На самом деле я только что понял, как это сделать.

  1. $N$30 должна быть суммой всех предметов, что в сумме дает 20 (и фактически допускает линейное программирование)
  2. Необходимо ввести ограничения для каждой сессии, чтобы она включала одну тему, указав, что тема должна совпадать с максимальным количеством мест на сессию, $I$26 = $I$23, $J$27 = $J$23 и т. д.

Визуально:

изображение 4

изображение 5

Однако, когда я захочу добавить гораздо больше сеансов, это станет довольно трудоемким, поэтому любые альтернативы по-прежнему приветствуются!

Связанный контент