single
Sfida: Costruire un Algoritmo Genetico
Scorri per mostrare il menu
Scorri per iniziare a programmare
Sei incaricato di implementare il ciclo principale di un algoritmo genetico per trovare il valore massimo di una funzione matematica. La funzione da ottimizzare è una semplice parabola: f(x) = -(x - 3)² + 10. Questa funzione presenta un picco ben definito in x = 3, dove il suo valore è 10.
Tutte le funzioni di supporto (init_population, fitness_function, tournament_selection, arithmetic_crossover, mutate) e la struttura del ciclo principale sono già fornite.
Il tuo compito è completare la logica centrale del processo evolutivo:
- All'interno del ciclo principale
for, devi prima valutare l'interapopulationapplicando lafitness_functiona ciascun individuo. Memorizza questi punteggi nella listafitness. - Trova l'indice dell'individuo con le migliori prestazioni nella generazione corrente e salvalo in
gen_best_idx. (Suggerimento:np.argmax()è utile in questo caso). - All'interno del ciclo
while len(new_population) < POP_SIZE:, devi creare un nuovo individuo:
- Selezionando
parent1tramite la funzionetournament_selection. - Selezionando
parent2tramite la funzionetournament_selection. - Creando un
childcombinando i genitori con la funzionearithmetic_crossover. - Applicando una variazione al
childtramite la funzionemutate.
- Dopo il ciclo
while, sostituisci la vecchiapopulationcon lanew_populationper completare la generazione.
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione