Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Implementering af Partikel-Sværmoptimering | Sværmbaserede Algoritmer
Bio-inspirerede Algoritmer
Sektion 3. Kapitel 4
single

single

Udfordring: Implementering af Partikel-Sværmoptimering

Stryg for at vise menuen

Opgave

Swipe to start coding

Du skal implementere den centrale opdateringslogik for en Particle Swarm Optimization (PSO) algoritme. Målet er at finde minimum for funktionen f(x) = x² + 5 * sin(x) på intervallet [-10, 10].

Alle parametre (såsom inerti w, kognitive c1 og sociale c2) samt initiale lister (positions, velocities, pbest_positions, pbest_values, gbest_position, gbest_value) er allerede opsat for dig.

Din opgave er at udfylde den primære iterative proces:

  1. Inden i den indre for-løkke (for hver partikel i) skal du først opdatere partiklens hastighed. Brug den fulde PSO-hastighedsopdateringsligning: w * velocities[i] + c1 * r1 * (pbest_positions[i] - positions[i]) + c2 * r2 * (gbest_position - positions[i]).
  2. Opdater partiklens position ved at lægge den nye velocities[i] til positions[i].
  3. Efter at have beregnet den nye value ved positions[i], tjek om denne nye value er bedre end partiklens personlige bedste (pbest_values[i]). Hvis det er tilfældet, skal du opdatere både pbest_positions[i] og pbest_values[i].
  4. Efter den indre løkke (som opdaterer alle partikler), tjek om den nye bedste personlige værdi (som du finder og gemmer i min_value) er bedre end den nuværende globale bedste (gbest_value). Hvis det er tilfældet, opdater både gbest_value og gbest_position.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt