Opis Solvera


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.

Cechy i ograniczenia

  1. maksymalnie 200 zmiennych decyzyjnych (może się to wydawać dużo, ale np. kilka problemów ćwiczeniowych musiałem uprościć, by dało się je rozwiązać przy użyciu Solvera),
  2. większość funkcji standardowych (m.in. jeżeli, max, min) nie może być używanych, jeśli zmienne decyzyjne (pośrednio bądź bezpośrednio) są argumentami tych funkcji; czyni to czasem Solver narzędziem dość niewygodnym (bo trzeba korzystać z różnych trików) lub wręcz niepraktycznym.

Podstawy korzystania i opcje

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.

Maksymalny czas

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 iteracji

Okreś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.

Tolerancja

Wartość 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 liniowy

Warto 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 nieujemne

Jeś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 skalowanie

Powinno 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 iteracji

Zaznaczamy tę opcję, jeśli po każdej iteracji chcemy widzieć próbne rozwiązanie (pokazuje się ono u dołu arkusza). 

Estymaty

Okreś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.

Pochodne

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.

Szukanie

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.