|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
50 righe di codice.
![]() |
![]() |
![]() |
![]() |
#22 | |
Senior Member
Iscritto dal: May 2001
Città: Naples
Messaggi: 1063
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#23 | |
Senior Member
Iscritto dal: Nov 2000
Città: Sospeso nell'incredibile
Messaggi: 830
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#24 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Uaglio' e uagliuncelle, allora l'automo cellulare in Excel vi sta' sfruculiann, eh !
![]() Visto che vi interessa, lo pulisco, commento e ve lo mando "in chiaro" ! ![]() |
![]() |
![]() |
![]() |
#25 | |
Senior Member
Iscritto dal: May 2001
Città: Naples
Messaggi: 1063
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#26 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
cioè ?
|
![]() |
![]() |
![]() |
#27 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#28 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Questi sono più grafic-divertenti dei frattali !
![]() 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 |
![]() |
![]() |
![]() |
#29 |
Senior Member
Iscritto dal: May 2001
Città: Naples
Messaggi: 1063
|
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.
__________________
![]() |
![]() |
![]() |
![]() |
#30 |
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
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 ??????????????????????????
__________________
? |
![]() |
![]() |
![]() |
#31 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
" ..... 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." |
|
![]() |
![]() |
![]() |
#32 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: Sep 2001
Città: Sulmona
Messaggi: 146
|
A me non funziona su OpenOffice!!!!
__________________
? |
![]() |
![]() |
![]() |
#34 |
Senior Member
Iscritto dal: May 2001
Città: Naples
Messaggi: 1063
|
Ma lo hai fatto in vb6? Come lo hai trasportato sull'excel?
__________________
![]() |
![]() |
![]() |
![]() |
#35 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Così è più bellino
![]() Per il codice: Alt+F11 |
![]() |
![]() |
![]() |
#36 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
![]() 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 ! ![]() |
|
![]() |
![]() |
![]() |
#37 |
Senior Member
Iscritto dal: Nov 2000
Città: Sospeso nell'incredibile
Messaggi: 830
|
me lo sto studiando un po', dopo ti faccio un paio di domande,non conosco il vb6 però si capisce abbastanza
![]() |
![]() |
![]() |
![]() |
#38 | |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
Quote:
hai scaricato l'ultima versione (Automa2.xls) ? |
|
![]() |
![]() |
![]() |
#39 |
Senior Member
Iscritto dal: Nov 2000
Città: Sospeso nell'incredibile
Messaggi: 830
|
si mi piace, sto cercando di capire le procedure e funzioni che hai utilizzato(automa 2)
ma dimmi una cosa è una cagata sto programma? |
![]() |
![]() |
![]() |
#40 |
Bannato
Iscritto dal: Jan 2001
Messaggi: 1976
|
cioè ?
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:57.