View Full Version : chi mi aiuta con questo programma?(progetto prog. modulo b)
duchetto
08-04-2003, 20:44
il testo del programma è nell'allegato, la prima procedura non è molto complicata, il problema sono le successive :( ,il programma deve essere sviluppato in TP (si in turbo pascal :rolleyes: ), qualcuno ha qualche idea su che procedure utilizzare?
E' proprio necessario che sia in Pascal?:(
Non lo utilizzo da molto e farei una fatica enorme per ricordarlo! :mad:
Ciao.
duchetto
09-04-2003, 09:45
si, basta che non sia troppo distante dal turbo pascal in modo che posso tradurlo :D
Bella, peccato che non funzioni su OpenOffice!!!
funziona su tutto:
è scritto in pseudo-codice[/siz] :D
non è in basic? Sai io non lo conosco!
L'unico basic che ho conosciuto era quello del commodore vic 20, non ricordo neanhe la versione, ma ricordo che si scrivevano i numeretti!
10 print("prova")
20 goto 1o
ed iniziava un bel cicletto!!!!!!!
Mh mi sembra non ci andassero le parentesi o forse si? Booooo! :D
Basic ~ Pascal ~ Fortran ~ Pseudo-Codice
Assembler <~ C/C++ ~ Java ~ Sturmtruppen
:p
Originally posted by "a2000"
Basic ~ Pascal ~ Fortran ~ Pseudo-Codice
Assembler <~ C/C++ ~ Java ~ Sturmtruppen
:p
Mi stai maltrattando il il c ed il c++? :(
Vabbuò ti perdono stavolta!
Perchè l'Assembler <~ C/C++
Originally posted by "xunil70"
non è in basic? Sai io non lo conosco!
Se conosci l'Inglese, il Pascal, il Fortran o sai scrivere in pseudocodice sai anche il Basic e viceversa.
Con un editor di testo e poco più li traduci uno nell'altro.
Tranquillo, non disperarti ! :cool:
Originally posted by "xunil70"
Mi stai maltrattando il il c ed il c++? :(
Vabbuò ti perdono stavolta!
Perchè l'Assembler <~ C/C++
proprio per non maltrattarteli troppo (sempre che per fare * e / non debba includensssssss .... ) :p
Da "La Spada nella Roccia": Semola e Merlino pesciolini (Questo il Mondo fa Grar)
Dest sinist, dest sinist, qui e lì, notte e dì,
questo il mondo fa girar.
Bianco e ner, falso e ver,
questo il mondo fa girar.
Per ogni qua c'è sempre un là,
per ogni se c'è sempre un ma,
per ogni su c'è sempre un giù,
per ogni men c'è sempre un più.
Più o men, vuoto o pien,
questo il mondo fa girar,
Qua e là, va’ e sta’,
Sempre in alto mira e va,
esci dalla mediocrità!
Non star solo ad aspettar
ciò che per caso puoi trovar.
Se metti buona volontà
il mondo tutto ti darà.
Però se tu non rischierai,
Nulla mai rosicherai.
Per ogni men c’è sempre un più,
per ogni giù c’è sempre un su
e questo il mondo fa girar.[/size]
Vedi Semola-xunil70 è tutta una questione di gravità:
gli ostacoli ci respingono e il cibo ci attrae (col quadrato della distanza .... )
:p
Preso in giro ma con stile immenso!! :) :) :)
Ok! sono daccordo con te, il problema però è il tempo!
Corro corro corro
tempo per girar ce poco
mutilingue si diventa
e studiar non paventa
ma dopo c e c++
java e molto +
sql da non dimenticar
php non lo scordar
anche per il basic ci dobbiamo dimenar?
ciao! :D
duchetto
09-04-2003, 19:14
Originally posted by "xunil70"
Preso in giro ma con stile immenso!! :) :) :)
Ok! sono daccordo con te, il problema però è il tempo!
Corro corro corro
tempo per girar ce poco
mutilingue si diventa
e studiar non paventa
ma dopo c e c++
java e molto +
sql da non dimenticar
php non lo scordar
anche per il basic ci dobbiamo dimenar?
ciao! :D
bella :)
x a2000 grazie anche se ancora devo vederlo, mi si è inceppato l'office e mi tocca reinstallarlo :muro:
Originally posted by "duchetto"
x a2000 grazie anche se ancora devo vederlo, mi si è inceppato l'office e mi tocca reinstallarlo :muro:
Senti che danni produce a2000 :D
Originally posted by "xunil70"
Preso in giro ma con stile immenso!! :) :) :)
Ok! sono daccordo con te, il problema però è il tempo!
Corro corro corro
tempo per girar ce poco
mutilingue si diventa
e studiar non paventa
ma dopo c e c++
java e molto +
sql da non dimenticar
php non lo scordar
anche per il basic ci dobbiamo dimenar?
ciao! :D
ti ringrazio, ma credimi, questo è tutto tempo perso ! :p
Come vedi in questi giorni, quello che conta sono gli strumenti per costruire (e distruggere).
Fare schermate colorate o travasare dati (col filtro o senza filtro ) da un supporto ad un altro sono solo utilitie.
:)
Originally posted by "duchetto"
x a2000 grazie anche se ancora devo vederlo, mi si è inceppato l'office e mi tocca reinstallarlo :muro:
Comunque l'algoritmo è questo:
Più o men, vuoto o pien,
questo il mondo fa girar,
Qua e là, va’ e sta’.
ossia: moto di una particella in campo potenziale
:p
Originally posted by "a2000"
ti piace così ?
Come hai fatto a farlo in excel?Come si vede il codice?
duchetto
10-04-2003, 18:06
Originally posted by "abxide"
Come hai fatto a farlo in excel?Come si vede il codice?
già come si vede il codice? stamattina l'ho visto è fatto bene :)
Uaglio' e uagliuncelle, allora l'automo cellulare in Excel vi sta' sfruculiann, eh ! :D
Visto che vi interessa, lo pulisco, commento e ve lo mando "in chiaro" ! :)
Originally posted by "duchetto"
già come si vede il codice? stamattina l'ho visto è fatto bene :)
Cmq non corrisponde esattamente al programma che dobbiamo fare.
Originally posted by "giad"
:sofico: a2000 grazie di esistere
ciao
approfittatene ! :)
Questi sono più grafic-divertenti dei frattali ! :cool:
Automi cellulari[u]
Un automa cellulare è un sistema dinamico discreto.
Spazio, tempo e stati del sistema sono discreti.
Ogni elemento dell’automa in una griglia spaziale regolare è detto cella e può essere in uno degli stati finiti che la cella può avere. Gli stati delle celle variano secondo una regola locale, cioè lo stato di una cella ad un dato istante di tempo dipende dallo stato della cella stessa e dagli stati delle celle vicine all’istante precedente. Gli stati di tutte le celle sono aggiornati contemporaneamente in maniera sincrona. L’insieme degli stati delle celle compongono lo stato dell’automa. Quindi lo stato globale dell’automa evolve in passi temporali discreti. Secondo questo modello un sistema viene rappresentato come composto da tante semplici parti ed ognuna di queste parti per evolvere ha una propria regola interna ed interagisce solo con le parti ad essa vicine. L’evoluzione globale del sistema emerge dalla evoluzione di tutte le parti elementari.
Gli automi cellulari possono essere pensati come dei sistemi dinamici astratti che giocano un ruolo nella matematica discreta comparabile a quello delle equazioni differenziali parziali nella matematica del continuo.
Molti studiosi sono dell’opinione che le applicazioni più significative della teoria degli automi cellulari si avranno nella produzione di modelli in grado di simulare il comportamento intrinseco distribuito e di auto-organizzazione.
Il concetto di automa cellulare fa la sua comparsa nell’ambiente scientifico nel 1947 allorché ci si propose di studiare la complessità dei fenomeni biologici e in particolare i meccanismi di funzionamento e auto-riproduzione degli esseri viventi.
Già i primi studiosi di cibernetica cominciarono ad intuire la capacità di alcuni meccanismi di svolgere funzioni tipicamente umane, in modo particolare quelle relative ad alcune attività mentali elementari.
Col termine automa si intende il modello astratto di un dispositivo il quale può assumere certi stati, può ricevere stimoli (input) secondo una scala discreta del tempo dall’ambiente in cui è immerso e reagisce a questi stimoli con una transizione di stato e con una risposta (output) secondo una logica prefissata.[/size]
http://newk.alma.unibo.it/oscar/cmplx/complx04.htm
A2000 in pratica l'automa non deve sempre evitare gli ostacoli, ma dopo aver mangiato il cibo per un certo intervallo di tempo non hà la facoltà di percepire gli ostacoli dunque se ne becca uno muore.
Sub Modulo1
Rem Const II = 20, JJ = 20
Rem Dim OKdig As Boolean
Rem Dim Matr(0 To II + 1, 0 To JJ + 1), pp(1 To 5)
Rem Dim fi(1 To 4)
Rem
Rem Sub aMain1()
Rem
Rem 'Stop
Rem tMax = 2000
Rem Z = 5
Rem i00 = 5: j00 = 5
Rem tdigMax = 0
Rem
Rem Call GenMatr(Matr())
Rem Call Posiziona(i00, j00)
Rem Call Stampa
Rem Call marca(i00, j00, 1)
Rem
Rem 'Stop
Rem pp(1) = 1E+25
Rem pp(2) = 100
Rem pp(3) = 10
Rem pp(4) = 5
Rem pp(5) = 1
Rem
Rem i0 = i00: j0 = j00
Rem 'MsgBox ""
Rem tdig = tdigMax + 1
Rem OKdig = tdig > tdigMax
Rem For t = 1 To tMax
Rem 'MsgBox ""
Rem Sleep 0.5
Rem
Rem Erase fi
Rem For h = 1 To Z
Rem fi(1) = fi(1) + f_Matr(i0 + h, j0) * pp(h)
Rem fi(2) = fi(2) + f_Matr(i0 - h, j0) * pp(h)
Rem fi(3) = fi(3) + f_Matr(i0, j0 + h) * pp(h)
Rem fi(4) = fi(4) + f_Matr(i0, j0 - h) * pp(h)
Rem Next h
Rem
Rem 'If j0 = 1 Then Stop
Rem 'Stop
Rem Select Case f_iMax(fi())
Rem Case 1: i = i0 + 1: j = j0
Rem Case 2: i = i0 - 1: j = j0
Rem Case 3: i = i0: j = j0 + 1
Rem Case 4: i = i0: j = j0 - 1
Rem Case Else: Stop 'errore
Rem End Select
Rem i = f_cut(i, 1, II)
Rem j = f_cut(j, 1, JJ)
Rem 'If j0 = 1 Then Stop
Rem
Rem 'Digiuno
Rem tdig = tdig + 1
Rem OKdig = tdig > tdigMax
Rem If Matr(i, j) > 0 Then
Rem If tdig > tdigMax Then
Rem Matr(i, j) = 0
Rem tdig = 0
Rem tMax = tMax + 10
Rem marca i, j, xlNone
Rem End If
Rem Else
Rem Matr(i, j) = Matr(i, j) - 0.01
Rem End If
Rem
Rem 'Stop
Rem Call muovi(i0, j0, i, j)
Rem i0 = i: j0 = j
Rem
Rem Next t
Rem
Rem
Rem
Rem
Rem End Sub
Rem
Rem Function f_Matr(i, j)
Rem
Rem If i < 0 Or i > II + 1 Or j < 0 Or j > JJ + 1 Then
Rem f_Matr = 0
Rem Else
Rem If Matr(i, j) > 0 And Not OKdig Then
Rem f_Matr = 0
Rem Else
Rem f_Matr = Matr(i, j)
Rem End If
Rem End If
Rem
Rem
Rem End Function
Rem
Rem
Rem Sub GenMatr(Matr())
Rem
Rem 'Orlatura
Rem For i = 0 To II + 1
Rem Matr(i, 0) = -0.5
Rem Matr(i, JJ + 1) = -0.5
Rem Next i
Rem For j = 1 To JJ
Rem Matr(0, j) = -0.5
Rem Matr(II + 1, j) = -0.5
Rem Next j
Rem
Rem
Rem 'Ostacoli
Rem K1 = 20
Rem For k = 1 To K1
Rem Do
Rem i = Int(1 + Rnd() * (II - 1))
Rem j = Int(1 + Rnd() * (JJ - 1))
Rem If Matr(i, j) = 0 Then
Rem Matr(i, j) = -1
Rem Exit Do
Rem End If
Rem Loop
Rem Next k
Rem
Rem 'Cibo
Rem K2 = 10
Rem For k = 1 To K2
Rem Do
Rem i = Int(1 + Rnd() * (II - 1))
Rem j = Int(1 + Rnd() * (JJ - 1))
Rem If Matr(i, j) = 0 Then
Rem Matr(i, j) = 1
Rem Exit Do
Rem End If
Rem Loop
Rem Next k
Rem
Rem
Rem End Sub
Rem Sub Stampa()
Rem With Worksheets("Foglio1")
Rem With .Range(.Cells(1, 1), .Cells(JJ, II))
Rem .Clear
Rem .Borders(xlEdgeLeft).LineStyle = xlContinuous
Rem .Borders(xlEdgeRight).LineStyle = xlContinuous
Rem .Borders(xlEdgeTop).LineStyle = xlContinuous
Rem .Borders(xlEdgeBottom).LineStyle = xlContinuous
Rem End With
Rem
Rem For i = 1 To II: For j = 1 To JJ
Rem Select Case Matr(i, j)
Rem Case 1: marca i, j, 7
Rem Case -1: marca i, j, 8
Rem Case Else
Rem End Select
Rem Next j, i
Rem
Rem End With
Rem End Sub
Rem Sub Posiziona(i00, j00)
Rem Do Until Matr(i00, j00) = 0
Rem i00 = i00 + 2 * Int(1.999 * Rnd()) - 1
Rem j00 = j00 + 2 * Int(1.999 * Rnd()) - 1
Rem Loop
Rem marca i00, j00, 1
Rem
Rem
Rem End Sub
Rem
Rem
Rem
Rem
Rem Function f_iMax(x())
Rem
Rem xmax = x(1): f_iMax = 1
Rem For i = 2 To UBound(x)
Rem If x(i) > xmax Then
Rem xmax = x(i): f_iMax = i
Rem ElseIf x(i) = xmax Then
Rem If Rnd() > 0.5 Then f_iMax = i
Rem End If
Rem Next i
Rem
Rem End Function
Rem
Rem
Rem
Rem
Rem Sub muovi(i1, j1, i2, j2)
Rem Static kol2_old
Rem c1 = i1: r1 = JJ - j1 + 1
Rem c2 = i2: r2 = JJ - j2 + 1
Rem
Rem With Worksheets("Foglio1")
Rem
Rem Select Case Matr(i, j)
Rem Case Is > 0, Is < -1 'ripristina
Rem .Cells(r1, c1).Interior.ColorIndex = kol2_old
Rem kol2_old = .Cells(r2, c2).Interior.ColorIndex
Rem .Cells(r2, c2).Interior.ColorIndex = 1 'nero
Rem
Rem Case Else 'scia
Rem .Cells(r1, c1).Interior.ColorIndex = 15 'grigio
Rem kol2_old = .Cells(r2, c2).Interior.ColorIndex
Rem .Cells(r2, c2).Interior.ColorIndex = 1 'nero
Rem End Select
Rem
Rem End With
Rem 'Stop
Rem End Sub
Rem
Rem Sub marca(i, j, kol)
Rem c = i: r = JJ - j + 1
Rem With Worksheets("Foglio1")
Rem .Cells(r, c).Interior.ColorIndex = kol
Rem End With
Rem End Sub
Rem Sub Sleep(t)
Rem Static OKtarato As Boolean, DiDt As Double
Rem If Not OKtarato Then
Rem t0 = Timer
Rem imax = 100000#
Rem For i = 1 To imax
Rem x = Sqr(Rnd())
Rem Next i
Rem DiDt = imax / (Timer - t0)
Rem End If
Rem
Rem For i = 1 To t * DiDt
Rem Next i
Rem
Rem
Rem
Rem End Sub
Rem
Rem
Rem
Rem Sub aMain()
Rem tMax = 20
Rem i00 = 5: j00 = 5
Rem i1 = 10: j1 = 15
Rem
Rem i0 = i00: j0 = j00
Rem Call muovi(i0, j0, i0, j0, 1, 1)
Rem 'Stop
Rem For t = 1 To tMax
Rem r = Sqr((i1 - i0) ^ 2 + (j1 - j0) ^ 2)
Rem If r = 0 Then Exit For
Rem nx = (i1 - i0) / r
Rem ny = (j1 - j0) / r
Rem If Abs(nx) > Abs(ny) Then
Rem i = i0 + Sgn(nx): j = j0
Rem Else
Rem j = j0 + Sgn(ny): i = i0
Rem End If
Rem 'Stop
Rem If i < 1 Then i = 1: If i > II Then i = II
Rem If j < 1 Then j = 1: If j > JJ Then j = JJ
Rem
Rem 'Stop
Rem
Rem
Rem Call muovi(i0, j0, i, j, 15, 1)
Rem i0 = i: j0 = j
Rem 'MsgBox ""
Rem
Rem Next t
Rem
Rem
Rem
Rem
Rem End Sub
Rem
Rem
Rem Function f_cut(x, xmin, xmax)
Rem f_cut = x
Rem If x < xmin Then f_cut = xmin
Rem If x > xmax Then f_cut = xmax
Rem
Rem End Function
Rem
End Sub
??????????????????????????
Originally posted by "abxide"
A2000 in pratica l'automa non deve sempre evitare gli ostacoli, ma dopo aver mangiato il cibo per un certo intervallo di tempo non hà la facoltà di percepire gli ostacoli dunque se ne becca uno muore.
Si può fare anche questo molto facilmente, ma non mi sembra così dalla traccia:
"
.....
Si utilizzi ancora un generatore casuale per introdurre in K2 posizioni della matrice del cibo per il robot. Il robot inizialmente è affamato ed ha la capacità di distinguere il cibo dagli ostacoli; se 'vede' del cibo allora, e solo allora, tenderà a spostarsi sul cibo e mangiarlo, altrimenti si muoverà casualmente evitando gli ostacoli.
Dopo aver mangiato del cibo la sua 'vita' aumenterà di un valore M prefissato, ma, per un periodo di T mosse, non avendo più fame, continuerà a spostarsi casualmente non distinguendo il cibo dagli ostacoli. Simulare il comportamento del robot
NB Il programma termina quando si azzera la 'vita' del robot."
Originally posted by "xunil70"
Sub Modulo1
Rem Const II = 20, JJ = 20
Rem Dim OKdig As Boolean
Rem Dim Matr(0 To II + 1, 0 To JJ + 1), pp(1 To 5)
.....
End Sub
??????????????????????????
ma hai capito come funziona ??????????????? :p
A me non funziona su OpenOffice!!!!
Ma lo hai fatto in vb6? Come lo hai trasportato sull'excel?
Così è più bellino :)
Per il codice: Alt+F11
Originally posted by "abxide"
Ma lo hai fatto in vb6? Come lo hai trasportato sull'excel?
Semplicemente bisogna usare Excel come un super-controllo (una super-Grid) di VisualBasic.
:cool:
Non è Excel che contiene VBA ma è VBA che contiene Excel ! :)
Comunque Excel, come tutti i controlli di VB, è solo un'interfaccia grafica; la sostanza in questo caso, è tutta nelle 50 righe di codice della subroutine aMain.
Ciao.
:)
P.S.
In Excel2000 c'è VisualBasic 6.0 ... ooops .... volevo dire: in VisualBasic 6.0 c'è Excel2000 ! :D
duchetto
11-04-2003, 20:57
me lo sto studiando un po', dopo ti faccio un paio di domande,non conosco il vb6 però si capisce abbastanza :)
Originally posted by "duchetto"
me lo sto studiando un po', dopo ti faccio un paio di domande,non conosco il vb6 però si capisce abbastanza :)
ma ti piace o no ?
hai scaricato l'ultima versione (Automa2.xls) ?
duchetto
11-04-2003, 21:40
si mi piace, sto cercando di capire le procedure e funzioni che hai utilizzato(automa 2)
ma dimmi una cosa è una cagata sto programma?
duchetto
11-04-2003, 21:53
come lo reputi come difficoltà?
come mai hai utilizzato due matrici una per il cibo e l'altra per gli ostacoli?
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 ! :p ), in TurboPascal la vedo lunga, in VisualPascal alias Delphi sarà la solita composizione Visual di oggetti grafici su Form (I suppose).
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. :D
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 :muro: e attratto dalle celle cibo :pig: in funzione della distanza da queste :sofico: .
:)
Originally posted by "duchetto"
...
come mai hai utilizzato due matrici una per il cibo e l'altra per gli ostacoli?
Perchè il campo di forze repulsive delle celle ostacolo è costante, mentre il campo di forze attrattive delle celle cibo è variabile nel tempo in funzione dello stato di "digiuno" (adig = 0 o 1) dell'automa e della rinnovabilità del cibo (OKrinn)
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.
Originally posted by "duchetto"
si mi piace, sto cercando di capire le procedure e funzioni che hai utilizzato(automa 2)
ma dimmi una cosa è una cagata sto programma?
Accipicchia, qui ti offendono a2000!!!! :D :D :D :D
xunil70, ma ti piace o no ?
se ti piace ci metto anche le gif animate ! :p
xunil70, ma ti piace o no ?
Ok, lo leggerò e ti risponderò quanto prima!
se ti piace ci metto anche le gif animate !
Faresti questo per me?
Grazie mille!
Originally posted by "xunil70"
Ok, lo leggerò e ti risponderò quanto prima!
Faresti questo per me?
Grazie mille!
ci devi giocare, non leggere. hai visto che puoi cambiare tutto a piacere ?
potremmo mettere più AutomI, con strategie diverse nello stesso campo e farli combattere tra loro. :D :D
Ogni AutomO è una subroutine che legge la matrice di stato (ostacoli, cibo, altri automi) e restituisce lo spostamento definito in base alla sua strategia:
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)
Poi il Main gestisce la grafica (con PacMan animati :muro: ), l'aggiornamento della matrice di stato nonchè le situazioni di "collisione-mangiamento" tra gli AutomI.
L'affare s'ingrossa !
:sofico:
duchetto
12-04-2003, 11:18
poi ci scanniamo tra di noi :eek: :D
Originally posted by "duchetto"
poi ci scanniamo tra di noi :eek: :D
allora facciamo così:
quando due AutomI collidono non si mangiano ma trombano e generano un'altro AutomO con caratteristiche genetiche più o meno miste :D :D
[/siz]
Originally posted by "a2000"
ci devi giocare, non leggere. hai visto che puoi cambiare tutto a piacere ?
Si!
Originally posted by "a2000"
potremmo mettere più AutomI, con strategie diverse nello stesso campo e farli combattere tra loro. :D :D
Ogni AutomO è una subroutine che legge la matrice di stato (ostacoli, cibo, altri automi) e restituisce lo spostamento definito in base alla sua strategia:
Infatti era a questo che mi riferivo con lettura.
Originally posted by "a2000"
Poi il Main gestisce la grafica (con PacMan animati :muro: ), l'aggiornamento della matrice di stato nonchè le situazioni di "collisione-mangiamento" tra gli AutomI.
L'affare s'ingrossa !
:sofico:
Se ti si ingrossa starò lontano da te per ora! :D :D
allora facciamo così:
quando due AutomI collidono non si mangiano ma trombano e generano un'altro AutomO con caratteristiche genetiche più o meno miste :D :D
Allora cominciamo a parlare di ereditarietà?
Non è per caso che tu finisca per convertirti al SIPLUSPLUS! :sofico:
Originally posted by "xunil70"
Allora cominciamo a parlare di ereditarietà?
Non è per caso che tu finisca per convertirti al SIPLUSPLUS! :sofico:
Mi sembra che voi puspussiani interpretiate l'ereditarietà in modo alquanto venale come ereditare l'argenteria, l'orologio della nonna, e il tavolo di noce (proprietà) o qualche tic nervoso dello zio paterno (metodi) .... :D :D
qui invece, caro xunil70, non si deve fare la semplice frizione :mc: , si deve gooodeeeree :pig: :pig: :pig:
ossia si devono generare algoritmi ([b]
occhio ai pescioloni :sofico:
:D :D
Originally posted by "a2000"
...ossia si devono generare algoritmi ([b]
occhio ai pescioloni :sofico:
:D :D
...che fortuna.......pensavo molto più complessi!!! :D
Stiamo sconfinando negli algoritmi genetici ;) Quindi la cosa si sta facendo interessante :)
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...
allora posso togliere il rem da
Sub AutomO_cionci( ... )
pardon
class AutomO_cionci
?
:p
Originally posted by "cionci"
Stiamo sconfinando negli algoritmi genetici ;) Quindi la cosa si sta facendo interessante :)
Mettiamo nei geni i vari algoritmi adottabili...
....
adottabili ? l'anagrafica degli algoritmi ? e siamo tornati ai database ....
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:
i = i0 - 1 + 2 * Int(Rnd() + 0.5)
j = j0 - 1 + 2 * Int(Rnd() + 0.5)
alla fine, nella vita, muoversi a ca++o è meglio che seguire strategie complesse :pig:
Originally posted by "a2000"
adottabili ? l'anagrafica degli algoritmi ? e siamo tornati ai database ....
caro cionci, tu somigli ai tuoi genitori ma non ti comporti come loro ...
Appunto...
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 :))...e così via... In pratica degli algoritmi che si basano su una sequenza di priorità...
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...
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. :cool:
Perchè poi può capitare che se decidi di ciulare ti si freddano le tagliatelle (o viceversa .... :pig: ) e magari poi torni a casa e devi fare pure la relazione ! :muro:
La base, e la cosa sorprendente, degli automi cellulari è che regole semplici generano comportamenti complessi, non vorrei che ai tuoi capitasse il contrario ! :D
Originally posted by "a2000"
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. :cool:
Perchè poi può capitare che se decidi di ciulare ti si freddano le tagliatelle (o viceversa .... :pig: ) e magari poi torni a casa e devi fare pure la relazione ! :muro:
La base, e la cosa sorprendente, degli automi cellulari è che regole semplici generano comportamenti complessi, non vorrei che ai tuoi capitasse il contrario ! :D
Noi c++isti siamo così:
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;
}
:D :D :D
allochiamo dinamicamente la nostra giornata e facciamo sempre le stesse cose, non abbiamo algoritmi geneticamente modificati impiantati nella nostra CPU. :eek:
:D :D :D :D :D :D
Ciao.
:D
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 :p
Scusa Cionci, ma buona documentazione su questi algoritmi genetici dove la trovo?
Grazie!
*l'importante è che non siano OGM* :)
Comunque buona serata a tutti e a domani!
Ciao.
Io li ho visti brevemente in un corso all'università...e nello stesso corso ho studiato anche le reti neurali (tra l'altro sono anche correlati visto che si possono utilizzare per il dimensionamento dei pesi delle reti neurali)...
Comunque ci sono molti siti che li trattano...su Google ne trovi tanti...ad esempio: http://www.geocities.com/CapeCanaveral/Lab/5337/
Tra l'altro quello del sito ha studiato dove studio io :)
Hai studiato nella michigan state university?
:D
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 esemplar...
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...[/size]
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 sistma....
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...[/size]
:D
Infatti servono a selezionare (filtrare) tra i vari algoritmi (esemplari) quello più performante nell'ambiente in cui "vive".
Solo che i vari algoritmi li devi avere e i nostri amici di Napoli quello devono fare.
Se poi tra i vari algoritmi c'è quello ottimo basato su un teorema che lo dimostra, il tuo approccio come quello delle reti neurali, della fuzzy logic e anche degli automi cellulari è solo decadenza di fine secolo. :mc:
Il fatto che tu prenda anche solo in considerazione il fatto di avere 10000 vincoli di cui solo 100 indipendenti dimostra il modo approssimativo e superficiale con cui affrontate i problemi a casa tua (ing ... si fa per dire ... informatica).
Caro cionci, tu devi fare un'elenco di If Then ElseIf Then (o una bella sommatoria pesata delle funzioni di fitness :D :D ) per decidere se mangiare, trombare o lavorare e qualcun'altro ha risolto TUTTO con 5 caratteri: e = mc² ! :p :p :p
:sofico:
enola gay
Originally posted by "abxide"
Hai studiato nella michigan state university?
Se guardi la sua tesi...è dell'univ. di Pisa...
Originally posted by "a2000"
Infatti servono a selezionare (filtrare) tra i vari algoritmi (esemplari) quello più performante nell'ambiente in cui "vive".
Solo che i vari algoritmi li devi avere e i nostri amici di Napoli quello devono fare.
Infatti esula da quello che devono fare... E' una cosa completamente diversa, ma anche quello che proponevi tu (la presenza di più automi che copulano ;)) è fuori traccia...
Originally posted by "a2000"
Se poi tra i vari algoritmi c'è quello ottimo basato su un teorema che lo dimostra, il tuo approccio come quello delle reti neurali, della fuzzy logic e anche degli automi cellulari è solo decadenza di fine secolo. :mc:
Chiaro...vorrei anche vedere... Anche se non capisco cosa c'entrino le reti neurali...
Originally posted by "a2000"
Il fatto che tu prenda anche solo in considerazione il fatto di avere 10000 vincoli di cui solo 100 indipendenti dimostra il modo approssimativo e superficiale con cui affrontate i problemi a casa tua (ing ... si fa per dire ... informatica).
Era solo per fare un esempio...ed in ogni caso non sempre i vincoli si possono ottenere sui fogli...molte volte derivano da misure sperimentali o da limitazioni stesse della sperimentazione...
Comunque ho appurato che sai di cosa stiamo parlando visto che pari di funzione di fitness...
Originally posted by "a2000"
enola gay
Era una citazione musicale o cosa ?
no, era una citazione nucleare ! :cool:
P.S.
studi sempre da moderatore eh ... :pig:
non si riesce a portarti alla sana rissa ! :mad:
Originally posted by "abxide"
Hai studiato nella michigan state university?
uagliò, ma fuoss' ca fuoss' ricchione ? :D
vi interessa la versione col PacMan animato e i panini ? :p
Originally posted by "a2000"
no, era una citazione nucleare ! :cool:
Ah...ok... Oltre ad essere l'aereo che ha sganciato la bomba atomica su Hiroshima c'è anche una canzone dei Cure che si chiama così...
Originally posted by "a2000"
studi sempre da moderatore eh ... :pig:
non si riesce a portarti alla sana rissa ! :mad:
E' difficile portarmi alla sana rissa... In tutto il tempo che sto sul forum ci è riuscita una sola persona...e non sei tu :D :p
E' successo nel forum delle schede video?
Liì veramente si preparano degli agguati! :mad:
Originally posted by "cionci"
...
E' difficile portarmi alla sana rissa... In tutto il tempo che sto sul forum ci è riuscita una sola persona...e non sei tu :D :p
E chi è che ti ha sverginato ? :eek:
Originally posted by "a2000"
vi interessa la versione col PacMan animato e i panini ? :p
Originally posted by "a2000"
uagliò, ma fuoss' ca fuoss' ricchione ? :D
MM.. scusa ma non ho capito cosa c'entra :confused:
Originally posted by "a2000"
E chi è che ti ha sverginato ? :eek:
Manco me lo ricordo... Era sulla discussione di una news del sito...
Originally posted by "cionci"
Manco me lo ricordo... Era sulla discussione di una news del sito...
:pig: :eek: :pg:
:D
Originally posted by "abxide"
MM.. scusa ma non ho capito cosa c'entra :confused:
niente.
Che ha di strano quella frase ? E' un toscanismo.... manco = non... nemmanco (questo a dire la verità non lo usa quasi nessuno) = nemmeno ;)
Comunque mi sembra che qualcuno qui stia troppo sui siti porno, vero a2000 ? :D
Originally posted by "cionci"
Manco me lo ricordo... Era sulla discussione di una news del sito...
no, non era per la linguistica, cioè ... anche per quello :pig: , ma per quel certo stralunamento e amnesia che può prendere in certe situazioni ... molto dure :D
http://www.peocaffe.it/karnival/samsara__racconti_xxxxxxx.html
saix coix bacchettonix senzax sensox chex cix sonox sulx forumx ... :p
Originally posted by "a2000"
vi interessa la versione col PacMan animato e i panini ? :p
duchetto, abxide, minou, bizet, matisse a che punto siete ?
io l'ho preparata, però in onore alla grande Napoli, la sola vera città e capitale d'Italia, ho tolto i panini e agg' mis' nu bell piatt 'e maccarun' !
:D
AAUHAU, meglio se in questo periodo ci mettevi una pastiera o nu bellu casatiell :D Cmq io lo stò sviluppando in turbo pascal, anche se un pò a rilento. Per il momento ho fatto un pò di grafica e il verme si muove ma a cape e c.. :) cioe non riesce ad evitare gli ostacoli e il cibo se lo acchiappa e felice ma non riesce a procurarselo da solo. Per il generatore di movimenti casuali ho utilizzato una funzione random, che ad esempio tira fuori numeri da 1 4 ed ad ogni numero ho associato uno spostamento ma mi pare che il bruco girà più o meno nello stessa porzione del video. Come risolvo la cosa? :p
e uaglio' ma allora come dice verluocco, i' vi tratt' a carne e maccarun' ma "tu nu' ssient' a mme' "
i' ti' voglio bene assaie ma tu nu' sient' a mme' .... :cry:
http://www.netway.it/~defabio/canz2.ht
o' verme como o chiam' tu, si muovo, esso isso, in un campo potenziale variabile nel "tempo", capisc' a mme' :p
guardati la Sub aMain, dimmi che scuola fai e poi magari ti mando una formuletta esplicativa con cui risolvi anche il problema di nun' farl' turna' ndret' u' verm' capa a cazz' !
duchetto
19-04-2003, 20:42
Originally posted by "a2000"
, minou, bizet, matisse a che punto siete ?
:confused: :confused: chi sono costoro
anche io lo sto a fa' in turbo pascal solo che quel vb è un po' ostrogoto per me e quindi onde evitare di postare poi dal reparto di neuropsichiatria del cardarelli me lo sto facendo da me, il mio "automo" adesso sta imparando a camminare anche perchè non gli sto dedicando molto tempo, secondo me mi skifa un po' :sofico:
Originally posted by "a2000"
.... minou, bizet, matisse a che punto siete ?
:D
Originally posted by "duchetto"
:confused: :confused: chi sono costoro
tutti aristoca+zi :D
Originally posted by "a2000"
e uaglio' ma allora come dice verluocco, i' vi tratt' a carne e maccarun' ma "tu nu' ssient' a mme' "
i' ti' voglio bene assaie ma tu nu' sient' a mme' .... :cry:
http://www.netway.it/~defabio/canz2.ht
o' verme como o chiam' tu, si muovo, esso isso, in un campo potenziale variabile nel "tempo", capisc' a mme' :p
guardati la Sub aMain, dimmi che scuola fai e poi magari ti mando una formuletta esplicativa con cui risolvi anche il problema di nun' farl' turna' ndret' u' verm' capa a cazz' !
Ho capito cosa intendi per campo potenziale variabile nel tempo, che dovrebbe essere di due quadratini nord,sud,est,ovest al "verme".Cmq a dir la verità non ho ancora visto il sorgente del tuo programma, anche se è da un mesetto che ci lavoro in vb.Cmq visto che ci vuoi trattare a carne e maccarun :D che ne dici di scrivere pure il codice in pseudo-codifica cosi' capiscono bene tutti come funziona o' "suricillo" :sofico:
P.s Non sò perchè ma mi ricordi lello arena nel film del grande massimo troisi "No grazie il caffè mi rende nervoso" eheheh :p
P.S. puro tu, non so perché, mi ricordi Alessandro Di Sanzo in "Mary per sempre" :)
Originally posted by "a2000"
P.S. puro tu, non so perché, mi ricordi Alessandro Di Sanzo in "Mary per sempre" :)
Non lo ho visto mi spiace :D Cmq nun t' scurdà che io stò aspettando ancora il pseudo codice del programmino rinominato
o' suricill 'nammurat :D (Oddio la pastiera mi stà facendo un brutto effetto..)
ma se solo la tastiera ti fa nu' brutto effetto, figuriamoc' o' TurboPasc'quale ... :D
tranguill' .... :cool:
http://film.spettacolo.virgilio.it/imgbank/THUMB/ME/00644003.JPG
t' piac' o' presepe' eh !
bello, bello, mpress' a mpress', tel chi' o' pseudocodice ! :D
Originally posted by "a2000"
t' piac' o' presepe' eh !
bello, bello, mpress' a mpress', tel chi' o' pseudocodice ! :D
Si nù babbà(Nel senso buono del termine), grazie! :D
quann' che c'sto mmare, quann' che c' sta' o' ssole :o :o :o
naranaranaranaranaranarana :o :o :o
chi avut'avuta'avut :o :o
chi a rat'arat'arat :o :o
scurdammuci_o' passat :o :o :o :o
simm' e Napule paisaaaaaa !!! :o :o :o :o :o :o :o
:D :D
duchetto
22-04-2003, 15:30
Originally posted by "a2000"
quann' che c'sto mmare, quann' che c' sta' o' ssole :o :o :o
naranaranaranaranaranarana :o :o :o
chi avut'avuta'avut :o :o
chi a rat'arat'arat :o :o
scurdammuci_o' passat :o :o :o :o
simm' e Napule paisaaaaaa !!! :o :o :o :o :o :o :o
:D :D
UE! :D :sofico:
Originally posted by "duchetto"
UE! :D :sofico:
sì, sì, UE, UE !
ma .... ti piascccc o' presepe o no ? :confused:
http://web.tiscali.it/no-redirect-tiscali/ilpresepe/CBove/PresepeCarBove.jpg
comunque mo' v' mann' a realizze p' maccarun' (just' a moment' ca' teng' qualche troubbble p' st' ca++' e' wavesss)
:D
accattat'ville a nuova realizza pp' maccarun' ![/siz]
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.