Mam do czynienia z problemem, nie jestem pewien, jak podejść. Muszę wygenerować kalendarz dla pracowników, z których każdy ma określone ograniczenia pracy (niektóre osobiste, niektóre wspólne)
Z czym pracuję:
- Mam lekarzy
- Każdy lekarz musi pracować 5 dni w tygodniu.
- Każdy lekarz musi pracować 1 noc / tydzień
- Każdy lekarz musi przepracować taką samą liczbę nocy w porównaniu z innymi lekarzami (lub jak najbliżej)
- Każdy lekarz musi przepracować tyle samo nocy czwartkowych i niedzielnych w porównaniu z innymi lekarzami (lub jak najbliżej)
- Niektórzy lekarze nie mogą pracować w określone dni / noce (dane wprowadzone przez użytkownika)
- Niektórzy lekarze chcieliby pracować w określone dni / noce (wkład użytkownika)
- Niektórzy lekarze chcieliby nie pracować w określone dni / noce (dane wprowadzone przez użytkownika)
Użytkownik, o którym mowa, to osoba zajmująca się kalendarzem. Próbuję zbudować rozwiązanie, które automatycznie wygeneruje kalendarz spełniający wszystkie ograniczenia. Rozwiązaniem jest wprowadzenie dużych ustawień „dodaj lekarzy” i „dodaj ograniczenia” dla każdego lekarza, a następnie przycisk „generuj kalendarz”. To jest naprawdę podstawowe dla użytkownika.
Mój problem :
Nie jestem pewien, jak wygenerować faktyczne planowanie, czytałem o sieciach neuronowych, algorytmach genetycznych i tak dalej, i wszystkie one wydają się być właściwym rozwiązaniem, ale też nie do końca.
Kiedy patrzę na GA, są w stanie znaleźć rozwiązanie dla danej populacji (mój problem), ale populacja początkowa musi już przestrzegać określonego zestawu ograniczeń, które następnie zostałyby zoptymalizowane. W takim przypadku moja początkowa populacja jest już rozwiązaniem. Nie potrzebuję go „optymalizować”. Nie ma znaczenia, że jedna osoba pracuje 3 poniedziałkowe noce z rzędu, o ile faktycznie jest to poprawne, a inni pracują tak samo, co oznacza, że inni też będą pracować 3 poniedziałkowe noce z rzędu i jest w porządku. Co sprawia, że uważam, że GA są dla mnie zbyt „zaawansowane”, ponieważ mój problem został już rozwiązany w punkcie początkowym GA.
Ale z drugiej strony GA naprawdę wygląda na to, że zostały stworzone do tego, więc może nie rozumiem tego poprawnie?
W każdym razie, ponieważ nigdy nie korzystałem z GA (ani sieci neuronowych, ani niczego w tym rodzaju), chciałbym mieć pewność, że wybieram właściwe podejście przed zaangażowaniem się w taką krzywą uczenia się.
Moje pytanie :
Jak myślisz, co jest dobrym podejściem / algorytmem / techniką dla problemu takiego jak mój? Gaz? Sieci neuronowe? Coś zupełnie innego?
Mam wszystkie uszy i w razie potrzeby jestem otwarty na więcej szczegółów, ale myślę, że wyraziłem się jasno :)