Zadanie optymalizacyjne + kod w LINGO
Marek: 1. Opis problemu
Do wykonania jest określony zbiór zadań P={p1, p2,…,pi,…,pLP} gdzie LP – liczba zadań.
Każde zadanie pi należy do P wykonywane jest przez określony czas li. i musi być
wykonane/powtórzone hi razy.
Do realizacji każdego powtórzenia zadania pi należy do P przydzielany jest
zasób/maszyna/pracownik ek należy do E E={e1, e2,…,ei,…,eLE} gdzie
LE – liczba dodatkowych zasobów/maszyn/pracowników. Zadanie pi należy do P nie może być
przydzielone do więcej niż ui zasobów/maszyn/pracowników.
Każdy zasób/maszyna/pracownik może być przysposobiony do wykonywania co najwyżej dk typów zadań
piP. Współczynnik gi,k=1 określa że w danej konfiguracji uzbrojenia (obecny stan)
do realizacji zadania pi należy do P jest przydzielony zasób/maszyna/pracownik ek należy do E.
Wymaga się aby przy realizacji zadań każdy zasób/maszyna /pracownik ek należy do E był
użyty przez co najmniej czas sk.
a nie więcej niż przez czas wk.
(wszędzie gdzie jest złe formatowanie to jest dolny indeks)
Pytania
Jak przy najmniejszej liczbie zmian możliwości realizacji wykonać wszystkie powtórzenie zadań.
Przykładowe dane
Liczba zadań – 20,
Liczba zasobów – 30,
Tabela 1
i li hi ui i li hi ui i li hi ui i li hi ui
1 2 10 4 6 6 20 5 11 3 15 3 16 4 40 4
2 4 10 4 7 5 20 5 12 4 15 3 17 6 30 4
3 6 20 4 8 7 30 5 13 2 30 3 18 8 20 4
4 4 20 4 9 9 40 5 14 5 20 3 19 9 20 4
5 5 15 4 10 8 10 5 15 7 35 3 20 9 10 4
Tabela 2
k sk wk dk k sk wk dk k sk wk dk
1 75 100 4 11 150 200 2 21 50 75 3
2 75 100 4 12 150 200 2 22 50 75 3
3 75 100 4 13 150 200 2 23 50 75 3
4 75 100 4 14 150 200 2 24 50 75 3
5 75 100 4 15 150 200 2 25 50 75 3
6 75 100 4 16 150 200 2 26 50 75 3
7 75 100 4 17 150 200 2 27 50 75 3
8 75 100 4 18 150 200 2 28 50 75 3
9 75 100 4 19 150 200 2 29 50 75 3
10 75 100 4 20 150 200 2 30 50 75 3
Formalizacje udalo mi sie wykonac, ale mam problem z napisaniem kodu w środowisku LINGO 20.0.
2. Formalizacja
Oznaczenia:
Zbiór zadań: P={p1, p2, …, pi, plp}, gdzie LP – liczba zadań;
Czas wykonywania zadania: li dla każdego zadania pi należącego do zbioru zadań P;
Liczba powtórzeń zadania: hi dla każdego zadania pi należącego do zbioru zadań P;
Zbiór zasobów/maszyn/pracowników: E = {e1, e2, ..., ei, ..., eLE}, gdzie LE − liczba
dostępnych zasobów/maszyn/pracowników;
Limit przydzielenia zasobów do zadania: ui dla każdego zadania pi należącego do zbioru zadań
P;
Limit typów zadań przysposobionych przez zasób: dk dla każdego zasobu ek należącego do zbioru
E;
Współczynnik przydzielenia zasobu do zadania: gi,k, gdzie gi,k=1 oznacza, że zasób ek należący
do E jest przydzielony do zadania pi należącego do zbioru zadań P;
Minimalny czas użycia zasobu: sk dla każdego zasobu ek należącego do zbioru E;
Maksymalny czas użycia zasobu: wk dla każdego zasobu ek należącego do zbioru E;
Formalizacja:
Zadanie pi należące do zbioru zadań P jest reprezentowane przez krotkę (pi, li, hi);
Zasób ek należący do zbioru E jest reprezentowany przez krotkę (ek, ui, dk, sk, wk);
Przydzielenie zasobu ek do zadania pi jest reprezentowane przez binarną zmienną decyzyjną
x(i,k), gdzie x(i,k) = 1 oznacza, że zasób ek jest przydzielony do zadania pi, a x(i,k) = 0 w
przeciwnym przypadku.
Ograniczenia:
Każde zadanie pi musi zostać wykonane dokładnie hi razy:
∑x(i,k) = hi dla każdego zadania pi należącego do zbioru zadań P.
Zadanie pi nie może być przydzielone do więcej niż ui zasobów:
∑x(i,k) ≤ ui dla każdego zadania pi należącego do zbioru zadań P.
Każdy zasób ek może zostać przypisany do co najwyżej dk typów zadań:
∑x(i,k) ≤ dk dla każdego zasobu ek należącego do zbioru E.
Każdy zasób/maszyna/pracownik ek należący do E musi być użyty przez co najmniej czas sk i nie
więcej niż czas wk:
sk ≤ ∑ (li * x(i,k)) ≤ wk dla każdego zasobu ek należącego do zbioru E.
Funkcja celu:
Celem jest minimalizacja liczby zmian w możliwości realizacji zadań. Możemy zdefiniować funkcję
celu w postaci:
min∑δ(ⅈ,k)
gdzie:
δ(i,k) to binarna zmienna decyzyjna, przyjmująca wartość 1, jeśli zasób ek należący do E został
zmieniony.
30 maj 17:53
X:
28 gru 03:48