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