package vnsim.socialNet; import java.util.ArrayList; import java.util.Random; import vnsim.vehicular.routePlan.RouteComputingUtils; import vnsim.vehicular.simulator.Location; import vnsim.vehicular.simulator.RouteSegment; import vnsim.vehicular.scenarios.Route; public class Mobility { public ArrayList> groups; public CellInformation cells[][]; public double sideLengthX; public double sideLengthY; public ArrayList ni; public Mobility(){ groups = new ArrayList>(); cells = new CellInformation[GlobalNetwork.ROWS][GlobalNetwork.COLUMNS]; sideLengthX=GlobalNetwork.LENGTHX/GlobalNetwork.COLUMNS; sideLengthY=GlobalNetwork.LENGTHY/GlobalNetwork.ROWS; System.out.println("side length X "+sideLengthX); System.out.println("side length Y "+sideLengthY); double lat = GlobalNetwork.pointMin.getLatitude(); double lon = GlobalNetwork.pointMin.getLongitude(); for (int i=0;i(); for(int i=0;i=GlobalNetwork.ROWS/3)&&(i<=2*GlobalNetwork.ROWS/3)){ if((j>=GlobalNetwork.COLUMNS/3)&&(j<=2*GlobalNetwork.COLUMNS/3)) cells[i][j].setPriorityEntry(valcenter); }else{ cells[i][j].setPriorityEntry(valedge); } } } } } public void setPriorityExitCenter(boolean center){ Random rand = new Random(); int valcenter = 0; int valedge = 0; for (int i=0;i=GlobalNetwork.ROWS/3)&&(i<=2*GlobalNetwork.ROWS/3)){ if((j>=GlobalNetwork.COLUMNS/3)&&(j<=2*GlobalNetwork.COLUMNS/3)) cells[i][j].setPriorityExit(valcenter); }else{ cells[i][j].setPriorityExit(valedge); } } } } } public void print_cell(){ for (int i=0;i>(); } public void reconfigureEntrie(){ int nrHosts = GlobalNetwork.nrHosts; int nrGroups = (int)GlobalNetwork.GROUPS; createInteraction(nrHosts,nrGroups); for(int i=0;i-1)); //print_adjacency(); print_groups(); GlobalNetwork.GROUPS = groups.size(); } public boolean existsPriority(int r, int priority){ for (int i=0;i>(); ni = new ArrayList(); for(int i=0;i getLocations(){ ArrayList list = new ArrayList(); for(int i=0;i SegmentsRoute; public int[] findCA(int xinit, int xfinal, int yinit, int yfinal,int CA[][]){ int CAmax = 0; int xgasit=-1,ygasit=-1; for(int i=xinit;iCAmax){ CAmax = CA[i][j]; xgasit = i; ygasit = j; } } } int ret[] = new int[3]; ret[0]= 0; if((CAmax==0)){ ret[0]=1; }else if(!cells[xgasit][ygasit].isAvailable()){ ret[0]=1; } ret[1] = xgasit; ret[2] = ygasit; // System.out.println("in find"+xinit+" "+yinit+" "+xfinal+" "+yfinal+" "+xgasit+" "+ygasit); if(xgasit==xfinal && ygasit==yfinal) ret[0]=1; return ret; } public void findPath(int xinit, int xfinal, int yinit, int yfinal,int CA[][]){ int gasit[]=null; System.out.println(xinit+" "+yinit+" "+xfinal+" "+yfinal); if(xfinalyinit){ gasit = findCA(xfinal,xinit,yinit,yfinal,CA); } if(xfinal>xinit && yfinalxinit && yfinal>yinit){ gasit = findCA(xinit,xfinal,yinit,yfinal,CA); } if(gasit!=null){ int xgasit,ygasit; boolean recursiv = true; xgasit = gasit[1]; ygasit = gasit[2]; if(gasit[0]==1){ //we have an error xgasit = xfinal; ygasit = yfinal; recursiv = false; } if(xgasit==xinit && ygasit==yinit){ xgasit = xfinal; ygasit = yfinal; recursiv = false; } if(xgasit==xfinal && ygasit==yfinal){ recursiv = false; } Location loc; Random rand = new Random(); // System.out.println(cells[xgasit][ygasit].isAvailable()); int index = rand.nextInt(cells[xgasit][ygasit].getNoPoints()); loc = cells[xgasit][ygasit].getValidLocation(index); SegmentsRoute.add(loc); if(recursiv) findPath(xgasit,xfinal,ygasit,yfinal,CA); } } public ArrayList getSocialAtractionRoute(int i,int cellX[], int cellY[]){ int CA[][] = new int[GlobalNetwork.ROWS][GlobalNetwork.COLUMNS]; for(int j=0;j(); findPath(cellX[i],xfinal,cellY[i],yfinal,CA); //we have a list of locations ArrayList rs = vnsim.vehicular.routePlan.RouteComputingUtils.mergeRoute(SegmentsRoute); return rs; } }