У меня есть реальная проблема, которую я пытаюсь представить и автоматизировать. Я упростил и обобщил это до следующего:
- Есть n мест работы (P1, P2, ..., Pn).
- У каждого места у Pn есть ключ, Kn.
- Есть м Рабочих, (W1, W2, ..., Wm).
- Чтобы работать в Pn, рабочий должен держать Kn.
- Каждый ключ может храниться у рабочего или оставлен на бирже E.
Работник может в любое время совершить поездку на биржу, чтобы забрать некоторые невостребованные ключи или сбросить некоторые ключи для использования другими.
Теперь существует внешний график работы, который должен быть выполнен в строгом порядке. Например:
- 2016-04-21 W1 должен работать на P6
- 2016-04-21 W2 должен работать на P3
- ** требуется обмен ключами **
- 2016-04-22 W3 должен работать на P3
- 2016-04-22 W2 должен работать на P6
Любое количество работников может работать на Pn в какой-то момент в своем графике, хотя никогда в один и тот же день
Мы знаем:
- Начальное местоположение всех ключей, либо с рабочими, либо на E
- Будущие рабочие заказы, которые каждый работник должен будет выполнить
Итак, я изо всех сил пытаюсь смоделировать всю эту ситуацию. Можете ли вы предложить структуры данных и алгоритмы, на которые мне следует обратить внимание, чтобы получить представление об этом и начать оптимизировать поездки для обмена для каждого работника?
То, что я хочу минимизировать, - это общее количество поездок в E. Вторичной целью было бы убедиться, что ни один работник не совершает непропорциональное количество поездок.
Заранее спасибо!!