1. Przekształcenie zadania programowania liniowego w model
Transkrypt
1. Przekształcenie zadania programowania liniowego w model
P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 1 1. Przekształcenie zadania programowania liniowego w model zapisany w arkuszu Excela Przykładowe zadanie programowania liniowego Rozwiązać następujące zadanie programowania liniowego wykorzystując Excela oraz dodatek Solver. x1 , x2 , x3 - zmienne decyzyjne 7 x1 + 9 x 2 + 4,6 x 3 → max funkcja celu przy ograniczeniach 8 x1 + 7 x 2 + 4 x 3 ≤ 9900 2,5 x1 + 2 x 2 + 0,9 x 3 ≤ 2800 ograniczenia funkcyjne 1x1 + 10 x2 + 4,1x3 = 11700 4,3 x1 + 4 x2 + 9 x3 ≥ 12100 x1 ≥ 0, x 2 ≥ 0, x3 ≥ 0 - warunki nieujemności zmiennych Podstawową zasadą, na jakiej jest oparte przenoszenie do Excela modeli programowania liniowego i nieliniowego jest konieczność podjęcia przez użytkownika decyzji, które komórki w arkuszu będą rolę zmiennych. Wg tej zależności („komórka-zmienna”) tworzone są formuły oraz wpisy w polach dodatku Solver. Przykładowy schemat rozmieszczenia danych w Excelu dla zadania programowania liniowego Przyjmujemy, że zmiennym decyzyjnym odpowiadają w arkuszu następujące komórki: A2 - x1 , B2 - x2 , C2 - x3 . Komórki pełniące rolę zmiennych zostały wypełnione zerami. Nie jest to jednak konieczne – komórki te mogą pozostać puste, ponieważ zostaną potraktowane przez Excela tak, jakby zawierały zera. W arkuszu umieszczone są także parametry tzn. liczby będące współczynnikami funkcji (A4:C4) celu oraz warunków ograniczających (A6:C9, E6:E9). Rozmieszczenie to może być w zasadzie dowolne, ale jego odpowiedni dobór ma bardzo duże znaczenie dla wygody wprowadzania formuł. Ponieważ współczynniki funkcji celu znajdują się w komórkach A4, B4 i C4, a zatem odpowiednikiem funkcji celu 7 x1 + 9 x 2 + 4,6 x3 będzie formuła =A4*A2+B4*B2+C4*C2 Zastosujemy jednak prostszą we wprowadzaniu (zwłaszcza, jeżeli użyty zostanie kreator funkcji0 równoważną formułę =SUMA.ILOCZYNÓW(A4:C4;A2:C2). P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 2 Jak widać, funkcja celu jest podobna do lewych stron warunków ograniczających (wszystkie są sumami iloczynów liczb i zmiennych). Dzięki temu formuła reprezentująca w arkuszu funkcję celu zostanie wykorzystana do stworzenia, przy pomocy kopiowania, formuł reprezentujących lewe strony warunków ograniczających W tym celu formuła ta musi być wpisana w postaci =SUMA.ILOCZYNÓW(A4:C4;A$2:C$2) Dzięki zastosowaniu adresacji względnej („zablokowania” przy pomocy znaków $ odwołań do zakresu A2:C2) po skopiowaniu D4 do D6:D9 otrzymamy formuły oznaczające lewe strony warunków ograniczających. W tabeli poniżej jest podane są zależności pomiędzy formułami matematycznymi a „Excelowymi”. Informacja na temat formuł: wprowadzanej i kopiowanych Formuły „dosłowne” tzn. takie, które należałoby wpisać przy literalnym „przełożeniu” zapisu matematycznego na składnię Excela 7 x1 + 9 x 2 + 4,6 x3 =A4*A2+B4*B2+C4*C2 8 x1 + 7 x 2 + 4 x 3 =A6*A2+B6*B2+C6*C2 2,5 x1 + 2 x 2 + 0,9 x 3 =A7*A2+B7*B2+C7*C2 1x1 + 10 x 2 + 4,1x 3 =A8*A2+B8*B2+C8*C2 4,3 x1 + 4 x 2 + 9 x 3 =A9*A2+B9*B2+C9*C2 Komórka Zapis matematyczny D4 D6 D7 D8 D9 Formuły z SUMA.ILOCZYNÓW odpowiadające formułom „dosłownym” Uwagi =SUMA.ILOCZYNÓW(A4:C4;A$2:C$2) Wprowadzona przez użytkownika =SUMA.ILOCZYNÓW(A6:C6;A$2:C$2) Otrzymana przez kopiowanie z D4 =SUMA.ILOCZYNÓW(A7:C7;A$2:C$2) Otrzymana przez kopiowanie z D4 =SUMA.ILOCZYNÓW(A8:C8;A$2:C$2) Otrzymana przez kopiowanie z D4 =SUMA.ILOCZYNÓW(A9:C9;A$2:C$2) Otrzymana przez kopiowanie z D4 P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 3 Widok arkusza po skopiowaniu D4 na D6:D11. Zarówno komórka z funkcją celu (D4) jak i komórki z lewymi stronami warunków ograniczających (D6, D7, D8, D9, czyli zakres D6:D9) wyświetlają wartości zerowe, ponieważ komórki pełniące rolę zmiennych („iksów”) zawierają wyłącznie zera. Widok formuł w arkuszu otrzymanych po skopiowaniu. Pełna lista zależności pomiędzy zapisem matematycznym a modelem Excelowym zapisana przy pomocy adresów komórek wygląda następująco: A2 x1 , D4 B2 x2 , C2 (A2:C2) x3 - zmienne decyzyjne 7 x1 + 9 x 2 + 4,6 x 3 → max funkcja celu przy ograniczeniach D6 8 x1 + 7 x 2 + 4 x 3 ≤ 9900 E6 D7 2,5 x1 + 2 x 2 + 0,9 x 3 ≤ 2800 E7 ograniczenia funkcyjne 1x1 + 10 x 2 + 4,1x 3 ≤ 11700 E8 D9 4,3 x1 + 4 x 2 + 9 x 3 ≤ 12100 E9 D8 (D6:D8) A2 B2 C2 x1 ≥ 0, x 2 ≥ 0, x3 ≥ 0 (E6:E8) (A2:C2) warunki nieujemności zmiennych Wszystkie niezbędne liczby oraz formuły zostały wprowadzone do arkusza. Należy teraz uruchomić dodatek optymalizacyjny Solver (Excel 2003 i starsze menu Narzędzia-Solver, Excel 2007 i nowsze wstążka DaneSolver). P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 4 Opis wprowadzania danych do Solvera - Excel w wersjach do 2007 włącznie Główne okno Solvera (Solver-Parametry) po uruchomieniu Solvera Pole Komórka celu w nowootwartym oknie Solvera Solver- Parametry jest zawsze ustawiona na komórkę bieżącą (na zrzucie ekranu G7). Z powyższego powodu najwygodniej jest ustawić wcześniej jako komórkę bieżącą komórkę pełniącą rolę funkcji celu (tzn. zawierającą odpowiednią formułę). W przypadku niniejszego zadania będzie to komórka D4. Następnie należy wybrać typ optymalizacji tzn. maksymalizację funkcji celu w opcji Równa. Ponieważ Maks jest ustawieniem domyślnym tej opcji, można ja pominąć. W pole Komórki zmieniane należy wpisać zakres A2:C2. Wygląd okna Solver-Parametry po wprowadzeniu w/w danych jest przedstawiony na rys. 7. Główne okno Solvera (Solver-Parametry) z ustawionymi polami Komórka celu, Równa i Komórki zmieniane. Warunki ograniczające wpisuje się w oddzielnym oknie Dodaj warunek ograniczający otwieranym po kliknięciu Dodaj w oknie Solver-Parametry. Uwaga! Pole Warunki ograniczające jest tylko listą – nie można w nie nic wpisywać! Uwaga! Gdy jest otwarte okno Dodaj warunek ograniczający (lub analogiczne Zmień warunek ograniczający), wtedy główne okno Solvera (Solver-Parametry) jest niewidoczne. Uwaga! Można wpisywać adresy bez dolarów (znaki $ i tak zostaną przez Excela dostawione, podobnie jak znaki = w polu Warunek ograniczający). P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 5 Nowootwarte okno Dodaj warunek ograniczający. Wpisywanie dwóch warunków D6<=E6, D7<=E7 „wspólnie”. Nierówność <= jest ustawieniem domyślnym więc nie trzeba nic zmieniać w środkowym polu i można przejść do wpisywania prawej strony (pole Warunek ograniczający). Ten zapis odpowiada grupie warunków D6<=E6, D7<=E7, Po kliknięciu Dodaj otwiera się ponownie okno dodawania warunków. Należy wpisać warunek D8=E8. Uwaga – trzeba pamiętać o wyborze równości = (domyślne ustawienie to <=). Warunek D8=E8. Po kliknięciu Dodaj otwiera się ponownie okno dodawania warunków. Należy wpisać warunek D9>=E9. Uwaga – trzeba pamiętać o wyborze nierówności >= (domyślne ustawienie to <=). P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu Warunek D9=E9. Po kliknięciu Dodaj otwiera się ponownie okno dodawania warunków. Należy wpisać warunki nieujemności zmiennych A2:C2>=0 „wspólnie”. Uwaga – trzeba pamiętać o wyborze nierówności >= (domyślne ustawienie to <=) Ten zapis odpowiada grupie warunków A2>=0, B2>=0, C2>=0. Warunki te są wpisywane jako ostatnie i zatwierdzone przez OK. Kompletne ustawienia. Warunki ograniczające sortują się alfabetycznie, niezależnie od kolejności wpisywana, Należy teraz kliknąć w Rozwiąż, a gdy pojawi się okno jak poniżej, kliknąć OK. 6 P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 7 Widok po wykonaniu obliczeń Solverem. Rozwiązanie Optymalna (maksymalna) wartość funkcji celu to 11925,92405. Optymalne wartości zmiennych (tzn. wartości, dla których osiągnięte zostało maksimum) to x1* = 85,1767, x 2* = 766,645 oraz x3* = 963,0178 P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu Dodatek - opis wprowadzania danych do Solvera - Excel w wersjach 2010 i nowsze W porównaniu z poprzednimi wersjami, w Excelu 2010 w Solverze został znacznie zmieniony interfejs użytkownika. Poniżej dla porównania umieszczono zrzuty ekranów Solvera z Excela 2007 i 2010. 8 P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 9 Wykaz najważniejszych różnic między oknami Solvera Opis Nazwa okna głównego Adres komórki zawierającej formułę z funkcją celu lub ewentualnie jedną z komórek zmienianych Rodzaj optymalizacji: maksymalizacja, minimalizacja, ustalona wartość liczbowa funkcji celu Deklaracja zakresu/zakresów komórek pełniących rolę zmiennych „Odgadnięcie” zakresu/zakresów komórek pełniących rolę zmiennych na podstawie formuły z funkcją celu Lista warunków ograniczających Otwiera okno dodawania nowego warunku ograniczającego Otwiera okno edycji istniejącego warunku ograniczającego (wymaga wybrania go na liście) Usuwa z listy istniejący warunek ograniczający (wymaga wybrania go na liście) Otwiera okno opcji, umożliwiające zmianę domyślnych ustawień wpływających na proces obliczeń Skasowanie wszystkich danych wprowadzonych przez użytkownika oraz przywrócenie opcji domyślnych Zapis modelu z Solvera w postaci grupy formuł w arkuszu Excel 2007 i wcześniejsze Excel 2010 i póżniejsze Solver-Parametry Parametry dodatku Solver Komórka celu Ustaw cel Uwagi Domyślne ustawienie tego pola to komórka bieżąca Równa Na Domyślne ustawienie to Maks Komórki zmieniane Przez zmienianie komórek zmiennych brak Brak ustawienia domyślnego Odgadnij Warunki ograniczające Dodaj Zmień Podlegające ograniczeniom Jest to lista służącą tylko do wyświetlania, a nie do wpisywania/edycji Dodaj W Excelu 2010 zmieniono okno dodawania warunków ograniczających Zmień W Excelu 2010 zmieniono okno edycji warunków ograniczających Usuń Usuń Opcje Opcje Przywróć wszystko Resetuj wszystko Dostępne jako Zapisz model/ Załaduj model w oknie opcji) Ustawienie nieujemności wszyst- Dostępne jako Przyjmij nieukich zmiennych bez dodawania sto- jemne w oknie opcji; domysownego warunku ograniczającego ślnie niezaznaczone - brak do listy nieujemności wszystkich zmiennych) Typ algorytmu używanego do obli- Brak jawnego ustawienia czeń (przełączenie na algorytm simpleks poprzez zaznaczenie opcji Przyjmij model liniowy w oknie Solver-Opcje) Najczęściej „odgadnięcie” jest błędne W Excelu 2010 zmieniono okno opcji Załaduj/zapisz Ustaw wartości nieujemne dla zmiennych bez ograniczeń (domyślnie zaznaczone - ustawiona nieujemność wszystkich zmiennych) Wybierz metodę rozwiązywania (ustawienie domyślne jest opisane jako Nieliniowa GRG) Ustawienie domyślne to algorytm „uniwersalny” GRG, a alternatywą jest algorytm simpleks dla programowania liniowego. W Excelu 2010 dodano do wyboru tzw. algorytm ewolucyjny Porównanie wyglądu okien dodawania/edycji warunków ograniczających Excel 2007 i wcześniejsze Okno dodawania nowych warunków ograniczających Okno edycji istniejących warunków ograniczających Excel 2010 i 2013 P. Kowalik, Laboratorium badań operacyjnych: wstęp do rozwiązywania zadań programowania liniowego w Excelu 10 Porównanie okna opcji Solvera dla Excela 2007 i wcześnieszych (pojedyncze okno – zrzut w lewym górnym rogu strony) oraz dla Excela 2010 i późniejszych (pozostałe zrzuty – okno z trzema zakładkami).