Diciamo che a questo livello non serve un ""programmatore"" MA un ""esperto in Ricerca Operativa""
Il problema e' ""problematico"" per nulla semplice da risolvere, senza le opportune competenze e strumenti.
Ma per il quale esiste un'ampia documentazione, perche' e' un problema ""classico"" di Ricerca Operativa.
Inoltre questo insieme di regole e' giusto un iniziale insieme, ne esistono parecchie altre, mi sa, come ad esempio che ogni persona deve lavorare in modo continuativo per un certo periodo nella stessa parte della giornata (del tipo non ha senso che il giorno 1 lavori dalle 16 alle 24 e il giorno 2 dalle 0 alle 8 ) ecc .
Giusto come idea della complessita, puoi leggere qualcosa da qui:
https://www.matematicamente.it/forum/ricerca-operativa-e-programmazione-gestione-turni-t82227.html
http://www.oil.di.univaq.it/didattica/corsi/oc2/Dispense/crewsched.pdf
http://elabor.biz/images/PDFricerca/Cortopassi_DVF.pd
http://people.uniroma2.it/stefano.giordani/didattica/mgsc/Dispense/2.IntroScheduling.pdf
Le parole magggiche da usare per cercare con Google sono:
ricerca operativa
turnazione
turno di lavoro
gestione del personale
schedulazione del personale
schedulazione
scheduling