Sectie 3. Hoofdstuk 4
single
Uitdaging: Implementeer Particle Swarm Optimization
Veeg om het menu te tonen
Taak
Veeg om te beginnen met coderen
Je wordt gevraagd om de kernlogica voor het bijwerken van een Particle Swarm Optimization (PSO) algoritme te implementeren. Het doel is om het minimum te vinden van de functie f(x) = x² + 5 * sin(x) op het interval [-10, 10].
Alle parameters (zoals traagheid w, cognitieve factor c1 en sociale factor c2) en initiële lijsten (positions, velocities, pbest_positions, pbest_values, gbest_position, gbest_value) zijn al voor je ingesteld.
Je opdracht is om het hoofditeratieproces in te vullen:
- Binnen de interne
for-lus (voor elke deeltjei) moet je eerst de snelheid van het deeltje bijwerken. Gebruik de volledige PSO-snelheidsupdatevergelijking:w * velocities[i] + c1 * r1 * (pbest_positions[i] - positions[i]) + c2 * r2 * (gbest_position - positions[i]). - Werk de positie van het deeltje bij door de nieuwe
velocities[i]op te tellen bijpositions[i]. - Na het berekenen van de nieuwe
valueoppositions[i], controleer of deze nieuwevaluebeter is dan de persoonlijke beste waarde (pbest_values[i]). Als dat zo is, werk dan zowelpbest_positions[i]alspbest_values[i]bij. - Na de interne lus (die alle deeltjes bijwerkt), controleer of de nieuwe beste persoonlijke waarde (die je vindt en opslaat in
min_value) beter is dan de huidige globale beste waarde (gbest_value). Als dat zo is, werk dan zowelgbest_valuealsgbest_positionbij.
Oplossing
Was alles duidelijk?
Bedankt voor je feedback!
Sectie 3. Hoofdstuk 4
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.