Avsnitt 3. Kapitel 4
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:
- Inuti den inre
for-loopen (för varje partikeli) 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]). - Uppdatera partikelns position genom att addera dess nya
velocities[i]tillpositions[i]. - Efter att ha beräknat det nya
valuevidpositions[i], kontrollera om detta nyavalueär bättre än partikelns personbästa (pbest_values[i]). Om så är fallet måste du uppdatera bådepbest_positions[i]ochpbest_values[i]. - 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ådegbest_valueochgbest_position.
Lösning
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 3. Kapitel 4
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal