metoda_graficzna_spr..

Transkrypt

metoda_graficzna_spr..
Metody Optymalizacji w Ekonomii
Metoda graficzna
Artur Angiel 157797
Piotr Jasiak 157853
Szymon Wawrzyniak 157986
Czwartek, 10:15
1
1
Wstęp
Celem niniejszego dokumentu jest przedstawienie wyników pracy nad programem obliczającym wartość funkcji celu, planowanie rozmiaru produkcji produktów w przypadku dwóch zmiennych decyzyjnych x1 i x2 .
2
Rozwiązanie
Program, który jest przedmiotem tego sprawozdania, rozwiązuje tylko jeden
specyficzny przypadek, podany poniżej:
3x1 + 2x2 → max
Przy następujących założeniach:
x1 + 3x2 ¬ 45
2x1 + 3x2 ¬ 40
4x1 + x2 ¬ 76
x1 , x2 ­ 0
Wynikiem działania programu jest wykres na rysunku 1.
Rysunek 1: wynik uruchomienia programu
3
Dokumentacja zewnętrzna
Obsługa programu przez użytkownika ogranicza się do uruchomienia go. Po
uruchomieniu wyświetla się wykres wraz legendą jak w sekcji 2. Jedyną funk2
cjonalność daje tutaj biblioteka JFreeChart 1 , za pomocą której można zmieniać
parametry wyświetlania.
4
Dokumentacja wewnętrzna
Program, jak napisano wyżej, działa tylko na z góry sprecyzowanych danych,
zatem nie ma możliwości podania innych ograniczeń. Za wyświetlenie wykresu
odpowiada biblioteka JFreeChart. Wykresy poszczególnych równań rysowane są
na podstawie dwóch punktów dla każdego z nich. Te punkty to miejsca przecięć
z osiami x1 i x2 . Za obliczenie tych miejsc odpowiada funkcja, zadeklarowana
następująco:
private static double[] calculateZeros(double a, double b,
double c);
Powyższa funkcja jako argumenty przyjmuje współczynniki przy x1 i x2
oraz liczbę, od której wartości funkcji mają być mniejsze lub równe. Funkcja ta
zwraca dwuelementową tablicę, w której element pod indeksem 0 jest punktem
przecięcia wykresu z osią x1 , natomiast element pod indeksem 1 jest punktem
przecięcia wykresu z osią x2 .
W celu znalezienia argumentów, a co za tym idzie wartości, funkcji celu,
obliczany jest punkt, w którym funkcja celu przyjmuje wartość maksymalną.
Tym punktem jest taki skrajny punkt wielokąta ograniczonego wykresami, którego wartości x1 i x2 są maksymalne. Za odnalezienie tego punktu odpowiada
funkcja:
private static double[] solveEquationsSystem(double a1,
double b1, double c1, double a2, double b2, double c2);
Podobnie jak funkcja calculateZeros(); przyjmuje wartości stojące przy
argumentach i liczby, od których wartości funkcji mają być równe. Jedyną różnicą jest to, że należy podać wartości dwóch funkcji, bo ma być rozwiązany układ
równań. Zwracana jest dwuelementowa tablica z wartościami szukanego punktu.
Następnie dla niego liczona jest wartość funkcji celu i zostaje ona narysowana
na wykresie.
1 http://www.jfree.org/jfreechart/
3

Podobne dokumenty