Eu tenho um problema do mundo real que estou tentando representar e automatizar. Simplifiquei e abstraí para o seguinte:
- Existem n locais de trabalho (P1, P2, ..., Pn).
- Cada lugar, Pn tem uma chave, Kn.
- Existem m Trabalhadores, (W1, W2, ..., Wm).
- Para trabalhar em Pn, um trabalhador deve segurar Kn.
- Cada chave pode ser mantida por um trabalhador ou deixada no Exchange, E.
Um trabalhador pode fazer uma viagem ao Exchange a qualquer momento para pegar algumas chaves não reclamadas ou deixar algumas para serem usadas por outras pessoas.
Agora, há um cronograma de trabalho exógeno que deve ser concluído em uma ordem estrita. Por exemplo:
- 2016-04-21 W1 deve trabalhar no P6
- 2016-04-21 W2 deve trabalhar na P3
- ** troca de chaves necessária **
- 22-04-2016 W3 deve funcionar na P3
- 22-04-2016 O W2 deve funcionar no P6
Qualquer número de trabalhadores pode ter que trabalhar na Pn em algum momento da programação, embora nunca no mesmo dia
Nós sabemos:
- A localização inicial de todas as chaves, com trabalhadores ou em E
- As futuras ordens de serviço que cada trabalhador terá que cumprir
Então, estou lutando para modelar toda essa situação. Você pode sugerir estruturas e algoritmos de dados que eu deveria examinar, a fim de ter um controle sobre ele e começar a otimizar as viagens à troca para cada trabalhador?
O que eu quero minimizar é o número total de viagens para E. Um objetivo secundário seria garantir que nenhum trabalhador faça um número desproporcional de viagens.
Desde já, obrigado!!