Řešitel je nástroj s mnohostranným využitím. V tomto článku je popsané, jak ho můžeme použít pro přiřazování pracovníků do směny.

Řešený příklad je však samozřejmě možné zobecnit na přiřazování lecčeho leckam.

Příslušný soubor je ke stažení tady.

Zadání úlohy je takové, že máme určitý počet směn, a určitý počet pracovníků. Víme, že na každé směně musí být určité množství pracovníků, a současně, že každý pracovník může odpracovat maximálně určité množství směn.

Potřebujeme obsadit pět směn (pondělí, úterý, středa, čtvrtek, pátek, sobota, neděle) a máme pět pracovníků (Adam, Beáta, Cyril, Dana, Eva).

Víme, že Beáta nemůže přijít do práce ve středu a v sobotu a Dana a Eva ve čtvrtek. Nikdo pak nesmí přijít do práce více než třikrát.

Naším úkolem bude zjistit, kdo má kdy přijít do práce, aby byly všechny požadavky splněny.

Zadání si (zatím bez podmínek) přepíšeme do této tabulky. Naší další snahou pak bude do této tabulky doplnit nuly nebo jedničky, přičemž jednička bude znamenat že zaměstnanec v tento den přijde, a nula, že nepřijde.

řešitel - zadání

Do nového řádku sečteme (zatím nulový) počet odpracovaných směn za jednotlivé dny a do nového sloupce sečteme (zatím také nulový) počet odpracovaných směn za jednotlivé pracovníky.

předvyplněná tabulka

Teď už můžeme spustit Řešitele a nastavit ho.

nastavení řešitele dialog

Účelovou funkci teď musíme trochu obejít. Musíme ji zadat, ale přitom vlastně nepotřebujeme nic maximalizovat ani minimalizovat. Můžeme tedy např. nechat jednu z buněk s počtem lidí na směně "přiblížit" dvojce. Proměnné buňky jsou $B$2:$H$6 - tyto buňky má Excel měnit za účelem dosažení výsledků. Má tedy přiřazovat pracovníky do směn. Řešitel má tyto omezující podmínky:

  • $B$2:$H$6 je binární číslo Buňky, které Řešitel mění, nemohou nabýt jiných hodnot než 0 nebo 1. Pracovník na směnu buď nepřijde, nebo přijde.
  • $B$7:$H$7 = 2 Buňky, které vyjadřují počet lidí na jedné změně, musí nabýt hodnotu dva. Tedy na každé směně budou pracovat dva lidé.
  • Další čtyři podmínky vyjadřují, kdy kdo nemůže do práce. Tyto buňky musí být nulové.
  • $I$2:$I$6 <= 3 Nikdo nesmí odpracovat více než tři směny.

Nastavíme evoluční algoritmus (úlohy je nelineární) a necháme vyřešit. Takto vypadá výsledek - a vidíme, že naše směny jsou naplánované dle požadavků.

řešitel výsledek

Jako třešničku na dortu můžeme tabulku zpřehlednit ještě podmíněným formátováním.

podmíněné formátování

4 Komentářů

  1. Ahoj,
    Chtěl bych se zeptat, půjde řešitel nastavit tak aby počítal směny na celý měsíc a pro 4 lidi?

    Zkoušel jsem pár úprav ale bez výsledku většinou jsem skončil hned u funkce „$B$2:$E$32= binární_číslo“ že prý nelze binární_číslo

  2. Dobrý den, binární číslo musí jít. Jak přesně to zadáváte?
    J.

  3. Dobrý den,
    rád bych ve firmě pomohl vedoucím zaměstnancům s plánováním směn při využití požadavků daných zaměstnanců. Váš příklad je velmi poučný, nicméně mohl bych Vás poprosit, jak upravit/postupovat při plánování nerovnoměrné pracovní doby, tzn. ranní/noční,příp. 3směnný provoz. Budu rád za jakoukoliv pomoc. Děkuji

  4. Dobrý den Honzo,
    vždy je třeba nějak upravit podmínky. Obecně Vám s tím ale asi nikdo neporadí, pokud byste měl zájem, můžete nás kontaktovat a v rámci placené konzultace můžeme Vaše požadavky projít a vymyslet, jak řešitele nastavit.
    Nebo si s tím zkuste pohrát sám – často stačí jen chvíli zkoušet a nastavení nemusí být úplně složité…

Napsat komentář

Vaše emailová adresa nebude publikována.

smazat formulářOdeslat komentář