
Die Beziehungen könntest du im einfachsten Fall als eine Liste von Funktionen abbilden. Denen übergibst du einen Plan und prüfst, ob dieser korrekt ist. Theoretisch kannst du jetzt alle Möglichkeiten des Plans durchprobieren (was natürlich unmöglich ist) und dann aufhören, wenn du die beste (wie auch immer du das definierst) Lösung gefunden hast. Das ist der einfache Teil.
Wie du schon selber festgestellt hast, liegt das Problem bereits darin eine gültige Lösung zu finden - und ggf. von dort aus weiter zu optimieren. Daher solltest du dir erstmal überlegen, wie du vorgehen würdest, wenn du den Plan von Hand erstellen müsstest. Dann schaust du dir an, wo es in deinem Plan konflikte gibt und probierst deinen Plan schrittweise zu ändern. Hier gibt es natürlich kein Patentrezept, dass Vorgehen hängt stark vom Problem ab.
Weiter ist es schwierig, eine "gute" Lösung zu finden. Du wirst feststellen, dass du eine Lösung findest, oft gehen diese jedoch stark zum Nachteil einer einzelnen Resource, was in diesem Fall einem Mitarbeiter entsprechen würde. Und natürlich musst du auch festlegen, was überhaupt eine gute Lösung ist. Da du keine konkreten Kosten im Sinne von Geld oder Zeit hast, ist das relativ beliebig und daher fast unmöglich.
Versuche dich mal in die Thematik einzulesen, Scheduling wurde als erster Ansatz ja bereits genannt. Dann musst du selber sehen, wie weit du kommst. Ich möchte dir nicht gleich am Anfang die Motivation nehmen, aber ich habe starke Zweifel, dass du bei deinem Wissenstand (das was man aus den Postings herauslesen kann) das Problem zufriedenstellen lösen kannst (und schon gar nicht in der kurzen Zeit). Ohne vernünftige Grundlagen in Algorithmik ist eine automatische Lösung zu anspruchsvoll.