PWSZ w Głogowie Excel - użycie dodatku Solver Dodatek Solver jest narzędziem używanym do numerycznej optymalizacji nieliniowej (szukanie minimum funkcji) oraz rozwiązywania równań nieliniowych. Przed pierwszym użyciem należy je zwykle aktywować zaznaczając pole wyboru dostępne w menu Narzędzia Dodatki (MS Office 2000) lub w opcji Dostosuj paski narzędzi Dodatki (MS Office 2007). Po pierwszej aktywacji narzędzie jest na stałe dostępne w menu Narzędzia (MS Office 2000) lub w menu Dane (MS Office 2007). Poniżej zademonstrowano użycie narzędzia Solver do rozwiązania zadania modelowania matematycznego (znalezienia modelu matematycznego opisującego jak najlepiej badane zjawisko, tzw. zadanie aproksymacji): W poniższej tabeli zestawiono wyniki badań dotyczących działania herbicydów na rośliny: t 0 7 15 21 35 49 64 70 y i 99.48 83.93 66.02 56.83 45.60 32.46 21.76 19.11 gdzie: t - czas, y - ilość herbicydu obecnego w czasie t. Zakładając, że funkcja aproksymująca dana jest jako y(t) = be kt znaleźć estymaty parametrów b i k tej funkcji przy założeniu kryterium błędu w postaci: J = n y i y i=1 Powyższe zadanie sprowadza sie do poszukiwania minimum funkcji J po dwóch zmiennych (b i k). Aby użyć narzędzia należy odpowiednio przygotować arkusz, przykładowo: gdzie: pola B12 C19 zawierają dane pola E9 F9 zawierają szukane parametry funkcji aproksymującej (zmienne niezależne funkcji celu J, której minimum względem tychże parametrów poszukujemy należy im nadać pewną początkową wartość numeryczną tutaj 1) 1
pola E12 E19 zawierają policzone wartości funkcji aproksymującej dla poszczególnych wartości zmiennej niezależnej t. Należy zwrócić uwagę na formułę wykorzystującą w odpowiedni sposób adresowanie względne i bezwzględne argumentów, np. formuła w komórce E12 ma postać: =$E$9*EXP(-$F$9*B12), co umożliwia jej właściwe przekopiowanie do komórek E13 E19. pola G12 G19 zawierają policzone wartości bezwzględne różnic pomiędzy wartościami danymi y i a wartościami y policzonymi dla funkcji aproksymującej (błędy). Formuła w komórce G12 ma postać: =MODUŁ.LICZBY(C12-E12) komórka G21 zawiera wartość funkcji celu J, której minimum względem wartości parametrów b i k funkcji aproksymującej poszukujemy. Formuła w komórce G21 ma postać: =SUMA(G12:G19) Mając dane: komórkę z wartością funkcji celu (G21), oraz komórki zawierające zmienne niezależne funkcji celu (E9 F9) uruchamiamy dodatek Solver: Okno dialogowe zawiera następujące elementy: Komórka celu adres komórki zawierającej formułę funkcji celu której minimum szukamy Równa pola pozwalające na wybór, czy szukamy minimum, maksimum lub konkretnej wartości funkcji celu (pomocne w rozwiązywaniu równań wtedy wartość funkcji celu jest równa zero) Komórki zmieniane adresy komórek zawierających wartości zmiennych niezależnych funkcji celu Warunki ograniczające pola pozwalające na wprowadzenie ograniczeń na wartości przyjmowane przez zmienne i funkcję celu (w rozwiązywanym zadaniu takich ograniczeń brak) 2
Opcje przycisk okna konfiguracyjnego parametrów używanej procedury minimalizacyjnej. Po wprowadzeniu danych jak na obrazku powyżej uruchamiamy proces numerycznego szukania rozwiązania (przycisk Rozwiąż) otrzymując: Znalezione rozwiązanie to: b = 98.93 i k = 0.02348, co odpowiada funkcji aproksymującej w postaci y(t) = 98.93e 0.02348t. Rozwiązanie wraz z odpowiednim wykresem widzimy poniżej: 3
Pamiętać należy, że numeryczne procedury minimalizacji, których używa narzędzie Solver to procedury minimalizacji lokalnej, a w związku z tym dla multimodalnej funkcji celu (posiadającej wiele minimów lokalnych) znalezione rozwiązanie zależy od warunków początkowych (początkowej wartości zmiennych niezależnych funkcji celu). W powyższym zadaniu możemy to zaobserwować nadając zmiennej k dużą wartość początkową (np. k=100) i ponownie uruchamiając Solvera rozwiązanie globalnie najlepsze nie zostanie znalezione! W celu demonstracji możliwości rozwiązywania zadań optymalizacyjnych z ograniczeniami rozpatrzmy poniższe zadanie programowania liniowego: Firma produkuje dwa produkty A i B, których rynek zbytu jest nieograniczony. Każdy z produktów wymaga obróbki na każdej z maszyn I, II, III. Czasy obróbki (w godzinach) dla każdego z produktów są następujące: I II III A 0.5 0.4 0.2 B 0.25 0.3 0.4 Tygodniowy czas pracy maszyn I, II, III wynosi odpowiednio 40, 36 i 36 godzin. Zysk ze sprzedaży jednej sztuki A i B stanowi odpowiednio 500 i 300 PLN. Określić tygodniowe normy produkcji wyrobów A i B maksymalizujące zysk. W celu rozwiązania zadania należy zdefiniować problem optymalizacyjny (funkcja celu której minimum/maksimum szukamy + ew. ograniczenia na wartości, które mogą przyjmować zmienne i sama funkcja celu). Jeśli jako x 1 i x 2 oznaczymy odpowiednio ilość sztuk wyrobu A i B produkowane tygodniowo, to funkcja celu (zysk) będzie zdefiniowana jako: f = 500x 1 + 300x 2 max Uwzględniając skończony tygodniowy czas pracy każdej z maszyn dostajemy ograniczenia: Dla maszyny I: 0.5x 1 + 0.25x 2 40 Dla maszyny II: 0.4x 1 + 0.3x 2 36 Dla maszyny III: 0.2x 1 + 0.4x 2 36 4
Dodatkowo oczywiście mamy też: x 1, x 2 0. Rozwiązanie zadania w Excelu, podobnie jak w poprzednim przykładzie, wymaga odpowiedniego przygotowania arkusza: gdzie: pola B4 C4 zawierają szukane wartości produkcji towarów A i B (zmienne niezależne funkcji celu f, której maksimum względem tychże parametrów poszukujemy należy im nadać pewną początkową wartość numeryczną tutaj 1) pole E4 zawiera formułę liczącą wartość funkcji celu f w postaci: =500*B4+300*C4. Pola B8 D8 zawierają formuły liczące lewe strony ograniczeń. Przykładowo, formuła w komórce B8 ma postać: =0,5*B4+0,25*C4 Następnie uruchamiamy dodatek Solver i ustawiamy parametry: Dodajemy ograniczenia (przycisk Dodaj w ramce Warunki ograniczające ), np. dla ograniczenia 1 mamy: Otrzymując: 5
W przypadku zadania, gdzie funkcja celu i ograniczenia są liniowe względem niewiadomych, warto przed uruchomieniem procesu szukania rozwiązania uruchomić okno konfiguracyjne (przycisk Opcje ): i zaznaczyć opcję Przyjmij model liniowy. Dodatkowo w przypadku naszego zadania zaznaczamy opcję Przyjmij nieujemne (co ogranicza poszukiwanie rozwiązania do nieujemnych wartości zmiennych; to samo można osiągnąć dodając dwa dodatkowe ograniczenia). Możemy w końcu rozwiązać zadanie, otrzymując: Mamy zatem: x 1 = 60, x 2 = 40, maksymalny zysk f max = 42000 i spełnione wszystkie ograniczenia. 6