(Local Search - LS)
Lokalno pretraživanje predstavlja najstariju i najjednostavniju S-metaheuristiku koja se koristi za rešavanje raznih problema kontinualne i diskretne optimizacije. Ideja ove metode je doći do najboljeg rešenja sukcesivnim pretraživanjem okolina rešenja koja se posećuju tokom procesa pretrage.
Pre implementacije lokalne pretrage za konkretan problem, neophodno je definisati adekvatnu reprezentaciju rešenja, prostor pretrage $X$, generisati početno dopustivo rešenje $x\in X$ i definisati okolinu koja će se lokalno pretraživati. U zavisnosti od topologije prostora, bira se metrika (euklidska, Hamingova, Menhetn...) pomoću koje se za proizvoljno dopustivo rešenje $x$ definiše podskup $N(x)\subseteq X$ koji predstavlja okolinu rešenja $x$, a njeni članovi su susedi od $x$. Metoda počinje pretraživanjem okoline početnog rešenja $N(x)$. Ako se naiđe na bolje rešenje, ono postaje tekuće i nastavlja se sa pretraživanjem njegove okoline. Ukoliko takvo rešenje ne postoji (tekuće rešenje je lokalni optimum), LS se zaustavlja i poslednje tekuće rešenje se uzima za aproksimaciju optimalnog rešenja.
Strategije za odabir novog suseda:
Generalno, nedostatak LS heuristike je u tome što se pretraga često zaglavljuje u lokalnom optimumu koji nije globalni. Stoga se razmatraju razna poboljšanja LS heuristike ili se ona koristi u okviru neke druge S ili P-metaheuristike kojom se unosi određeni stepen diverzifikacije u proces pretrage.
Strategije poboljšavanja lokalne pretrage:
(Iterated local search - ILS)
Iterativna lokalna pretraga predstavlja metaheuristiku zasnovanu na ponavljanju lokalne pretrage sa ciljem povećavanja kvaliteta uzastopnih dobijenih rešenja. Inicijalno rešenje uglavnom se kreira na slučajan način ili se za njegovo kreiranje koristi određena heuristika. Najpre se izvršava lokalna pretraga nad inicijalnim rešenjem i dobija se odgovarajući lokalni optimum. Potom se u svakoj iteraciji primenjuje perturbacija na dobijenom lokalnom optimumu nakon čega se izvršava lokalna pretraga nad rešenjem koje je dobijeno nakon perturbacije. Novi lokalni optimum se pod određenim uslovima prihvata kao trenutno rešenje. Navedeni proces se ponavlja sve dok se ne ispuni odgovarajući kriterijum zaustavljanja (maksimalan br. iteracija, dostignut određeni kvalitet rešenja, dostignuto maksimalno vreme izvršavanja...). Operator perturbacije u ILS metodi uglavnom kreira rešenje koje je blisko tekućem rešenju, tako što se jedan deo tekućeg rešenja zadržava, dok se drugi deo značajno menja u zavisnosti od istorije, tj. iskustva dobijenog u toku izvršavanja algoritma. Kriterijum prihvatanja rešenja dobijenog nakon perturbacije određuje da li novi lokalni minimum zadovoljava uslove da zameni trenutno rešenje.
s0 = Generisanje_inicijalnog_resenja;
s* = Lokalna_pretraga(s0);
while nije ispunjen kriterijum zaustavljanja
new_s= Perturbacija(s*, istorija_pretrage);
new_s* = Lokalna_pretraga(new_s);
s* = Kriterijum_prihvatanja_resenja(s*,new_s*,istorija_pretrage);
end
return s*