matematykaszkolna.pl
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ń piP. 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