Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Utmaning: Implementera Partikelsvärmsoptimering | Svärmbaserade Algoritmer
Bioinspirerade Algoritmer
Avsnitt 3. Kapitel 4
single

single

Utmaning: Implementera Partikelsvärmsoptimering

Svep för att visa menyn

Uppgift

Svep för att börja koda

Du ombeds implementera den centrala uppdateringslogiken för en Particle Swarm Optimization (PSO)-algoritm. Målet är att hitta minimipunkten för funktionen f(x) = x² + 5 * sin(x) på intervallet [-10, 10].

Alla parametrar (såsom tröghet w, kognitiv faktor c1 och social faktor c2) samt initiala listor (positions, velocities, pbest_positions, pbest_values, gbest_position, gbest_value) är redan förberedda åt dig.

Din uppgift är att fylla i den huvudsakliga iterativa processen:

  1. Inuti den inre for-loopen (för varje partikel i) ska du först uppdatera partikelns hastighet. Använd den fullständiga PSO-formeln för hastighetsuppdatering: w * velocities[i] + c1 * r1 * (pbest_positions[i] - positions[i]) + c2 * r2 * (gbest_position - positions[i]).
  2. Uppdatera partikelns position genom att addera dess nya velocities[i] till positions[i].
  3. Efter att ha beräknat det nya value vid positions[i], kontrollera om detta nya value är bättre än partikelns personbästa (pbest_values[i]). Om så är fallet måste du uppdatera både pbest_positions[i] och pbest_values[i].
  4. Efter den inre loopen (som uppdaterar alla partiklar), kontrollera om det nya bästa personliga värdet (som du hittar och lagrar i min_value) är bättre än det nuvarande globala bästa (gbest_value). Om så är fallet, uppdatera både gbest_value och gbest_position.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt