Potresti avere un po 'di fortuna con un approccio simile alle immagini genetiche di Karl Sims .
Usa un semplice set di operatori in un linguaggio simile a LISP in modo tale che l'output di qualsiasi operatore possa essere utilizzato per influenzare l'immagine, in modo simile ad alcuni linguaggi shader (cioè uno scalare sarebbe un valore in scala di grigi, un vector3
sarebbe RGB
, ecc. ).
Anche se immagino che sia roba di implementazione, quindi quello che probabilmente vuoi sono le sue parole chiave, che (iirc) contengono tutte le basi:
- funzioni di trigger (
sin, cos, tan
, ecc.)
- posizione (
x, y
)
- operatori matematici di base (
sqrt, pow, abs, inverse
)
- funzioni noise (
fBm, noise2, noise3
)
- altri frattali (
mandelbrot, julia
)
- funzioni di interpolazione (
lerp, quad, step, smoothstep
)
(Alcuni dei precedenti potrebbero non essere nella sua implementazione; ho trovato il suo lavoro molto tempo fa e in realtà ho fatto alcuni tentativi di ciò che descrivi nel corso degli anni - quindi i ricordi potrebbero perdere :)
Mantenerlo interessante (e veloce)
Ho avuto un po 'di fortuna con un approccio a più livelli che ha ridotto enormemente la quantità di evoluzioni morte.
- viene generato un set di intervalli per ciascun operatore (o mutato dai round precedenti)
- questi mantengono idealmente i valori all'interno di un intervallo "sano" per ogni funzione, ma possono evolversi in intervalli che hanno risultati sorprendentemente utili, che sembra la cosa "giusta" da fare
- generare alcuni alberi di algoritmi
- per ognuno di questi genera alcune mappe di altezza in posizioni casuali e valuta l'idoneità
- se abbiamo molte buone corrispondenze allora evolviamo un po 'lungo questo ramo, perturbando leggermente gli intervalli dal passaggio 1 in ogni bambino
- in caso contrario, abbiamo probabilmente intervalli errati, tornare al passaggio 1
Tuttavia...
Ora ho saltato convenientemente l' algoritmo di fitness , ho usato principalmente l'approccio di "selezione innaturale" di Karl Sims in cui vedi l'attuale generazione nel quadrato centrale di un gruppo di prole (reso popolare dai Power Tools di Kai nel corso della giornata - ecco l' immagine di quello che voglio dire ) ..
Tuttavia potresti probabilmente avere una serie di immagini di allenamento, forse alcune da immagini satellitari e alcune artificiali con qualità particolari e quindi forse usare l'analisi wavelet o 2D FFT su di esse rispetto al terreno che stai testando?
Questo è un argomento interessante, ma dubito di cosa tu abbia bisogno di una risposta :)
EDIT: ahh. ho dovuto rimuovere un sacco di link perché sono un nuovo utente Sorry |