source: proiecte/ptvs/src/vnsim/socialNet/Main.java @ 31

Last change on this file since 31 was 31, checked in by (none), 14 years ago
File size: 9.2 KB
Line 
1package vnsim.socialNet;
2
3
4import vnsim.socialNet.GlobalNetwork;
5import vnsim.gui.MapLoader;
6import vnsim.map.object.*;
7
8import java.util.ArrayList;
9
10import java.io.File;
11
12import javax.swing.JFileChooser;
13import javax.swing.JOptionPane;
14
15import vnsim.vehicular.generator.NewCarEvent;
16import vnsim.vehicular.routePlan.RouteComputingUtils;
17import vnsim.vehicular.scenarios.EntryExitScenario;
18import vnsim.vehicular.scenarios.EntryScenario;
19import vnsim.vehicular.scenarios.Route;
20import vnsim.vehicular.simulator.Location;
21import vnsim.vehicular.simulator.RouteSegment;
22import vnsim.vehicular.scenarios.Scenario;
23
24public class Main {
25       
26        public static Scenario getScenario(String map, ArrayList<Location> entries, ArrayList<Location> exits,ArrayList<String> driverTypes, ArrayList<Route> routes, String name){
27                Scenario s = new Scenario(map,entries,exits,driverTypes,routes,name);
28
29                EntryScenario es;
30                EntryExitScenario ees;
31                int i, j;
32                Route r;
33               
34                for (i = 0; i < entries.size(); i++) {
35                        es = new EntryScenario(entries.get(i));
36                        es.flow = 400;
37                        es.percentsDriverTypes.add(new Integer(GlobalNetwork.CALM));
38                        es.percentsDriverTypes.add(new Integer(GlobalNetwork.REGULAR));
39                        es.percentsDriverTypes.add(new Integer(GlobalNetwork.AGGRESIVE));
40
41                        ees = new EntryExitScenario(entries.get(i), exits.get(i));
42                        ees.percentsEachRoute.add(new Integer(100));
43                        r = new Route();
44                        r.entry = entries.get(i);
45                        r.exit = exits.get(i);
46                        r.route = new ArrayList<RouteSegment>();
47                        try {
48                                r = returnRoute(r.entry, r.exit);
49
50                        } catch (Exception e) {
51                        }
52                       
53                        ees.routes.add(r);
54                        es.entryExits.add(ees);
55                        s.allRoutes.add(r);
56
57                        for (j = 0; j < es.entryExits.size(); j++) {
58                                es.entryExits.get(j).percentOfFlow = (int) (100);
59                        }
60                        s.entryScenarios.add(es);
61                }
62                return s;
63        }
64       
65        public static Route returnRoute(Location entrie, Location exit){
66                RouteComputingUtils rcu = new RouteComputingUtils();
67                //return rcu.bestRoute(entrie,exit);
68                return rcu.shortestPathByTimeAproximation(entrie,exit);
69        }
70       
71        public static ArrayList<Route> returnRoutes(ArrayList<Location> entries, ArrayList<Location> exits){
72                ArrayList<Route> route = new ArrayList<Route>();
73                for(int i=0;i<entries.size();i++){
74                        Route raux = returnRoute(entries.get(i),exits.get(i));
75                        route.add(raux);
76                }
77                return route;
78        }
79       
80        public static Route returnSocialNetworkRoute(int i,Location entry, Location exit, Mobility mob, int cellX[], int cellY[]){
81                ArrayList<RouteSegment> rs = mob.getSocialAtractionRoute(i,cellX, cellY);
82                Route route = new Route();
83                route.entry = entry;
84                route.exit = exit;
85                route.route = rs;
86                return route;
87        }
88       
89        public static ArrayList<Route> returnSocialNetworkRoutes(ArrayList<Location> entries, ArrayList<Location> exits,Mobility mob, int cellX[], int cellY[]){
90                ArrayList<Route> route = new ArrayList<Route>();
91                for(int i=0;i<entries.size();i++){
92                        Route raux = returnSocialNetworkRoute(i,entries.get(i),exits.get(i),mob,cellX,cellY);
93                        route.add(raux);
94                }
95                return route;
96        }
97       
98        public static Scenario recofigurare(){
99               
100                Mobility mob = GlobalNetwork.socialMobility;
101                ArrayList<Location> entries; 
102                ArrayList<Location> exits;
103                mob.deleteAll();
104                mob.reconfigureEntrie();
105                mob.placeNodes(0);
106                mob.initalPositions();
107                entries = mob.getLocations();
108                int cellX[] = new int[GlobalNetwork.nrHosts];
109                int cellY[] = new int[GlobalNetwork.nrHosts];
110                mob.getPositions(cellX,cellY);
111                mob.deleteAll();
112                mob.reconfigureExit();
113                mob.placeNodes(1);
114                mob.initalPositions();
115                exits = mob.getLocations();
116                ArrayList<Route> route;
117                Scenario s;
118                if(GlobalNetwork.numberOfReconfigurations%2==0){
119                        route = returnRoutes(exits,entries);
120                        s = getScenario(GlobalNetwork.mapName,exits,entries,GlobalNetwork.driverType,route,GlobalNetwork.name);
121                        GlobalNetwork.entries = exits;
122                        GlobalNetwork.exits = entries;
123                }
124                else{
125                        if(GlobalNetwork.routingType==0){
126                                route = returnSocialNetworkRoutes(entries,exits,mob,cellX,cellY);
127                        }
128                        else{
129                                route = returnRoutes(entries,exits);
130                        }
131                        //route = returnRoutes(entries,exits);
132                        s = getScenario(GlobalNetwork.mapName,entries,exits,GlobalNetwork.driverType,route,GlobalNetwork.name);
133                        GlobalNetwork.entries = entries;
134                        GlobalNetwork.exits = exits;
135                }
136               
137                GlobalNetwork.numberOfReconfigurations=GlobalNetwork.numberOfReconfigurations+1;
138                GlobalNetwork.nextReconfigurationTime=(GlobalNetwork.numberOfReconfigurations+1)*GlobalNetwork.CONFTIME;
139               
140                GlobalNetwork.socialMobility = mob;
141               
142                return s;
143        }
144       
145        public static void addCarEvents(Scenario sc, int crtTime){
146                ArrayList<EntryScenario> entryScenarios=sc.entryScenarios;
147
148                for(int i=0;i<entryScenarios.size();i++) {
149                        EntryScenario es=entryScenarios.get(i);
150                        vnsim.vehicular.generator.Mobility.entryScenarios.add(es);
151                        int period=(int)((double)3600*Globals.executionFPS / (double)es.flow);
152                        NewCarEvent nce=new NewCarEvent(crtTime+period,i, period);
153                        vnsim.vehicular.generator.Mobility.events.addEvent(nce);
154                }
155        }
156       
157        public static void main(String args[]) throws Exception{
158                System.out.println("In main - "+args[0]+" - "+GlobalNetwork.CALM+" "+GlobalNetwork.AGGRESIVE+" "+GlobalNetwork.REGULAR);
159                System.out.println(GlobalNetwork.THESHOLD+" "+GlobalNetwork.REWIRE);
160                System.out.println(GlobalNetwork.CONFTIME);
161                System.out.println(GlobalNetwork.ROWS+" "+GlobalNetwork.COLUMNS+" "+GlobalNetwork.GROUPS);
162                System.out.println("priority: "+GlobalNetwork.PRIORITY+" "+GlobalNetwork.priorityType);
163               
164                Globals.SOCIALNETWORK = 1;
165               
166//              MapLoader.loadSimulationParameters();
167               
168                Util.getCellSize(args[0]);     
169               
170                System.out.println("Map loaded...");
171               
172                GlobalNetwork.numberOfReconfigurations=0;
173                GlobalNetwork.nextReconfigurationTime=GlobalNetwork.CONFTIME; 
174                GlobalNetwork.nrHosts = GlobalNetwork.AGGRESIVE + GlobalNetwork.CALM + GlobalNetwork.REGULAR;
175               
176                GlobalNetwork.LENGTHX = GlobalNetwork.pointMax.getLongitude() - GlobalNetwork.pointMin.getLongitude();
177                GlobalNetwork.LENGTHY = GlobalNetwork.pointMax.getLatitude() - GlobalNetwork.pointMin.getLatitude();
178               
179                if(GlobalNetwork.GROUPS > GlobalNetwork.nrHosts){
180                        GlobalNetwork.GROUPS = GlobalNetwork.nrHosts;
181                }
182               
183                vnsim.socialNet.Mobility mob = new vnsim.socialNet.Mobility();
184               
185                if(GlobalNetwork.priorityType==0){
186                        mob.setPriorityEntry();
187                        mob.setPriorityExit();
188                }
189                if(GlobalNetwork.priorityType==1){
190                        mob.setPriorityEntryCenter(false);
191                        mob.setPriorityExitCenter(true);
192                }
193                if(GlobalNetwork.priorityType==2){
194                        mob.setPriorityEntryCenter(false);
195                        mob.setPriorityExitCenter(false);
196                }
197               
198                mob.reconfigureEntrie();
199               
200                mob.placeNodes(0);
201               
202                mob.initalPositions();
203               
204                ArrayList<Location> entries = mob.getLocations();
205               
206                int cellX[] = new int[GlobalNetwork.nrHosts];
207                int cellY[] = new int[GlobalNetwork.nrHosts];
208                mob.getPositions(cellX,cellY);
209               
210                mob.deleteAll();
211               
212                mob.reconfigureExit();
213               
214                mob.placeNodes(1);
215               
216                mob.initalPositions();
217               
218                ArrayList<Location> exits = mob.getLocations();
219               
220                ArrayList<Route> route;
221                if(GlobalNetwork.routingType==0){
222                        route = returnSocialNetworkRoutes(entries,exits,mob,cellX,cellY);
223                }
224                else{
225                        route = returnRoutes(entries,exits);
226                }
227                //ArrayList<Route> route = returnRoutes(entries,exits);
228                //ArrayList<Route> route = returnSocialNetworkRoutes(entries,exits,mob,cellX,cellY);
229               
230                ArrayList<String> driverTypes = new ArrayList<String>();
231                driverTypes.add("very calm");
232                driverTypes.add("regular");
233                driverTypes.add("aggresive");
234               
235                String name = new String("Scenario"+args[0]);
236
237                int ret=JOptionPane.showConfirmDialog(null, "Do you want to specify a flow variations file?");
238               
239                if(ret==JOptionPane.OK_OPTION) {
240                        JFileChooser fc=new JFileChooser(System.getProperty("user.home") + File.separatorChar + "maps" + 
241                                        File.separatorChar + "variations");
242                        fc.setDialogTitle("Choose the file specifying the flow variations");
243                        int retVal=fc.showOpenDialog(null);
244                        if(retVal==JFileChooser.APPROVE_OPTION) {
245                                vnsim.map.object.Globals.variationsFile=fc.getSelectedFile().getName();
246                        } else {
247                                vnsim.map.object.Globals.variationsFile=null;   
248                        }
249                } else {
250                        vnsim.map.object.Globals.variationsFile=null;   
251                }
252                //Scenario sc = getScenario(".//maps//map//"+args[0], entries, exits, driverTypes, route,name);
253                Scenario sc = getScenario(System.getProperty("user.home") + File.separatorChar + "maps" + 
254                                File.separatorChar + "map" + File.separatorChar + args[0], entries, exits, driverTypes, route,name);
255                               
256
257               
258                GlobalNetwork.driverType = driverTypes;
259                GlobalNetwork.name = name;
260                //GlobalNetwork.mapName = ".//maps//map//"+args[0];
261                GlobalNetwork.mapName = System.getProperty("user.home") + File.separatorChar + "maps" + 
262                File.separatorChar + "map" + File.separatorChar + args[0];
263               
264                GlobalNetwork.entries = entries;
265                GlobalNetwork.exits = exits;
266                GlobalNetwork.socialMobility = mob;
267               
268                try 
269                {
270                        vnsim.vehicular.generator.Mobility.loadScenario(sc);
271                } 
272                catch (Exception ex) 
273                {
274                        JOptionPane.showMessageDialog(null, "<html>ERROR! Map structure has been modified<br> Try rebuilding the map " + sc.mapFileName +"!</html>");
275                        throw ex;
276                }
277               
278                vnsim.gui.Main.startGui();
279                //vnsim.socialNet.startGraph.start();
280        }
281       
282}
Note: See TracBrowser for help on using the repository browser.