Mitarbeiter für Monat einteilen (Logikansatz gesucht)



  • Hallo,
    es geht mir darum einen Ansatz zur Lösung des folgenden Problems zu finden.
    Ich habe eine feste Anzahl Mitarbeiter. Diese sollen alle für einen Monat wie z.B. Dezember (31 Tage) auf den Monat zufällig eingeteilt werden. D.h. die Mitarbeiter sollen so eingeteilt werden, das an jedem Wochentag eine (vom Wochentag abhängige) Anzahl an Mitarbeitern eingeteilt wird. Die Mitarbeiter sollen zwischen 2 und 4 (also 2,0;2,5;3,0...) Stunden dann arbeiten.
    Dabei muss beachtet werden, das eine bestimmte maximale Wochenarbeitszeit und auch eine (von nahezu jedem Mitarbeiter unterschiedliche) maximale Monatsarbeitszeit nicht überschritten wird.
    Die Verteilung der Mitarbeiter sollte recht gleichmäßig sein. Also nicht das ein Mitarbeiter nur am Anfang des Monats und der andere wieder nur am Ende des Monats eingeteilt ist.

    Wie gehe ich da nun heran?
    Gehe ich jeden Monatstag durch und ermittle durch Zufall einen bestimmten Mitarbeiter ?
    Dann müsste ich immer ermitteln, ob die maximalen Wochen- bzw. Monatsarbeitszeiten überschritten werden.
    Und abhängig vom Zufall kann das dann schon einige überflüssige ? Abfragen ergeben.
    Ausserdem ist es dann mit der gleichmäßigen Verteilung recht schwierig (praktisch unmöglich).

    Wie kann ich das ansonsten von der Logik lösen ?



  • Das scheint damit verwandt zu sein: http://en.wikipedia.org/wiki/Knapsack_problem



  • <*push*>



  • Solche Probleme lassen sich sehr schön in anderen "Programmiersprachen" lösen. Es gibt Constraint-Solver (google nach Eclipse Constraint Solver), bei der du das Problem - wie du es beschrieben hast - eingeben kannst und du erhälst dann eine Lösung. Du müsstest es halt genau spezifizieren, was du mit "zufällig" oder mit "gleichverteilt" meinst.

    Es gibt dazu teilweise sehr gute, effiziente Algorithmen, die dort Einsatz finden.


Anmelden zum Antworten