Solver jest tzw. dodatkiem dostarczanym przez firmę Frontline System (nie jest więc produktem Microsoftu). Narzędzie to świetnie nadaje się do rozwiązywania małych i średnich problemów optymalizacyjnych, przede wszystkim liniowych. Pisząc "małe i średnie" mam na myśli problemy o niewielkiej liczbie zmiennych decyzyjnych (do 200), bo takie ograniczenie ma standardowy Solver (więcej o ograniczeniach - w dalszej części). Frontline System jest producentem różnych komercyjnych wersji Solvera m.in. Premium Solvera, który - dzięki wbudowanemu algorytmowi genetycznemu - radzi sobie z problemami nie do rozwiązania przy użyciu standardowego Solvera.
Podstawy korzystania przedstawiono w przykładowym problemie - optymalizacji
portfela inwestycyjnego.
Wyjaśnienia wymagają zaawansowane opcje Solvera, które dostępne są po naciśnięciu
przycisku Opcje.
Czas w sekundach, który dajemy Solverowi na znalezienie rozwiązania; jeśli go nie znajdzie mamy możliwość pokazania próbnego rozwiązania albo kontynuacji obliczeń. Można tu podać wartość MaxLongInt, co odpowiada mniej więcej 68 latom obliczeń. Obliczanie zawsze można przerwać naciskając klawisz ESC.
Liczba iteracjiOkreśla maksymalną liczbę iteracji dla pojedynczego problemu (w każdej iteracji generowane jest nowe rozwiązanie). Uwagi - patrz wyżej.
DokładnośćOkreśla dokładność spełnienia warunków ograniczających; wartość domyślna 0,000001 oznacza, że np. wartość zmiennej A równa 0,0000001 spełnia warunek ograniczający a>=0.
TolerancjaWartość T% oznacza, że jeśli podczas rozwiązywania problemów całkowitoliczbowych Solver znajdzie rozwiązanie o wartości nie odbiegającej o T% od całkowitej przyjmie je za rozwiązanie problemu. Jeśli chcemy mieć pewność, że otrzymane rozwiązanie jest liczbą całkowitą należy Tolerancję ustawić na 0% (może to znacznie wydłużyć czas obliczeń!).
ZbieżnośćParametr określa warunek zatrzymania, jeśli poprawa rozwiązania następuje bardzo powoli. Ściślej biorąc Solver zatrzymuje się, jeśli względna zmiana wartości funkcji celu podczas ostatnich 5 iteracji jest mniejsza niż zadeklarowana wartość parametru.
Przyjmij model liniowyWarto wybrać tę opcję, jeśli funkcja celu i ograniczenia są liniowe, gdyż znacznie przyśpiesza to obliczenia (używana jest wtedy metoda Simplex). Należy jednak pamiętać, że Solver testuje, czy założenia liniowości modelu są spełnione i - jeśli tak nie jest - przerywa obliczenia. Co gorsza, nawet jeśli model jest liniowy, ale zmienne bardzo różnią się zakresem wartości (patrz opcja Automatyczne skalowanie), Solver może uznać model za nieliniowy.
Przyjmij nieujemneJeśli wszystkie zmienne mają podane dolne ograniczenia, opcja ta nie działa. Jednak często zapomina się, że zmienne nie mogą mieć wartości ujemnych (np. wielkość produkcji), bo rozwiązanie traci sens. Wygodnie jest więc zaznaczyć tę opcję, zamiast wpisywać wszystkie dolne ograniczenia typu x>=0.
Automatyczne skalowaniePowinno być wybrane, jeśli ograniczenia lub zmienne w funkcji celu bardzo różnią się zakresem wartości np. jedna podawana w milionach zł, inna - w procentach. Może to spowodować, że Solver nie będzie w stanie znaleźć rozwiązania, szczególnie jeśli wybrano opcję Przyjmij model liniowy.
Pokaż wyniki iteracjiZaznaczamy tę opcję, jeśli po każdej iteracji chcemy widzieć próbne rozwiązanie (pokazuje się ono u dołu arkusza).
EstymatyOkreśla sposób uzyskania początkowych wartości estymat
podstawowych zmiennych w każdym jednowymiarowym procesie poszukiwania.
Styczna
Wykorzystuje ekstrapolację liniową na podstawie wektora stycznego.
Kwadratowa Wykorzystuje
ekstrapolację kwadratową. Daje lepsze wyniki w przypadku zadań wyraźnie
nieliniowych.
Określa sposób różniczkowania przy wyznaczaniu pochodnej cząstkowej
dla funkcji celu i funkcji ograniczeń.
W przód Właściwa
w przypadku większości zadań, w których wartości ograniczeń zmieniają się
stosunkowo wolno.
Centralne Należy stosować
w zadaniach, w których wartości ograniczeń zmieniają się szybko, szczególnie
w pobliżu granic. Opcja ta wydłuża obliczenia, ale może być skuteczna,
kiedy pojawia się komunikat, że nie można poprawić rozwiązania.
Określa metodę używaną w iteracji do wyznaczania kierunku
poszukiwania.
Newtona Wykorzystuje metodę
Newtona, która zwykle wymaga większego obszaru pamięci, ale mniejszej liczby
iteracji niż metoda gradientu sprzężonego.
Gradientu sprzężonego
Wymaga mniejszego obszaru pamięci, ale większej liczby iteracji niż metoda
Newtona dla zapewnienia tej samej dokładności. Z metody tej należy korzystać
w przypadku rozbudowanych zadań i małego obszaru dostępnej pamięci, a także,
kiedy kolejne iteracje wykazują niewielki postęp.