|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Sospeso nell'incredibile
Messaggi: 830
|
come lo reputi come difficoltà?
come mai hai utilizzato due matrici una per il cibo e l'altra per gli ostacoli? |
|
|
|
|
|
#42 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Struttura Dati
La struttura dati di supporto è semplice (anche con l'ottimizzazione per matrici molto grandi). [Grafica] La rappresentazione grafica (ammesso che ve l'abbia chiesta) se non ti appoggi a qualche interfaccia grafica predefinita può essere solo molto pallosa (in Excel è semplice anche se al posto dei quadratini ci vuoi mettere dei PacMan animati, muretti, cesti di panini, musichette, ecc. ecc ! Algoritmo Le regole di movimento dell'automa, la sua strategia evolutiva, ossia l'algoritmo di calcolo deve: 1) rispettare alcuni vincoli di base, ossia la posizione dell'automa non deve sovrapporsi alle celle ostacolo e uscire dai bordi del campo-matrice e questo è semplice (alla brutta si fa con degli If Then, ma è proprio brutto ...); 2) deve inseguire il cibo in modo efficiente ("intelligente" come è detto nella traccia). E' proprio questa efficienza che distinguerà i vari automi che saranno implementati da voi e che il vostro prof. si divertirà a mettere in competizione tra loro. Le strategie di movimento possono essere infinite e qui c'è un mondo: con gli automi cellulari si simula di tutto dall'espansione delle città, alle guerre, alla crescita dei fiocchi di neve, ecc. Nel codice che ti ho mandato è implementata una strategia "fisica" per cui l'automa è respinto dalle celle ostacolo |
|
|
|
|
|
#43 | |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
Quindi è efficiente in questo caso separare le due componenti moltiplicando quella attrattiva per adig. Nel caso generale (e quindi anche in questo) in cui il campo di forze è variabile nel tempo si può adottare un'unica matrice che deve però essere modificata ad ogni incremento di tempo. |
|
|
|
|
|
|
#44 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
Quote:
Accipicchia, qui ti offendono a2000!!!!
__________________
? |
|
|
|
|
|
|
#45 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
xunil70, ma ti piace o no ?
se ti piace ci metto anche le gif animate ! |
|
|
|
|
|
#46 | ||
|
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
Quote:
Quote:
Grazie mille!
__________________
? |
||
|
|
|
|
|
#47 | |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
potremmo mettere più AutomI, con strategie diverse nello stesso campo e farli combattere tra loro. Ogni AutomO è una subroutine che legge la matrice di stato (ostacoli, cibo, altri automi) e restituisce lo spostamento definito in base alla sua strategia: Codice:
Sub AutomO_xunil70(MatrStato(), altriDatiStato(), i, j) Sub AutomO_duchetto(MatrStato(), altriDatiStato(), i, j) Sub AutomO_abxide(MatrStato(), altriDatiStato(), i, j) Sub AutomO_a2000(MatrStato(), altriDatiStato(), i, j) rem Sub AutomO_cionci(MatrStato(), altriDatiStato(), i, j) L'affare s'ingrossa ! |
|
|
|
|
|
|
#48 |
|
Senior Member
Iscritto dal: Nov 2000
Città: Sospeso nell'incredibile
Messaggi: 830
|
poi ci scanniamo tra di noi
|
|
|
|
|
|
#49 | |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
quando due AutomI collidono non si mangiano ma trombano e generano un'altro AutomO con caratteristiche genetiche più o meno miste [/siz] |
|
|
|
|
|
|
#50 | |||
|
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
Quote:
Quote:
Quote:
__________________
? |
|||
|
|
|
|
|
#51 |
|
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
[quote="a2000"]
allora facciamo così: quando due AutomI collidono non si mangiano ma trombano e generano un'altro AutomO con caratteristiche genetiche più o meno miste [/quot] Allora cominciamo a parlare di ereditarietà? Non è per caso che tu finisca per convertirti al SIPLUSPLUS!
__________________
? |
|
|
|
|
|
#52 | |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
qui invece, caro xunil70, non si deve fare la semplice frizione ossia si devono generare algoritmi ([b] occhio ai pescioloni |
|
|
|
|
|
|
#53 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
Quote:
__________________
? |
|
|
|
|
|
|
#54 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Stiamo sconfinando negli algoritmi genetici
Mettiamo nei geni i vari algoritmi adottabili... Quando si riproducono il più "grasso" dona una percentuale di geni "maggiore" del più magro... Ci vuole anche qualche difficoltà...altrimenti si riproducono troppo facilmente... Se si scontrano due in cui la differenza fra numero di "mangiate" è troppo alta allora quelo più "magro" può essere a sua volta mangiato (con un acerta percentuale)... Altrimenti verrebbero trasmessi geni inefficienti... |
|
|
|
|
|
#55 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
allora posso togliere il rem da
Codice:
Sub AutomO_cionci( ... ) Codice:
class AutomO_cionci |
|
|
|
|
|
#56 | |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
caro cionci, tu somigli ai tuoi genitori ma non ti comporti come loro ... comunque dentro class AutomO_cionci() ci puoi mettere quello che vuoi anche: Codice:
i = i0 - 1 + 2 * Int(Rnd() + 0.5) j = j0 - 1 + 2 * Int(Rnd() + 0.5) |
|
|
|
|
|
|
#57 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Metti che ci siano vari algoritmi di "sopravvivenza"...uno che tende "prima" ad allontanarsi dagli ostacoli e "poi" a mangiare...un altro che tende "prima" a mangiare e "poi" ad allontanarsi dagli ostacoli...un altro che tende "prima" a riprodursi e "poi" a mangiare (sicuramente il mio Ogni esemplare potrà dopo ogni evento (ha mangiato, ha ciulato) scegliere (casualmente o in modo pesato in base ad altri dati, da quanto tempo non si riproduce o da quanto tempo non mangia) uno fra gli algoritmi presenti nei propri geni... Poi chiaramenti possiamo inventarci qualsiasi ricombinazione dei geni...magari che modifica i geni stessi... Poi vabbè...ci sono le mutazioni casuale e compagnia bella... La popolazione iniziale dovrà essere composta da tanti esemplari quanti sono i diversi tipi di algoritmi aventi geni solo di un tipo... |
|
|
|
|
|
|
#58 |
|
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
non c'è un C++zo da fare, per voi il problema è sempre quello di filtrare sequenze di dati indifferenziati ....
Un algoritmo non è una sequenza di If Then Elseif Then (nel caso in questione che ca++o fai: il parsing tra tagliatelle, relazioni da scrivere e gnocca ?) ma l'implentazione di una legge fondamentale (meglio se conseguita con l'applicazione di qualche teorema). In altre parole si cerca sempre di andare a mangiare le tagliatelle con una bella gnocca rimandando la relazione a domai, tutto in una sera. Perchè poi può capitare che se decidi di ciulare ti si freddano le tagliatelle (o viceversa .... La base, e la cosa sorprendente, degli automi cellulari è che regole semplici generano comportamenti complessi, non vorrei che ai tuoi capitasse il contrario ! |
|
|
|
|
|
#59 | |
|
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
Quote:
class giornata(){ ..... public: void panino(); godimento ciulata_squinzia(); godimento cena(); dolore scrivi_relazione(); ... .... } Main(){ giornata *oggi = new giornata; if (stasera_sabato){ oggi->invito_a_cena_squinzia(); oggi->cena(); for(int i=1;i<fin_quando_ce_la_fai;i++){ oggi->ciulata_squinzia(); } } else{ oggi->salta_la_cena(); oggi->panino(); oggi->ciulata_squinzia(); oggi->scrivi_relazione(); } retun a_dormire; } allochiamo dinamicamente la nostra giornata e facciamo sempre le stesse cose, non abbiamo algoritmi geneticamente modificati impiantati nella nostra CPU. Ciao.
__________________
? |
|
|
|
|
|
|
#60 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
a2000: se dici così non capisco se hai presente o meno cos'è di preciso un algoritmo genetico... Gli algoritmi genetici servono ad ottimizzare la composizione genetica degli esemplari... Si possono usare dalle cose più semplici (trovare la soluzione di un'equazione, chiaramente non è conveniente, ma è solo per fare un esempio) alle cose più complesse... La popolazione iniziale non è assolutamente ottimizzata... Ad esempio: ho un sistema parametrizzato con 100000 vincoli trovati in maniera deterministica, so che il sistema ha bisogno solamente di 100 vincoli, gli altri sono vincoli equivalenti ad uno di quei 100....voglio trovare almeno 10 combinazioni diverse di 100 vincoli validi per il sistema.... Tu magari ti metteresti a fare i calcoli fra i vari vincoli per dimostrarne l'equivalenza...ma con un algoritmo genetico basta metter su la popolazione e la funzione di ottimizzazione ed ecco trovi sicuramente la soluzione in pochi decine di generazioni... Se vedi i vari algoritmi nei geni come gli "istinti" degli esemplari...allora non mi sembra affatto una cosa stupida, come dici tu, "filtrare questi dati" per ottenere uno o più esemplari "ottimizzati" che hanno al loro interno la soluzione, quasi, ottimale al problema |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:22.



















