Przykład 1 - model. |
|
|
|
|
|
|
|
|
Żyrafa potrzebuje dziennie (średnio) co najmniej 2,5 kg białka oraz co najmniej 100g błonnika. |
|
|
|
|
|
|
|
|
Zawartość poszczególnych składników w kilogramie produktów (młode gałązki i lucerna) zawiera tablica: |
|
|
|
|
|
|
|
|
Składnik |
młode gałązki [kg] |
lucerna [kg] |
|
|
|
|
|
|
białko [kg] |
0,2 |
0,1 |
|
|
|
|
|
|
błonnik [g] |
4 |
6 |
|
|
|
|
|
|
Cena |
0,40 zł |
0,30 zł |
|
|
|
|
|
|
Jak należy karmić żyrafę, aby koszt zakupu produktów był minimalny? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rozwiązanie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Przed sformułowaniem modelu PL (programowania liniowego, inaczej modelu matematycznego) |
|
|
|
|
|
|
|
|
należy uważnie przeczytać zadanie i określić zmienne decyzyjne, funkcję celu oraz ograniczenia. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Uwaga: |
Zauważmy, że: |
|
|
|
|
|
|
|
Proszę zwrócić uwagę, że ilość składników może być przedstawiana w innych jednostkach |
- jeden kg młodych gałązek dostarcza 0,2 kg białka oraz 4 g błonnika |
|
|
|
|
|
|
|
niż jednostki produktów. Na przykład produkt może być mierzony w sztukach, |
- jeden kg lucerny dostarcza 0,1 kg białka oraz 6 g błonnika |
|
|
|
|
|
|
|
a składniki w gramach, mg, litrach. |
|
|
|
|
|
|
|
|
|
Naszym zadaniem jest zaplanowanie zakupu młodych gałązek i lucerny tak, aby dzienny koszt był jak najniższy. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jeśli zdecydujemy się na zakup 10 kg gałązek dostarczymy 2 kg białka i 40 g błonnika. |
|
|
|
|
|
|
|
|
Porównując to do wymagań (co najmniej 2,5 kg białka oraz co najmniej 100g błonnika) - jest to za mało. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ile zatem kupić poszczególnych produktów (to jest gałązek oraz lucerny) ? |
|
|
|
|
|
|
|
|
Postawione w ten sposób pytanie określa nam zmienne decyzyjne: |
|
|
|
|
|
|
|
|
x1 - liczba kg gałązek |
|
|
|
|
|
|
|
|
x2 - liczba kg lucerny |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Funkcja celu określa jaki jest koszt zakupu wybranej ilości produktów |
|
|
|
|
|
|
|
|
Ostatnie zdanie treści zadania daje nam podstawę do zapisania: |
|
|
|
|
|
|
|
|
F = 0,4x1 + 0,3x2 -> minimum |
|
|
|
|
|
|
|
|
Czyli szukamy takiego x1 i x2, dla których funkcja celu (to jest koszt zakupu) jest jak najmniejszy. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Oczywiście najtaniej byłoby nic nie kupować, ale wtedy nie zaspokoimy zapotrzebowania. |
|
|
|
|
|
|
|
|
Musimy zatem wziąć pod uwagę to, co należy dostarczyć. |
|
|
|
|
|
|
|
|
Zapisujemy zatem warunki ograniczające: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,2x1 + 0,1x2 >= 2,5 |
|
|
dla białka |
|
|
|
|
|
4x1 + 6x2 >= 100 |
|
|
dla błonnika |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
W przypadku zakupu 1 kg gałązek oraz 1 kg lucerny dostarczymy 0,2 * 1 + 0,1 * 1 = 0,3 kg białka |
|
|
|
|
|
|
|
|
W przypadku zakupu 1 kg gałązek oraz 1 kg lucerny dostarczymy 4 * 1 + 6 * 1 = 10 g błonnika |
|
|
|
|
|
|
|
|
W przypadku zakupu 5 kg gałązek oraz 1 kg lucerny dostarczymy 0,2 * 5 + 0,1 * 1 = 1,1 kg białka |
|
|
|
|
|
|
|
|
W przypadku zakupu 5 kg gałązek oraz 1 kg lucerny dostarczymy 4 * 5 + 6 * 1 = 26 g błonnika |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dodatkowymi warunkami są warunki nieujemności: |
|
|
|
|
|
|
|
|
x1 >= 0 |
|
nie można kupić ujemnej liczby kg gałązek |
|
|
|
|
|
|
x2 >= 0 |
|
nie można kupić ujemnej liczby kg lucerny |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Model matematyczny: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F = 0,4x1 + 0,3x2 -> minimum |
|
|
|
|
Wskazówka: |
|
|
|
0,2x1 + 0,1x2 >= 2,5 |
|
|
|
|
Indeks dolny przy x otrzymujemy w nastepujący sposób: |
|
|
|
4x1 + 6x2 >= 100 |
|
|
|
|
- zapisujemy x1 |
|
x1 >= 0 |
|
|
|
|
- zaznaczamy 1 |
x2 >= 0 |
|
|
|
|
- naciskamy Ctrl-1 i wybieramy indeks dolny, a następnie naciskamy dwa razy Enter |
|
|
|
|
|
|
|
|
|
x1 - liczba kg gałązek |
|
|
|
|
|
|
|
|
x2 - liczba kg lucerny |
|
|
|
|
|
|
|
|
Przykład 3 - model. |
|
|
|
|
|
|
|
|
|
Dieta specjalna powinna dostarczyć tygodniowo co najmniej ponad 100 jednostek cukru i nie więcej niż 200 jednostek tłuszczu. |
|
|
|
|
Koszt zakupu jednej paczki produktu P1 wynosi 2 zł, produktu P2 – 5 zł, produktu P3 - 3 zł. Zawartość obu składników w paczkach poszczególnych produktów przedstawia tabela: |
|
|
|
|
Produkty |
P1 |
P2 |
P3 |
|
Cukier |
10 |
10 |
12 |
|
Tłuszcz |
20 |
25 |
15 |
|
Dobierz skład diety optymalnie pod względem kosztów, biorąc pod uwagę, że można kupować wyłącznie całe paczki. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rozwiązanie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Model matematyczny: |
|
|
|
|
|
|
|
|
|
F = 2x1 + 5x2 + 3x3 -> minimum |
|
|
|
koszt |
10x1 + 10x2 + 12x3 >= 100 |
|
|
cukier |
|
20x1 + 25x2 + 15x3 <= 200 |
|
|
tłuszcz |
|
|
|
|
|
|
x1 >= 0 |
|
|
|
x1 - liczba paczek produktu P1 |
x2 >= 0 |
|
|
|
x2 - liczba paczek produktu P2 |
x3 >= 0 |
|
|
|
x3 - liczba paczek produktu P3 |
x1, x2, x3 - całkowite |
|
|
|
|
Przykład P1r |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Model matematyczny: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F = 0,4x1 + 0,3x2 -> minimum |
|
|
koszt zakupu |
|
|
|
|
|
|
|
|
|
|
|
|
0,2x1 + 0,1x2 >= 2,5 |
|
|
białko |
|
|
|
|
|
|
|
|
|
|
|
|
4x1 + 6x2 >= 100 |
|
|
błonnik |
|
|
|
|
|
|
|
|
|
|
|
|
x1 >= 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 >= 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 - liczba kg gałązek |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 - liczba kg lucerny |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Rozwiązanie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Najpierw należy przenieść model do komórek Excela: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. Określamy które komórki będą prezentowały zmienne decyzyjne (x1, x2, …) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
x2 |
|
zaznaczamy kolorem, w których komókach będą zmienne decyzyjne |
|
|
|
|
|
|
|
|
|
|
|
|
1 |
3 |
|
oraz wprowadzamy tam przykładowe liczby (tymczasowe rozwiązanie, np. x1=1 oraz x2=3) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Wprowadzamy funkcję celu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F |
1,3 |
|
=0,4 * C19 + 0,3 * D19 |
|
|
liczby 0,4 oraz 0,3 są przepisane z funkcji celu (patrz komórka A4) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
natomiast C19 i D19 zawierają wartości x1 i x2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Widzimy, że wartość funkcji celu wynosi 1,3 zł (obliczenie 0,4 * 1 + 0,3 * 3). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jeśli zmienimy komórkę C19 (czyli x1) na 4, to otrzymamy wartość funkcji celu równą 2,5 zł. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. Określamy ograniczenia |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Zwróćmy uwagę, że dążąc do minimalizacji funkcji celu powinniśmy wprowadzać jako wartości x1 i x2 (komórki C19 i D19) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
liczby 0 i 0. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Przeszkodą są jednak minimalne zapotrzebowania (na białko i błonnik). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dla x1 = 1 oraz x2 = 3 ilość dostarczonych składników wynosi: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
białko |
0,5 |
|
=0,2 * C19 + 0,1 * D19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
błonnik |
22 |
|
=4 * C19 + 6 * D19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Określamy ile co najmniej musimy dostarczyć składników |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
białko |
0,5 |
>= |
2,5 |
|
|
liczby 2,5 oraz 100 są przepisane z modelu matematycznego |
|
|
|
|
|
|
|
|
|
błonnik |
22 |
>= |
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wprowadzamy jeszcze ogracznienia dotyczące nieujemności zmiennych decyzyjnych |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
1 |
>= |
0 |
|
przepisane z modelu matematycznego |
|
|
|
|
|
|
|
|
|
|
x2 |
3 |
>= |
0 |
|
liczby w komórkach C47 i C48 pochodzą z komórek oznaczonych powyżej kolorem żółtym |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Zapisując wszystko razem, mamy: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
x2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
3 |
|
liczba kg gałązek oraz lucerny |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F |
1,3 |
|
|
koszt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
białko |
0,5 |
>= |
2,5 |
|
|
|
|
|
|
|
|
|
|
|
|
błonnik |
22 |
>= |
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
1 |
>= |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
x2 |
3 |
>= |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Możemy teraz ręcznie zmieniać komórki określające x1 (liczba kg gałązek) oraz x2 (liczba kg lucerny). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wprowadzmy do komórki C53 wartość 20, a do komórki D53 wartość 5 (czyli 20 kg gałązek i 5 kg lucerny). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Co się zmieniło? |
|
|
Funkcja celu jest teraz równa 9,5zł (komórka C55) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dostarczone białko = 4,5kg (komórka C57) |
|
|
|
|
Dostarczony błonnik 110 g (komórka C58) |
|
|
|
|
|
|
|
|
|
|
Wszystkie warunki są spełnione - jest to więc jedno z rozwiązań dopuszczalnych (ale nie wiemy czy jest optymalne). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wprowadzmy do komórki C53 wartość 10, a do komórki D53 wartość 10 (czyli 20 kg gałązek i 5 kg lucerny). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Co się zmieniło? |
|
|
Funkcja celu jest teraz równa 7zł (komórka C55) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dostarczone białko = 3kg (komórka C57) |
|
|
|
|
Dostarczony błonnik 100 g (komórka C58) |
|
|
|
|
|
|
|
|
|
|
Wszystkie warunki są spełnione - jest to więc jedno z rozwiązań dopuszczalnych (ale nie wiemy czy jest optymalne). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
W ten sposób moglibyśmy zmieniać zawartość komórek C53 i D53 obserwując czy spełnione są ograczenia i ile wynosi wartość funkcji celu. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Być może w ciągu 15 minut udałoby nam się znaleźć taką dietę, która będzie kosztowała najmniej. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bardziej efektywnym sposobem jest skorzystanie z Solvera (funkcjonalność Excela, wybieramy z menu Dane, a następnie na końcu po prawej - Solver). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Poniżej widzimy wypełnione okno Solvera dla zadania. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Naciśnięcie Rozwiąż spowoduje, że Solver sprawdzi różne rozwiązania (wartość x1 i x2) i wybierze z nich najlepsze (dla którego funkcja celu będzie minimalna). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Wynik: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F=6,25 |
|
|
Odp. W celu dostarczenia żyrafie wymaganych ilości białka i błonnika przy najniższym koszcie |
|
|
|
|
|
|
|
|
|
|
|
|
x1=6,25 |
|
|
powinniśmy dziennie podawać 6,25 kg gałązek oraz 12,5 kg lucerny. |
|
|
|
|
|
|
|
|
|
|
|
|
x2=12,5 |
|
|
Koszt zakupu produktów wyniesie wówczas 6,25 zł. |
|
|
|
|
|
|
|
|
|
|
|