3. Zadanie optymalnej diety
Transkrypt
3. Zadanie optymalnej diety
P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 1 3. Zadanie optymalnej diety Zadanie to opisuje sytuację decyzyjną, w której trzeba dokonać wyboru najtańszej mieszanki produktów spożywczych (komponentów) zwanej dietą, spełniającej jednocześnie normy odnośnie spożycia składników odżywczych w pewnym ustalonym okresie (najczęściej jednego dnia). Choć nie ma to znaczenia z punktu widzenia obliczeń, z praktycznego punktu widzenia ten model nadaje się raczej do układania planów żywienia dla zwierząt niż dla ludzi (ze względu na pominięcie kwestii walorów smakowych oraz nieuchronną monotonię tak ułożonej diety). Wyboru diety można dokonać spośród n różnych dostępnych produktów spożywczych. W rozważanym okresie należy zapewnić spożycie co najmniej minimalnych wymaganych ilości m różnych składników odżywczych (takich jak białko, węglowodany, tłuszcze, witaminy, sole mineralne itp. a także odpowiednią ilość kalorii) zawartych w produktach. Zakładamy, że koszty jednostkowe produktów są stałe i nie zależą od wielkości zakupu. Dane są: • aij , i= 1,...,m, j = 1,...,n - zawartość i-tego składnika odżywczego na jednostkę j-tego produktu (np. ilość g białka na kg kiszonki w mieszance paszowej, g węglowodanów na kg dżemu, dag tłuszczu na kg mięsa, mg witaminy C na litr soku itp.) ; • bi , i=1,...,m - minimalne wymagane spożycie i-tego składnika odżywczego w rozważanym okresie (liczone np. w mg, g, kg, ml, l, cm3, kcal); • c j , j = 1,...,n - cena jednostkowa dla j-tego produktu, liczona w PLN/l, PLN/kg, PLN/m3, PLN/t itp. – (zamiast PLN może być dowolna inna waluta, ale dla wszystkich produktów jednakowa). Należy zaplanować, które produkty spożywcze i w jakich ilościach należy zakupić aby zminimalizować łączne koszty ich zakupu w rozważanym okresie, dostarczając przy tym co najmniej tyle składników odżywczych, ile przewidują normy minimalnego wymaganego spożycia. Zmiennymi decyzyjnymi w tym zagadnieniu są zatem ilości produktów spożywczych: • xj - wielkość zakupu i spożycia j-ego produktu spożywczego, a ogólny model zagadnienia można zapisać następująco: c1 x1 + c 2 x 2 + ... + cn xn → min - łączny koszt zakupu produktów ( przy ograniczeniach rzeczywiste spożycie składników odżywczych a11 x1 + a12 x 2 + ... + a1n x n a 21 x1 + a 22 x 2 + ... + a 2 n x n minimalne wymagane spożycie składników odżywczych b1 b2 ≥ ≥ ⋮ a m1 x1 + a m 2 x 2 + ... + a mn x n ⋮ bm ≥ x1 ≥ 0 , x 2 ≥ 0 ,...., x n ≥ 0 ilości produktów spożywczych nie mogą być ujemne Jeżeli istnieją górne normy spożycia składników, to wtedy należy dodać następującą grupę warunków ograniczających rzeczywiste spożycie składników odżywczych a11 x1 + a12 x2 + ... + a1n xn maksymalne dopuszczalne spożycie składników odżywczych ≤ ⋮ am1 x1 + am 2 x2 + ... + amn xn ≤ d1 ⋮ dm gdzie d i - maksymalne dopuszczalne spożycie i-tego składnika odżywczego w rozważanym okresie (i=1,...,m), (liczone np. w mg, g, kg, ml, l, cm3, kcal); P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 2 Zadanie - optymalna dieta 1) Dla potrzeb tuczu świń należy sporządzić najtańszą mieszankę paszową składającą się z (co najwyżej) sześciu dostępnych produktów (zbóż, roślin strączkowych oraz zielonki - liści buraka pastewnego). Przy planowaniu mieszaki należy uwzględnić dzienne zapotrzebowanie na 4 składniki odżywcze oraz na kalorie. Dane liczbowe do zadania (z normami żywieniowymi dla 1 świni) znajdują się w tabeli. Produkty spożywcze liście jęczmień kukurydza pszenica rzepak soja buraków Minimalne (kg) (kg) (kg) (kg) (kg) pastew.(kg) wymagane ceny jednostkowe ilości (PLN/kg) 0,30 0,90 0,50 0,45 0,05 0,80 składników Składniki odżywcze Jednostkowe zawartości składników odżywczych białko (g/kg) 110 95 121 330 19 400 450 g tłuszcz (g/kg) 19 41 17 42 4 21 130 g wapń (g/kg) 0,7 0,5 1,2 3,7 1 3,6 25 g fosfor (g/kg) 3,2 3 3,5 4,5 0,3 5,7 17 g kalorie (kcal/kg) 2170 3420 3280 4530 90 3057 7300 kcal 2) Sprawdzić jak się zmieni wynik, jeżeli wprowadzimy normy maksymalnego dopuszczanego spożycia składników dane poniżej. Składniki odżywcze Maksymalne dopuszczalne ilości składników białko (g/kg) 780 g tłuszcz (g/kg) 210 g wapń (g/kg) 40 g fosfor (g/kg) 30 g kalorie (kcal/kg) 10100 kcal 3) Sprawdzić jak zmieni się wynik, jeżeli górna norma spożycia białka zostanie zmniejszona do 700g. Wskazówka: w punkcie 2) model należy uzupełnić o warunki ograniczające typu „ ≤ ” jak podano we wzorach ogólnych. Model matematyczny do zadania (wariant podstawowy – tylko dolne normy spożycia składników) x1 , x2 , x3 , x 4 , x5 , x6 - ilości produktów spożywczych (komponentów diety) w kg (odpowiednio jęczmienia, kukurydzy, rzepaku, liści buraków pastewnych i soi) wchodzących w skład mieszanki (paszy) 0,3x1 + 0,9 x 2 + 0,5 x3 + 0,45 x 4 + 0,05 x5 + 0,8 x6 → min (funkcja celu – łączny koszt zakupu produktów spożywczych – komponentów diety) przy ograniczeniach rzeczywiste spożycie składników odżywczych minimalne wymagane dzienne spożycie składników odżywczych 110 x1 + 95 x 2 + 121x 3 + 330 x 4 + 19 x 5 + 400 x 6 19 x1 + 41x 2 + 17 x3 + 41x 4 + 4 x 5 + 21x 6 450 ≥ 130 ≥ 0,7 x1 + 0,5 x 2 + 1,2 x 3 + 3,7 x 4 + 1x5 + 3,6 x 6 25 ≥ 3,2 x1 + 3x 2 + 3,5 x3 + 4,5 x 4 + 0,3 x5 + 5,7 x 6 ≥ 17 2170 x1 + 3420 x2 + 3280 x3 + 4530 x4 + 90 x5 + 3057 x6 ≥ 7300 x1 ≥ 0 , x 2 ≥ 0 , x3 ≥ 0 , x 4 ≥ 0 , x 5 ≥ 0 , x 6 ≥ 0 - ilości produktów spożywczych nie mogą być ujemne P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 3 Funkcja celu i pierwszy z warunków ograniczających „rozpisane” z jednostkami. 0,3 PLN PLN PLN PLN PLN PLN x1 kg J + 0,9 x 2 kg K + 0,5 x3 kg P + 0,45 x 4 kg R + 0,05 x5 kg L + 0,8 x6 kg S kg J kg K kg P kg R kg L kg S gb gb gb x1 kg J + 95 x2 kg K + 121 x3 kg P + kg J kg K kg P gb gb gb 330 x4 kg R + 19 x5 kg L + 400 x6 kg S ≥ 450 g b kg R kg L kg S 110 g b oznacza gramy białka Rozwiązywanie zadania: pierwszy etap – „klasyczne” zadanie optymalnej diety. Wprowadzanie danych do komórek arkusza Jak zwykle, użytkownik musi zdecydować, które komórki arkusza będą pełnić rolę zmiennych decyzyjnych („iksów”). W rozwiązywanym właśnie zadaniu komórkami pełniącymi rolę zmiennych decyzyjnych będą B2, C2, D2, E2, F2, G2 czyli w skrócie zakres (tablica) B2:G2. Odpowiedniość pomiędzy komórkami a zmiennymi jest następująca: B2 - x1 , C2 - x 2 , D2 - x3 , E2 - x 4 , F2 - x5 , G2 - x6 . Rozmieszczenie danych dla zadania optymalnej diety Ponieważ współczynniki funkcji celu znajdują się w komórkach B4, C4, D4, E4, F4, G4, zatem odpowiednikiem funkcji celu 0,3x1 + 0,9 x 2 + 0,5 x3 + 0,45 x 4 + 0,05 x5 + 0,8 x 6 będzie formuła =B4*B2+C4*C2+D4*D2+E4*E2+F4*F2+G4*G2 Zastosujemy jednak prostszą we wprowadzaniu (zwłaszcza, jeżeli użyty zostanie kreator funkcji z menu Wstaw-Funkcja) równoważną formułę =SUMA.ILOCZYNÓW(B4:G4;B2:G2). Analogicznie, jak na poprzednim laboratorium, funkcja celu jest podobna do lewych stron warunków ograniczających (wszystkie są sumami iloczynów liczb i zmiennych). Dzięki temu formuła reprezentująca w arkuszu funkcję celu zostanie wykorzystana do stworzenia, przy pomocy kopiowania, formuł reprezentujących lewe strony warunków ograniczających W tym celu formuła ta musi być wpisana w postaci =SUMA.ILOCZYNÓW(B4:G4;B$2:G$2) P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 4 Kolejnym etapem jest skopiowanie komórki H4 na zakres H6:H10. Dzięki właściwościom kopiowania nie trzeba bowiem wprowadzać 6 formuł (funkcja celu + 5 formuł na lewe strony warunków ograniczających). Wystarczy wpisać formułę (odpowiadającą funkcji celu) jeden raz, a pozostałe formuły „wygenerować” poprzez kopiowanie. Zapis matematyczny Formuły „dosłowne” tzn. takie które należałoby wpisać przy literalnym „przełożeniu” zapisu matematycznego na składnię Excela 0,3x1 + 0,9 x 2 + 0,5 x3 + 0,45x 4 + 0,05x5 + 0,8 x6 Komórka Informacja na temat formuł: wprowadzanej i kopiowanych H4 =B4*B2+C4*C2+D4*D2+E4*E2+F4*F2+G4*G2 110 x1 + 95x 2 + 121x3 + 330 x 4 + 19 x5 + 400 x6 H6 =B6*B2+C6*C2+D6*D2+E6*E2+F6*F2+G6*G2 19 x1 + 41x 2 + 17 x3 + 41x 4 + 4 x5 + 21x6 H7 =B7*B2+C7*C2+D7*D2+E7*E2+F7*F2+G7*G2 0,7 x1 + 0,5x 2 + 1,2 x3 + 3,7 x 4 + 1x5 + 3,6 x6 H8 =B8*B2+C8*C2+D8*D2+E8*E2+F8*F2+G8*G2 3,2 x1 + 3x2 + 3,5 x3 + 4,5 x4 + 0,3x5 + 5,7 x6 H9 =B9*B2+C9*C2+D9*D2+E9*E2+F9*F2+G9*G2 2170x1 + 3420x2 + 3280x3 + 4530x4 + 19 x5 + 400x6 =B10*B2+C10*C2+D10*D2+E10*E2+F10*F2+G10*G2 H10 Formuły z SUMA.ILOCZYNÓW odpowiadające formułom „dosłownym” Uwagi Wprowadzona przez użytkownika Otrzymana =SUMA.ILOCZYNÓW(B6:G6;B$2:G$2) przez kopiowanie z H4 Otrzymana =SUMA.ILOCZYNÓW(B7:G7;B$2:G$2) przez kopiowanie z H4 Otrzymana =SUMA.ILOCZYNÓW(B8:G8;B$2:G$2) przez kopiowanie z H4 Otrzymana =SUMA.ILOCZYNÓW(B9:G9;B$2:G$2) przez kopiowanie z H4 Otrzymana =SUMA.ILOCZYNÓW(B10:G10;B$2:G$2) przez kopiowanie z H4 =SUMA.ILOCZYNÓW(B4:G4;B$2:G$2) P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 5 Zrzut ekranu powyżej nie ilustruje żadnych czynności, a jedynie służy do kontroli poprawności wprowadzenia danych!!! To samo co powyżej, ale zamiast wyników formuł (które to wyniki na tym etapie są zerami) są wyświetlone same formuły. Ze względu na oszczędność miejsca jest to tylko fragment arkusza. Ustawienia Solvera Na tym etapie zakończyło się wprowadzanie danych bezpośrednio do komórek arkusza. Mamy następujące związki między zapisem matematycznym a zapisem w Excelu: B2 C2 D2 E2 F2 G2 (B2:G2) x1 , x2 , x3 , x 4 , x5 , x6 ilości produktów spożywczych (komponentów diety) w kg (odpowiednio jęczmienia, kukurydzy, rzepaku, liści buraków pastewnych i soi) wchodzących w skład mieszanki (paszy) H4 0,3x1 + 0,9 x 2 + 0,5 x3 + 0,45 x 4 + 0,05 x5 + 0,8 x6 → min (funkcja celu – łączny koszt zakupu produktów w PLN) przy ograniczeniach minimalne wymagane dzienne spożycie rzeczywiste spożycie składników odżywczych składników odżywczych ≥ 450 H6 110 x1 + 95 x 2 + 121x 3 + 330 x 4 + 19 x 5 + 400 x 6 I6 H7 19 x1 + 41x 2 + 17 x3 + 41x 4 + 4 x 5 + 21x 6 H8 0,7 x1 + 0,5 x 2 + 1,2 x 3 + 3,7 x 4 + 1x5 + 3,6 x 6 H9 3,2 x1 + 3x 2 + 3,5 x3 + 4,5 x 4 + 0,3 x5 + 5,7 x 6 H10 2170 x1 + 3420 x2 + 3280 x3 + 4530 x4 + 90 x5 + 3057 x6 (H6:H10) 130 ≥ I7 25 ≥ ≥ ≥ I8 17 I9 7300 I10 (I6:I10) B2 C2 D2 E2 F2 G2 (B2:G2) x1 ≥ 0 , x 2 ≥ 0 , x3 ≥ 0 , x 4 ≥ 0 , x 5 ≥ 0 , x 6 ≥ 0 - ilości produktów spożywczych nie mogą być ujemne P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 6 Należy teraz otworzyć okno (Excel 2003 i starsze menu Narzędzia-Solver, Excel 2007 i nowsze wstążka DaneSolver; nazewnictwo używane poniżej jest dostosowane do interfejsu Solvera do wersji Excela do 2007 włącznie), a następnie zadeklarować ustawienia: Komórka celu: H4 Równa: Min (ponieważ funkcja celu jest minimalizowana; UWAGA trzeba ustawić ręcznie – opcja domyślna to Maks!) Komórki zmieniane: B2:G2 Warunki ograniczające: B2:G2>=0 H6:H10>=I6:I10. Uwaga B2:G2>=0 jest skróconym zapisem dla B2>=0, C2>=0, D2>=0, E2>=0, F2>=0, G2>=0 (czyli x1 ≥ 0 , x 2 ≥ 0 , x3 ≥ 0 , x 4 ≥ 0 , x5 ≥ 0 , x6 ≥ 0 ) H6:H10>=I6:I10 jest skróconym zapisem dla H6>=I6, H7>=I7, H8>=I8, H9>=I9, H10>=I10 (warunki związane ze spożyciem składników odżywczych ) Główne okno Solvera (Solver - Parametry) – widok przed dodaniem warunków ograniczających. W samym polu Warunki ograniczające nic nie wpisujemy, ponieważ jest to NIEMOŻLIWE. Aby dodać warunki, klikamy w Dodaj. Otwiera się nowe okno Dodaj warunek ograniczający Wprowadzamy pierwszą grupę warunków -warunki nieujemności zmiennych (B2:G2>=0) i klikamy Dodaj. P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 7 Pojawia się znowu okno Dodaj warunek ograniczający. Wprowadzamy analogicznie warunki ograniczeń funkcyjnych (H6:H10>=I6:I10). Ponieważ nie ma już więcej warunków do dodania, klikamy OK. Następuje powrót do okna Solver - Parametry Po dodaniu warunków ograniczających okno Solver – Parametry powinno wyglądać jak niżej Ustawienia Solvera dla rozwiązywanego zadania Teraz trzeba tylko kliknąć w Rozwiąż i zaczekać (bardzo krótko), aż pojawi się następujące okno: Pozostaje już tylko kliknąć w OK, aby zaakceptować wynik. Rozwiązanie zadania Odpowiedź „słowna” Minimalny dzienny koszt diety wynosi 1,992625 PLN. Jest on osiągnięty dla następującej diety (planu zakupów i spożycia): x1* = 0 kg jęczmienia, x 2* = 0 kg kukurydzy, x 3* = 0 kg pszenicy, x 4* = 2,802 kg rzepaku, x 5* = 14,631 kg liści buraków, x 6* = 0 kg soi. Ponieważ spożycie białka i kalorii bardzo przekracza wymagane minimalne spożycie, zatem drugi etap rozwiązywania zadania uwzględnia górne limity spożycia (uwzględnienie zasady „co za dużo, to niezdrowo” ). P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 8 Drugi etap - rozszerzenie zadania o górne limity spożycia składników (górne) normy maksymalnego dopuszczalnego spożycia składników Dodanie górnych limitów spożycia poszerza model matematyczny o nową grupę warunków ograniczających. Model matematyczny do zadania (wariant rozszerzony - dolne i górne normy spożycia składników) x1 , x2 , x3 , x 4 , x5 , x6 - ilości produktów spożywczych (komponentów diety) w kg (odpowiednio jęczmienia, kukurydzy, rzepaku, liści buraków pastewnych i soi) wchodzących w skład mieszanki (paszy) 0,3x1 + 0,9 x 2 + 0,5 x3 + 0,45 x 4 + 0,05 x5 + 0,8 x6 → min (funkcja celu – łączny koszt zakupu produktów spożywczych – komponentów diety) przy ograniczeniach rzeczywiste spożycie składników odżywczych 110 x1 + 95 x 2 + 121x 3 + 330 x 4 + 19 x 5 + 400 x 6 19 x1 + 41x 2 + 17 x3 + 41x 4 + 4 x 5 + 21x 6 minimalne wymagane dzienne spożycie składników odżywczych 450 130 ≥ ≥ 0,7 x1 + 0,5 x 2 + 1,2 x 3 + 3,7 x 4 + 1x5 + 3,6 x 6 3,2 x1 + 3x 2 + 3,5 x3 + 4,5 x 4 + 0,3 x5 + 5,7 x 6 2170 x1 + 3420 x2 + 3280 x3 + 4530 x4 + 90 x5 + 3057 x6 rzeczywiste spożycie składników odżywczych ≥ 17 ≥ 7300 maksymalne dopuszczalne dzienne spożycie składników odżywczych 110 x1 + 95 x 2 + 121x 3 + 330 x 4 + 19 x 5 + 400 x 6 19 x1 + 41x 2 + 17 x3 + 41x4 + 4 x5 + 21x6 25 ≥ 780 ≤ 210 ≤ 0,7 x1 + 0,5 x 2 + 1,2 x3 + 3,7 x 4 + 1x5 + 3,6 x 6 3,2 x1 + 3x 2 + 3,5 x 3 + 4,5 x 4 + 0,3 x5 + 5,7 x 6 2170 x1 + 3420 x 2 + 3280 x3 + 4530 x 4 + 90 x5 + 3057 x 6 40 ≤ ≤ 30 ≤ 10100 x1 ≥ 0 , x 2 ≥ 0 , x3 ≥ 0 , x 4 ≥ 0 , x 5 ≥ 0 , x 6 ≥ 0 - ilości produktów spożywczych nie mogą być ujemne Przykładowe rozmieszczenie danych w arkuszu dla zadania optymalnej diety z dodatkowymi górnymi normami spożycia składników. Widoczne na zrzucie ekranu rozwiązanie odnosi się do zadania bez górnych norm czyli otrzymanego w poprzednim etapie rozwiązywania. W kolumnie J dopisane są górne normy spożycia składników. P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 9 Jak widać, nowe warunki ograniczające „rozpisane” z adresami komórek wyglądają następująco ≤ 780 J6 H6 110 x1 + 95 x 2 + 121x 3 + 330 x 4 + 19 x 5 + 400 x 6 210 J7 ≤ 40 H8 J8 ≤ 30 J9 H9 3,2 x1 + 3x 2 + 3,5 x 3 + 4,5 x 4 + 0,3 x5 + 5,7 x 6 ≤ 10100 J10. H10 2170 x1 + 3420 x 2 + 3280 x3 + 4530 x 4 + 90 x5 + 3057 x6 H7 19 x1 + 41x 2 + 17 x 3 + 41x 4 + 4 x 5 + 21x 6 0,7 x1 + 0,5 x 2 + 1,2 x 3 + 3,7 x 4 + 1x 5 + 3,6 x 6 ≤ (H6:H10) (J6:J10) Teraz trzeba otworzyć okno Solvera i dodać te warunki „zbiorczo” jako H6:H10<=J6:J10. Po kliknięciu „Dodaj” na oknie Solver-Parametry wpisujemy: Okno Solvera z nowymi warunkami wygląda następująco. Dodatkowe ograniczenia związane z górnymi normami spożycia. Grupa warunków z górnymi limitami spożycia z powodu automatycznego sortowania alfabetycznego pola została Warunki ograniczające dodana jako trzecia, ale jest wyświetlona jako druga. Co prawda zgodnie z regułami sortowania alfabetycznego (J po I) grupa ta powinna być wyświetlona jako trzecia, ale w sortowaniu warunków brana jest też pod uwagę kolejność znaków równości i nierówności. Jest ona taka jak na rozwijanej liście w polu Dodaj warunek ograniczający czyli: <=,=,>=. Pozostaje teraz tylko kliknąć Rozwiąż aby otrzymać nowe rozwiązanie. Rozwiązanie zadania z uwzględnieniem górnych norm spożycia. P. Kowalik, Laboratorium badań operacyjnych: zadanie optymalnej diety 10 Rozwiązanie zadania Odpowiedź „słowna” Minimalny dzienny koszt diety z uwzględnieniem górnych norm spożycia składników wynosi 2,200099 PLN (na zrzucie ekranu jest wyświetlone zaokrąglenie do 2,2001 ze względu na oszczędność miejsca). Jest on osiągnięty dla następującej diety (planu zakupów i spożycia): x1* = 2,475 kg jęczmienia, x 2* = 0 kg kukurydzy, x3* = 0,668 kg pszenicy, x 4* = 0 kg rzepaku, x5* = 22,465 kg liści buraków, x 6* = 0 kg soi. Trzeci etap - górna norma spożycia białka zmniejszona do 700g. Zmniejszenie górnego limitu spożycia białka do 700 g oznacza, że warunek ograniczający 110 x1 + 95 x2 + 121x3 + 330 x4 + 19 x5 + 400 x6 ≤ 780 zmieni się na 110 x1 + 95 x2 + 121x3 + 330 x4 + 19 x5 + 400 x6 ≤ 700 Należy poprawić zawartość komórki J6 z 780 na 700 i kliknąć Rozwiąż w oknie Solver (nie ma żadnych zmian w ustawieniach Solvera!) Przy rozwiązywaniu Solver wyświetla komunikat jak niżej, który oznacza, że warunki ograniczające są sprzeczne (nie ma rozwiązania!). Wartości komórek zmienianych i zależnych od nich formuł modelu, które można odczytać w arkuszu po wyświetleniu powyższego komunikatu nie są rozwiązaniem, a jedynie wartościami, przy których Solver wstrzymał obliczenia! Nie jest to rozwiązanie, ponieważ nie jest spełniony warunek z górną normą spożycia białka – wynosi ono 776,59937 g przy normie 700 g.