У мене є реальна проблема, яку я намагаюся представляти та автоматизувати. Я спростив і абстрагував це до наступного:
- Є n місць роботи (P1, P2, ..., Pn).
- Кожне місце, Pn має ключ, Kn.
- Є m Workers, (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. Другою метою було б забезпечити, щоб жоден працівник не здійснював непропорційну кількість поїздок.
Спасибі заздалегідь!!