Anda di halaman 1dari 8

Zagadnienia optymalizacji

Podobnie jak w przypadku innych zastosowa, rwnie i zagadnienia optymalizacji maj


swojego asystenta w programie MAPLE, ktrego okno przedstawiono poniej. Jak wida (i
jak naleaoby oczekiwa) s w nim odpowiednie miejsca, w ktrych zdefiniowa moemy
funkcj celu, dla ktrej chcemy poszukiwa ekstremum (Objective Function), ograniczenia,
ktre chcemy naoy w rozwizywanym zadaniu (Constraints and Bounds), aby uzyska
rozwizanie (Solution) zarwno w postaci analitycznej, jak te w postaci wykresu.
Zawarto obydwu pierwszych okien jest edytowalna z klawiatury, natomiast metoda
optymalizacji, kryjca si w opcji wyboru zatytuowanej Solver umoliwia wybr pomidzy
optymalizacj liniow, kwadratow, a take nieliniow, zgodnie z rnymi metodami. Pord
moliwych opcji asystenta moemy rwnie wybra pomidzy poszukiwaniem minimum a
maksimum, jak rwnie parametry liczbowe wybranej metody rozwizywania tego problemu.

Rozwizywanie zagadnie optymalizacji mona rwnie wykonywa bez pomocy asystenta;


w tym celu umieszczono w programie MAPLE specjaln bibliotek optymalizacji, zgodnie z
poniszym skryptem.
>

Przykad 1. Chcemy obliczy maksimum oraz minimum dla podanej funkcji dwch
zmiennych. W tym celu musimy najpierw zdefiniowa t funkcj.
>

259

Najpierw znajdujemy minimum tej funkcji


>
a potem kolejno maksimum tej funkcji.
>
Jak wida jest to zadanie optymalizacji bez ogranicze, gdy obydwie zmienne mog
przyjmowa dowolne wartoci.
Przykad 2. Rozwamy zagadnienie programowania liniowego polegajce na znalezieniu
ekstremum podanej funkcji z okrelonymi ograniczeniami
> obj := -2*x-y;
> cnsts := [y<=4*x+1/2,y<=-5*x+2,x>=0,y>=0];

Odpowiedni rysunek przedstawia dziedzin dopuszczan przez ograniczenia, w obrbie ktrej


moemy optymalizowa funkcj celu (zaznaczona ciemniejszym kolorem), sama funkcj celu
oraz poszukiwane rozwizanie, ktre pokrywa si z najwyszym punktem nalecym do
zaznaczonego wielokta. Funkcja celu jest oczywicie paszczyzn zrzutowan tutaj na
paszczyzn rysunku, ktra jest pokazana za pomoc prostych rwnolegych.
> p1 := inequal(cnsts, x=-0.5..2, y=-0.5..2,
optionsexcluded=(colour=white), optionsfeasible=(colour=yellow)):
p2 := contourplot(obj, x=-0.5..2, y=-0.5..2):
p3 := pointplot({[0.1666,1.166]}, symbolsize=13, colour=green):
display(p1, p2, p3);

Odpowiednia komenda pozwala na znalezienie optymalnej wartoci funkcji, jak rwnie


wsprzdnych punktu, dla ktrego otrzymujemy to ekstremum.
> LPSolve(obj, cnsts);

260

Alternatywnie moemy uy jedynie pierwszych dwch ogranicze oraz opcji nonnegative.


> LPSolve(obj, cnsts[1..2], assume=nonnegative);

Pierwszy element rozwizania jest wartoci minimaln, jak przyjmuje funkcja celu w
obrbie narzuconych ogranicze. Drugi element wskazuje punkt, dla ktrego osigamy to
minimum; jak wiadomo, nie musi to by jeden jedyny punkt.
Przykad 3. Przeanalizujmy nastpujce zagadnienie optymalizacji:
> obj := 4*x^2-y+x+5;
> cnsts := [x+y-7*x>=-11, 11/2*x+y<=0,x>=-4];

Jak poprzednio dopuszczalny ze wzgldu na ograniczenia obszar paszczyzny jest zaznaczony


ciemniejszym kolorem, paraboliczne krzywe konturowe ilustruj wybran funkcj celu, a
punkt bdcy rozwizaniem tego problemu jest zaznaczony diamentem.
> p1 := contourplot(obj, x=-4..4, y=-10..10, contours=30):
p2 := inequal(cnsts, x=-4..4, y=-10..10,
optionsexcluded=(colour=white), optionsfeasible=(colour=yellow)):
p3 := pointplot({[-0.8125,4.486]}, symbolsize=13, colour=green):
display(p1,p2,p3);

