Professional Documents
Culture Documents
Florin Leon
http://florinleon.byethost24.com/curs_ia.html
v2022.1
Metode de optimizare (I)
1. Întâmplare și scop
2. Algoritmi evolutivi
3. Codarea problemei
4. Operatori: selecția, încrucișarea, mutația
5. Exemple de aplicare
6. Concluzii
Optimizarea depozitării
Containere în porturi sau pachete la firmele de comerț electronic
Învățare automată
Antrenarea rețelelor neuronale și optimizarea structurii lor
https://www.youtube.com/watch?v=FKbarpAlBkw
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 9
Metode de optimizare (I)
1. Întâmplare și scop
2. Algoritmi evolutivi
3. Codarea problemei
4. Operatori: selecția, încrucișarea, mutația
5. Exemple de aplicare
6. Concluzii
Explozia cambriană
Apariția reproducerii sexuate
Macroevoluția (evoluția speciilor)
Încrucișare
Principii de codare:
cromozomi, gene
Mutație
Procedura de inițializare
Introducere copil în populație Selecția părinților
Încrucișare
nu
Stop? Mutație
da Condiția de terminare
Rezultat
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 16
Algoritmii evolutivi și
algoritmii specializați
Algoritm evolutiv Algoritm specializat
Strategii evolutive
Codarea soluției cu vectori de numere reale
Programare genetică
Soluțiile sunt programe (de exemplu, Lisp) sau arbori de
operații
Obiectiv: maximizarea
Constrângere:
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 22
Codarea binară
De exemplu, 6 articole incluse sau nu
O genă = un bit (xi)
Aléle = valori posibile ale genei (0 și 1)
Un cromozom = un șir de gene (biți)
Cromozomul este o soluție potențială
011001 articolele 2, 3 și 6 incluse
Cromozom: 011001
Constrângere: w = 50 + 45 + 5 = 100 C = 100
Constrângerea este satisfăcută
Funcția de adaptare: p = 35 + 18 + 2 = 55
Cromozom: 111001
Constrângere: w = 100 + 50 + 45 + 5 = 200 > C = 100
Constrângerea nu este satisfăcută
Repararea soluției
Câte o genă 1 devine 0 până este satisfăcută constrângerea
Optimizarea hibridă
Întâi după greutate (-w) apoi după profit
Funcția de adaptare F = -200
fitness(B) = 1 A BC
3/6 = 50% 2/6 = 33%
fitness(C) = 2
Cromozom: 1 2 3 4 5 6
Fitness: 8 2 17 7 4 11
Suma parțială: 8 10 27 34 38 49
N (1 N 49): 23
Selectat: 3
De exemplu: k = 4, p = 0.7
p1 = 70%
p2 = 21%
p3 = 6%
p4 = 3%
Florin Leon, Inteligenta artificiala, http://florinleon.byethost24.com/curs_ia.html 63
Elitismul
Cel mai adaptat individ este copiat direct în noua
populație
Sau primii cei mai adaptați (mai rar)
Asigură faptul că niciodată nu se va pierde soluția cea
mai bună
Compromis:
Prea puține mutații ⇒ convergență prematură (optim local)
Prea multe mutații ⇒ căutare aleatorie
Optimizare posibilă:
Din doi părinți f și m, se creează în mod normal un copil c
În noua populație, se introduce individul cu fitness maxim
dintre f, m și c
1) {A}: 1
2) {B}: 3
3) {C,D}: 5
4) {B,E}: 6
5) {A,E}: 7
6) {A,C}: 8
Transformate în constrângeri (un articol nu poate fi vândut decât cel mult o dată):
A: x1 + x5 + x6 <= 1
B: x2 + x4 <= 1
C: x3 + x6 <= 1
D: x3 <= 1
E: x4 + x5 <= 1
CheckConstraintsAndRepair(chromosome.BinaryGenes.ToCharArray(),
new int[] { 1, 3 }, out repaired); // constrângerea B
chromosome.BinaryGenes = repaired;
CheckConstraintsAndRepair(chromosome.BinaryGenes.ToCharArray(),
new int[] { 2, 5 }, out repaired); // constrângerea C
chromosome.BinaryGenes = repaired;
CheckConstraintsAndRepair(chromosome.BinaryGenes.ToCharArray(),
new int[] { 3, 4 }, out repaired); // constrângerea E
chromosome.BinaryGenes = repaired;
int profitSum = 0;
for (int i = 0; i < bidValues.Length; i++)
profitSum += bidValues[i] * ConvertBinary(chromosome.BinaryGenes[i]);
return profitSum;
}
sum = 0;
for (int i = 0; i < v.Length; i++)
sum += ConvertBinary(binaryGenes[v[i]]);
}
int covered = 0;
int quality = 0;
return location;
}
private void SetContour(int[,] location, int rx, int ry, int d, int p)
{
for (int i = rx - d; i <= rx + d; i++)
{
SetLocation(location, i, ry - d, p);
SetLocation(location, i, ry + d, p);
}
Se poate ajunge la a
doua planetă pe
ambele părți, dar care
este calea cea mai
scurta?
if (d < distMin)
distMin = d;
if (d < eps) {
noSteps = i; break; }
}
speedX += accX * f;
speedY += accY * f;
return positions;
}