Professional Documents
Culture Documents
Predmetni nastavnik:
Red.prof.dr Zikrija Avdagić, dipl.ing.el.
2018 / 2019
Genetički algoritam
Cilj vježbe: Upoznavanje sa Optimization Toolbox-om, kao produžetkom
MATLAB-a, koji sadrži alate i široko rasprostranjene algoritme za
optimizacije velikih razmjera.
Optimization Toolbox omogućava rješavanje kontinualnih i diskretnih
problema sa i bez ograničenja, a sadrži funkcije za linearno programiranje,
kvadratno programiranje, nelinearnu optimizaciju, više-kriterijalnu
optimizaciju itd.
Podsjećanje: Optimizacija je proces pronalaženja minimuma ili maksimuma
funkcije, koju obično nazivamo funkcijom cilja (kriterija, engl. objective
function).
Optimization Toolbox se sastoji od funkcija koje vrše minimiziranje (ili
maksimiziranje) na generalno nelinearnim funkcijama. Osim toga toolbox
sadrži i funkcije za rješavanje nelinearnih jednačina te aproksimaciju
podataka funkcijom (data-fitting).
Genetički algoritam
Primjer 1: optimizacija funkcije bez ograničenja
Neka je funkcija (anonimna) koju želimo optimizirati oblika:
fun = @(x) exp(x(1)) * (4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + 1)
Postavimo (pretpostavimo) početno rješenje:
x0 = [-1; 1];
Postavimo parametre optimizacije – isključimo algoritme velikih razmjera
(predefinisana opcija):
options = optimset('LargeScale','off');
Pozovimo funkciju minimizacije bez ograničenja (unconstrained):
[x, fval, exitflag, output] = fminunc(fun, x0, options);
Rezultati
Rješenje koje je pronašao optimizator:
x = 0.5000
-1.0000
Vrijednost funkcije za nađeno rješenje je:
fval =3.6609e-015
Ukupan broj evaluacija funkcija je bio:
output.funcCount
ans =66
Genetički algoritam
Samostalni rad
Samostalni rad
Analizirati primjer optimizacije sa ograničenjima te uočiti šta se dešava
kada:
- promijenite funkciju koja se optimizira,
- promijenite postojeća ograničenja,
- dodate nova ograničenja,
Pročitati o fmincon funkciji korištenoj u primjeru te o različitim
varijantama njenog poziva.
Genetički algoritam
Aproksimacija podataka funkcijom
t = Data(:,1); 5
y = Data(:,2); 4
figure(fig) 2
hold on 1
plot(t,y,'ro','EraseMode','none') 0
title('Data points') 0 0.5 1 1.5 2
hold off
koja ima dva linearna parametra c i dva nelinearna parametra lam. Pošto
imamo i linearne i nelinearne parametre rješavanje ćemo podijeliti u dva koraka.
Genetički algoritam
Kreirajmo funkciju (m fajl) koja se naziva fitfun2, koja na osnovu nelinearnih parametara lam i
podataka, računa za date procjene linearnih parametara grešku u poklapanju (error in the fit):
function [f, yEst] = fitfun2(lam,Data)
% f = FITFUN2(lam,Data) returns the error between the data
% and the values computed by the current function of lam.
0 0.5 1 1.5 2
Genetički algoritam - OptimTool
Global Optimization Toolbox nudi metode koje tragaju za globalnim rješenjima
problema, koja sadrže više minimuma ili maximuma.
optimtool('ga')
Genetički algoritam - OptimTool
Genetički algoritam - OptimTool
Da bismo koristili Optimization Tool, prvo moramo unijeti slijedeće informacije:
•Fitness funkcija
Funkcija koju želimo minimizirati. Fitness funkcija unosi se u formi @fitnessfun
gdje fitnessfun.m predstavlja file koji računa fitness funkciju. @ znak kreira
handle za fitnessfun.
•Broj varijabli
•Veličina input vektora za fitness funkciju
Genetički algoritam - OptimTool
Možemo unijeti funkciju sa ili bez ograničenja. Ako je problem bez ograničenja,
Constraint pane polje ostavljamo prazno.
Kad je algoritam završen, Run solver i View Results paneli budu pruikazani.
Display prikazuje: