Ferramentas do usuário

Ferramentas do site


geopro:pedro:mason

Essa é uma revisão anterior do documento!


Mason


Homepage http://cs.gmu.edu/%7Eeclab/projects/mason/
Origin George Mason University
Year 2003
Version 11
License Academic Free License
Language Java


It has an example of Schelling's model in /home/pedro/codigo/mason/sim/app/schelling/Agent.java. The model is composed by reds, blues, empty sites where the players can move, and non-available sites. Following there is an example of calculating the unsatisfaction and moving to another site:

      // get all the places I can go.  This will be slow as we have to rely on grabbing neighbors.
      sch.neighbors.getNeighborsMaxDistance(loc.x,loc.y,sch.neighborhood,false,neighborsX,neighborsY);
      
      // compute value
      double val = 0;
      int threshold = sch.threshold;  // locals a little faster
      int numObjs = neighborsX.numObjs;
      int[] objsX = neighborsX.objs;
      int[] objsY = neighborsY.objs;
      int myVal = locs[x][y];
      
      for(int i=0;i<numObjs;i++)
          {
          if (locs[objsX[i]][objsY[i]] == myVal // just like me
              && !(objsX[i] == x && objsY[i] == y))  // but it's NOT me
              {
              val += 1.0/Math.sqrt((x-objsX[i])*(x-objsX[i]) + (y-objsY[i])*(y-objsY[i]));
              if (val >= threshold) return;  // we're not moving
              }
          }
      
      // find a new spot to live -- a random jump? Move to a nearby location?  Websites differ
      int newLocIndex = state.random.nextInt(sch.emptySpaces.numObjs);
      Int2D newLoc = (Int2D)(sch.emptySpaces.objs[newLocIndex]);
      sch.emptySpaces.objs[newLocIndex] = loc;
      
      // swap colors
      int swap = locs[newLoc.x][newLoc.y];
      locs[newLoc.x][newLoc.y] = locs[loc.x][loc.y];
      locs[loc.x][loc.y] = swap;
      // adopt new position
      loc = newLoc;
geopro/pedro/mason.1183435472.txt.gz · Última modificação: 2007/07/03 04:04 por pedro