Osio 3. Luku 4
single
Haaste: Toteuta partikkeliparvien optimointi
Pyyhkäise näyttääksesi valikon
Tehtävä
Pyyhkäise aloittaaksesi koodauksen
Sinun tehtävänäsi on toteuttaa Particle Swarm Optimization (PSO) -algoritmin ydintä päivittävä logiikka. Tavoitteena on löytää funktion f(x) = x² + 5 * sin(x) minimi välillä [-10, 10].
Kaikki parametrit (kuten inertia w, kognitiivinen c1 ja sosiaalinen c2) sekä alkuperäiset listat (positions, velocities, pbest_positions, pbest_values, gbest_position, gbest_value) on jo alustettu puolestasi.
Tehtävänäsi on täyttää pääasiallinen iteratiivinen prosessi:
- Sisemmässä
for-silmukassa (jokaiselle partikkelillei) sinun tulee ensin päivittää partikkelin nopeus. Käytä täydellistä PSO-nopeuden päivitysyhtälöä:w * velocities[i] + c1 * r1 * (pbest_positions[i] - positions[i]) + c2 * r2 * (gbest_position - positions[i]). - Päivitä partikkelin sijainti lisäämällä uusi
velocities[i]nykyiseenpositions[i]. - Kun olet laskenut uuden
valuearvon kohdassapositions[i], tarkista onko tämä uusivalueparempi kuin partikkelin henkilökohtainen paras (pbest_values[i]). Jos on, päivitä sekäpbest_positions[i]ettäpbest_values[i]. - Sisemmän silmukan jälkeen (joka päivittää kaikki partikkelit), tarkista onko uusi paras henkilökohtainen arvo (jonka löydät ja tallennat muuttujaan
min_value) parempi kuin nykyinen globaali paras (gbest_value). Jos on, päivitä sekägbest_valueettägbest_position.
Ratkaisu
Oliko kaikki selvää?
Kiitos palautteestasi!
Osio 3. Luku 4
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme