MODEL PRZYDZIAŁU ZADAŃ DO PRACOWNIKÓW W OPARCIU O

advertisement
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
Download