01.01.2015 Views

Table des matières - Gilles Daniel

Table des matières - Gilles Daniel

Table des matières - Gilles Daniel

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

394 Modélisation et simulation multi-agents pour Sciences de l'Homme et de la Société.<br />

Dim nc As Integer<br />

' nbr de lignes du domaine<br />

Dim nl As Integer<br />

' nbr de colonnes du domaine<br />

Dim nT As Integer<br />

' nbr total de cellules du domaine<br />

Dim nIter As Integer ' n° d'itération<br />

Dim PopTot As Integer ' population totale occupant le domaine<br />

Dim NbGroupes As Integer ' Nbr de groupes sociaux<br />

Dim NbLibres As Integer ' Nbr de cases libres = Nt-PopTot<br />

Dim Seuil As Double ' Seuil de tolérance<br />

Dim EstInitialise As Boolean ' =TRUE si on a initialisé<br />

Dim CellsLibres() As Integer 'contient les n° de cellules libres<br />

Dim Rg() As Integer<br />

'permet de définir un ordre aléatoire<br />

Public Sub UnPas(nInsatisfaits As Integer,_<br />

nIteration As Integer)<br />

Dim i As Integer ' n° de ligne<br />

Dim j As Integer ' n° de colonne<br />

Dim p As Integer ' n° aléatoire de cellule<br />

Dim n As Integer ' numéro de cellule<br />

Dim SV As Double ' nombre seuil pour le voisinage<br />

If Not EstInitialise Then Call InitDomaine<br />

Application.ScreenUpdating = False<br />

SV = Seuil * nV ' nbr d’étrangers maxi tolérés ds voisinage<br />

nInsatisfaits = 0<br />

'on calcule un ordre de parcourt aléatoire <strong>des</strong> cellules<br />

Call RangsAleatoires(nT, Rg)<br />

'déplacements <strong>des</strong> insatisfaits<br />

For n = 0 To nT - 1<br />

p = Rg(n)<br />

' numéro de rang aléatoire<br />

i = (p \ nc) + 1 ' n° de ligne associée à p<br />

j = (p Mod nc) + 1 ' n° de colonne associée à p<br />

If (T(i,j) > 0) And (NbEtrangers(i, j, T(i, j)) > SV) Then<br />

nInsatisfaits = nInsatisfaits + 1<br />

Call DeplacerIndividu(i, j, T(i, j))<br />

End If<br />

Next n<br />

nIteration = nIteration + 1<br />

' sortie <strong>des</strong> résultats :<br />

Range("nInsatisfaits") = nInsatisfaits<br />

Range("nIter") = nIteration<br />

Range("Domaine") = T<br />

Application.ScreenUpdating = True<br />

End Sub 'UnPas<br />

' fonction de calcul du nombre d’étrangers dans le voisinage :<br />

Public Function NbEtrangers(i As Integer, j As Integer,_<br />

nG As Integer) As Integer<br />

Dim k As Integer<br />

Dim ii As Integer<br />

Dim jj As Integer

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!