MODEL PRZYDZIAŁU ZADAŃ DO PRACOWNIKÓW W OPARCIU O KOMPETENCJE Opis modelu Model rozwiązuje problem przydziału zadań do pracowników z uwzględnieniem współczynnika kompetencji. Przyjęto następujące założenia: Mamy ustaloną dowolną liczbę pracowników: m Każdy pracownik i ma ustalony limit czasu pracy li Mamy ustalona dowolną liczbę zadań do wykonania: n Każde zadanie j ma ustalony normatywny czas wykonania: tj Każdy pracownik i ma określone kompetencje do wykonania zadania j. Oceną tych kompetencji jest współczynnik kompetencji kij , przy czym większa wartość współczynnika kompetencji oznacza mniejsze kompetencje do wykonania zadania. Pracownik może wykonać dowolną liczbę zadań w ramach limitu czasu pracy Każde zadanie może być wykonane przez dokładnie jednego pracownika Chcemy, aby przydział zadań do pracowników był optymalny, to znaczy, aby czas pracy potrzebny do wykonania zadań był minimalny. Na potrzeby modelu przyjęliśmy, że wartość współczynnika kompetencji wpływa bezpośrednio na czas wykonania zadania. Powstał następujący model liniowy programowania całkowitoliczbowego: Zmienne decyzyjne: xij przyjmujące wartości 0 lub 1, przy czym xij=1 oznacza, że pracownik i wykona zadanie j Zmienne stanu: o 𝜑𝑖 = ∑𝑛𝑗=1 𝑥𝑖𝑗 ∙ 𝑡𝑗 - oznaczająca czas pracy pracownika i o 𝜓𝑗 = ∑𝑚 𝑖=1 𝑥𝑖𝑗 - oznaczająca liczbę pracowników przydzielonych do zadania j o 𝑆 = ∑𝑛𝑗=1 ∑𝑚 𝑖=1 𝑥𝑖𝑗 ∙ 𝑘𝑖𝑗 ∙ 𝑡𝑗 - całkowity czas wykonania wszystkich zadań z uwzględnieniem kompetencji Ograniczenia: o 𝑥𝑖𝑗 ∈ {0,1} o 𝜑𝑖 = ∑𝑛𝑗=1 𝑥𝑖𝑗 ∙ 𝑡𝑗 ≤ 𝑙𝑖 o 𝜓𝑗 = ∑𝑚 𝑖=1 𝑥𝑖𝑗 = 1 Funkcja celu: minimalizuj 𝑆 = ∑𝑛𝑗=1 ∑𝑚 𝑖=1 𝑥𝑖𝑗 ∙ 𝑘𝑖𝑗 ∙ 𝑡𝑗 Wymagania dodatkowe i ich realizacja za pomocą pliku z danymi Współczynniki kompetencji Typowe wartości współczynników kompetencji mieszczą się w przedziale od 90 do 110. Wyższe wartości zostaną wykorzystane dla pracownika fikcyjnego oraz do blokowania wykonywania niektórych zadań przez pewnych pracowników. Fikcyjny pracownik Najważniejszym obiektem związanym z prezentowanym rozwiązaniem jest fikcyjny pracownik. Obiekt ten jest pracownikiem mającym nieograniczony limit czasu pracy – wystarczy, by ten limit przekraczał sumę czasów normatywnych wszystkich zadań. Dodatkowo, aby rozwiązanie optymalizacyjne przydzielało zadania fikcyjnemu pracownikowi dopiero w ostateczności, ustalamy wartość współczynnika kompetencji na poziomie 200. Wprowadzenie fikcyjnego pracownika gwarantuje, że problem zostanie zawsze rozwiązany. Zadania przydzielone do fikcyjnego pracownika powinny być traktowane jako zadania niezrealizowane. Blokada zadań W sytuacjach praktycznych zdarza się, że pracownik nie może wykonywać pewnych zadań. Aby uwzględnić takie sytuacje ustawiamy wartość współczynnika kompetencji na poziomie przekraczającym 330. Model SciTe_GLPK Do rozwiązania zagadnienia przydziału zadań do pracowników z uwzględnieniem kompetencji wykorzystać można pakiet SciTe_GLPK. Model implementuje się w postaci pliku *.mod następująco: /* Problem przydziału zadan do pracowników z uwzglednieniem kompetencji Written in GNU MathProg by Bożena Staruch */ param m, integer, > 0; /* liczba pracowników */ param n, integer, > 0; /* liczba zadań */ set I := 1..m; /* zbiór pracowników */ set J := 1..n; /* zbiór zadań*/ param l{i in I}, >0; /* limit czasu pracownka i */ param t{j in J}, >0; /* normatywny czas wykonania zadania j */ param k{i in I, j in J}; /* współczynnik kompetencji do wykonania zadania j przez pracownika i */ var x{i in I, j in J}, >= 0, binary; /* x[i,j] = 1 oznacza, że zadanie j jest przydzielone do pracownika i, binary oznacza, że szukamy rozwiązania w zbiorze {0,1} */ s.t. phi{i in I}: sum{j in J} x[i,j]*t[j] <= l[i]; /* czas pracy pracownika nie może przekroczyć limitu */ s.t. psi{j in J}: sum{i in I} x[i,j] = 1; /* każde zadanie musi być przydzielone do dokładnie jednego pracownika */ minimize obj: sum{i in I, j in J} k[i,j] *t[j]* x[i,j]; /* celem jest przydział o najkrótszym czasie wykonania z uwzględnieniem kompetencji */ Generator danych Dane do testowania opisanego modelu pobierane są z generatora przykładów napisanego przez uczestnika seminarium Michała Polowczyka w ramach jego pracy magisterskiej. Przyjęto następujące wartości parametrów: li - domyślnie jest 480 minut, użytkownik może zmienić tę wartość tj - wartość jest losowana z zakresu, przy czym użytkownik może określić procent zadań o określonej długości. Rozważa się zadania o krótkie o średniej długości o długie kij – wartość losowana z zakresu od 90 do 110 przy czym użytkownik może określić o procent blokad c o uwzględnienie pracownika fikcyjnego („fajtłapa”) Zadania do wykonywania losowane są tak, aby całkowity czas wszystkich zadań nie przekraczał całkowitego limitu czasu pracy wszystkich pracowników oprócz pracownika fikcyjnego. Użytkownik może ustalić procentowe przekroczenie limitu czasu pracy. Generator uwzględnia też efekt seryjności. Testowane zestawy danych W celu ujednolicenia danych do testów wykonywanych przez różnych uczestników seminarium zostały wygenerowane zestawy danych według schematu umieszczonego w Tabeli 1. Wygenerowane zestawy Dane-prac-b10.rar oraz Dane-prac-b20.rar są umieszczone pod adresem http://wmii.uwm.edu.pl/~bostar/seminarium/ . pracownicy blokady 10% 20 20% 10% 40 20% 10% 100 20% modele seryjnosc długie 10%, krótkie 45%, bez serii średnie 45% seria długie 50%, krótkie 25%, bez serii średnie 25% seria długie 10%, krótkie 45%, bez serii średnie 45% seria długie 50%, krótkie 25%, bez serii średnie 25% seria długie 10%, krótkie 45%, bez serii średnie 45% seria długie 50%, krótkie 25%, bez serii średnie 25% seria długie 10%, krótkie 45%, bez serii średnie 45% seria długie 50%, krótkie 25%, bez serii średnie 25% seria długie 10%, krótkie 45%, bez serii średnie 45% seria długie 50%, krótkie 25%, bez serii średnie 25% seria długie 10%, krótkie 45%, bez serii średnie 45% seria długie 50%, krótkie 25%, bez serii średnie 25% seria Tabela 1. Opis zestawów danych nazwa ogólna p20b10d10bs p20b10d10s p20b10d50s p20b10d50bs p20b20d10bs p20b20d10s p20b20d50bs p20b20d50s p40b10d10bs p40b10d10s p40b10d50s p40b10d50bs p40b20d10bs p40b20d10s p40b20d50bs p40b20d50s p100b10d10bs p100b10d10s p100b10d50s p100b10d50bs p100b20d10bs p100b20d10s p100b20d50bs p100b20d50s