261

Polecenie QPSolve pozwala na znalezienie optymalnej wartoci funkcji, jak rwnie punktu,
w ktrym to ekstremum wystpuje.
> QPSolve(4*x^2-y+x+5, {x+y-7*x>=-11, 11/2*x+y<=0,x>=-10});

Przykad 4. Chcemy kolejno znale ekstremum wielomianu jednej zmiennej.


> p := 0.4126984123e-2*x^7.1091666666*x^6+7.078095236*x+1.136388888*x^5-18.19500000*x^25.845833331*x^4+15.23138888*x^3+2;

W pierwszej kolejnoci sporzdzamy wykres funkcji, a odpowiednie minimum znajdujemy za


pomoc polecenia NLPSolve.
> p1 := plot(p, x=0..6): p2 := pointplot({[4.8877,0.6883]},
symbolsize=13, colour=green): display(p1, p2);

Moemy znale minimum tej funkcji w przedziale [0,6]:


> NLPSolve(p, x=0..6);

jak rwnie znale maksimum tej funkcji


> NLPSolve(p, x=0..6, maximize);

Istnieje moliwo optymalizacji znacznie bardziej zoonych funkcji, jak np.


> f := x*erf(x)*cos(x);
> s := NLPSolve(f,x=1..20);

262

Zwykle w takich przypadkach sporzdzamy wykres funkcji, aby przekona si, czy
znalezione minimum (maksimum) jest globalne, czy tylko lokalne; polecenie NLPSolve
znajduje lokalne minima.
> p1:= plot(f,x=1..20):
p2:=pointplot([[rhs(s[2][1]),s[1]]],color=green,symbolsize=14):
display(p1,p2);

8.9. Elementy programowania


Operacje warunkowe programuje si w programie MAPLE przy uyciu konstrukcji
if/then/else/fi jak w przykadzie poniej:
>

Powysz konstrukcj operacji warunkowych mona uzupeni o element elif:


>

W takim przypadku otrzymamy warto "+1" gdy a<b, warto "-1" gdy a>b oraz "0" w
kadym innym przypadku. Operacja powtarzania ma nastpujc struktur ogln: for i
from a to b by c do x od;. Operacja x wykonana jest wtedy, gdy zmienna i

pocztkowo rwna wartoci a nie przyjmie wartoci wikszej ni b. Przy kadym


powtrzeniu zmienna i zwikszana jest o c.
>

263

Inn wersj operacji powtarzania stosujemy w postaci for i from a by c while warunek
do x od;.

Operacja x wykonywana jest wtedy, gdy warunek jest speniony, dla zmiennej i

rwnej a, a+c, a+2*c itd.


>

Powtarzanie zostao tutaj przerwane po trzecim kroku, gdy 11!>10290. Trzecia wersja
operacji powtarzania jest oparta na nastpujcym poleceniu: for i in wyraenie do x
do. Zmienna i przyjmuje tutaj kolejne operandy wyraenia i dla kadej wartoci

wykonywana jest operacja x.


>

T konstrukcj operacji powtarzania mona wykorzysta rwnolegle z listami i zestawami, na


przykad:
>

Za pomoc polecenia next wymuszamy zignorowanie dalszych polece wykonywanych w


danym kroku operacji powtarzania i natychmiastowe wykonanie kolejnego kroku, natomiast
polecenie break suy do przerwania wykonywania operacji powtarzania. Istnieje te
moliwo tworzenia procedury automatyzujcej wybrane operacje. Moe ona zawiera
szereg rnych polece, ktrych wielokrotne wypisywanie byoby niewygodne, np.

264

Jej zastosowanie pozwala obliczy


>
Innym przykadem moe by:
>

>

Generalnie wartoci zwracan dowolnej procedury jest ostatnio obliczona warto. Istnieje
rwnie moliwo jawnego wyjcia z procedury i jawnego zwrcenia wartoci przy pomocy
nastpujcego polecenia RETURN:
>

>

>
Funkcja cat suy do sklejania cigw znakowych i zostaa uyta w celu uniknicia przecinka
pojawiajcego si pomidzy elementami sekwencji zwracanej przez funkcj RETURN.

265

266

Anda mungkin juga menyukai