Revision 50:33dfa27c750e

View differences:

misc/eclipse/GenerateDenseGridInstance.launch
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4
<listEntry value="/deconflictiontools/src/main/java/tt/jointeuclid2ni/probleminstance/generator/GenerateDenseGridInstance.java"/>
5
</listAttribute>
6
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7
<listEntry value="1"/>
8
</listAttribute>
9
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
10
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="tt.jointeuclid2ni.probleminstance.generator.GenerateDenseGridInstance"/>
11
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-env src/main/resources/environments/empty-unbounded.xml -nagents 24 -radius 90 -cellsize 200 -seed 1000"/>
12
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="deconflictiontools"/>
13
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
14
</launchConfiguration>
misc/eclipse/GenerateInstance.launch
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4
<listEntry value="/deconflictiontools/src/main/java/tt/jointeuclid2ni/probleminstance/generator/GenerateInstance.java"/>
5
</listAttribute>
6
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7
<listEntry value="1"/>
8
</listAttribute>
9
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
10
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="tt.jointeuclid2ni.probleminstance.generator.GenerateInstance"/>
11
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-env src/main/resources/environments/empty-unbounded.xml -nagents 24 -radius 90 -gridpattern 4  -gridstep 100 -seed 1000"/>
12
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="deconflictiontools"/>
13
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
14
</launchConfiguration>
misc/eclipse/Solver.launch
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4
<listEntry value="/deconflictiontools/src/main/java/tt/jointeuclid2ni/Solver.java"/>
5
</listAttribute>
6
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7
<listEntry value="1"/>
8
</listAttribute>
9
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
10
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="tt.jointeuclid2ni.Solver"/>
11
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-method PP -heuristic L1 -problemfile src/main/resources/problems/empty-unbounded-g4/190.xml -maxtime 3500 -timeout 20000 -grid 4 -gridstep 50 -summary -summaryprefix empty-unbounded;190;2;50;1037;4;50;3500;PP;NA;"/>
12
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="deconflictiontools"/>
13
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
14
</launchConfiguration>
src/main/java/tt/jointeuclid2ni/Solver.java
57 57
        String mission = Args.getArgumentValue(args, "-mission", false);
58 58
        String timeoutStr = Args.getArgumentValue(args, "-timeout", false);
59 59
        String maxtimeStr = Args.getArgumentValue(args, "-maxtime", true);
60
        String gridStepStr = Args.getArgumentValue(args, "-gridstep", true);
60
        String gridStepStr = Args.getArgumentValue(args, "-gridstep", false);
61 61
        String gridPatternStr = Args.getArgumentValue(args, "-grid", false);
62 62

  
63 63
        String heuristicStr = Args.getArgumentValue(args, "-heuristic", false, "PERFECT");
......
91 91
        }
92 92

  
93 93
        params.maxTime = Integer.parseInt(maxtimeStr);
94
        params.gridStep = Integer.parseInt(gridStepStr);
94
        if (gridStepStr != null) {
95
        	params.gridStep = Integer.parseInt(gridStepStr);
96
        }
95 97

  
96 98
        params.waitMoveDuration = params.gridStep;
97 99

  
src/main/java/tt/jointeuclid2ni/probleminstance/generator/ConflictGenerator.java
31 31

  
32 32
    private static final int MAX_SPEED = 1;
33 33
    private static final int MAX_ATTEMTPS_PROBLEM = 50;
34
    private static final int MAX_ATTEMTPS_MISSION = 150;
35
    private static final int MAX_ATTEMTPS_START_TARGET = 2500;
34
    private static final int MAX_ATTEMPTS_MISSION = 150;
35
    private static final int MAX_ATTEMPTS_START = 2500;
36
    private static final int MAX_ATTEMPTS_TARGET = 2500;
36 37

  
37 38
    private List<ProblemCreatedListener> listeners;
38 39

  
......
56 57
        this.maxTime = calculateMaxTime(environment);
57 58
    }
58 59

  
59
    private DirectedGraph<Point, Line>[] createGraphs(Environment environment, int[] bodyRadiuses, int[][] gridPatter, int step) {
60
    private DirectedGraph<Point, Line>[] createGraphs(Environment environment, int[] bodyRadiuses, int[][] gridPattern, int step) {
60 61
        DirectedGraph[] directedGraphs = new DirectedGraph[agents];
61 62
        for (int a = 0; a < agents; a++) {
62
            directedGraphs[a] = Discretization.createGrid(environment, bodyRadiuses[a], gridPatter, step);
63
            directedGraphs[a] = Discretization.createGrid(environment, bodyRadiuses[a], gridPattern, step);
63 64
        }
64 65
        return directedGraphs;
65 66
    }
......
137 138
                return currentProblem;
138 139

  
139 140
            } catch (MissionNotAddedException ex) {
140
                if (currentProblem.nAgents() > 1)
141
                    return currentProblem;
141
            	Verbose.printf(" -- --  mission not added%n", att);
142 142
            }
143 143
        }
144 144

  
......
169 169

  
170 170
            } catch (PathNotFoundException e) {
171 171
            }
172
        } while (attempts++ < MAX_ATTEMTPS_MISSION);
172
        } while (attempts++ < MAX_ATTEMPTS_MISSION);
173 173

  
174 174
        throw new MissionNotAddedException();
175 175
    }
......
183 183
    }
184 184

  
185 185
    private AgentMission generateMission(ExtensibleProblem problem, int agent) throws MissionNotAddedException {
186

  
186 187
        Point start = null;
187
        Point target = null;
188
        int attempts = 0;
188
        int startPointAttempts = 0;
189
    	do {
190
        	start = randomVertex(agent);
189 191

  
190
        while (attempts++ < MAX_ATTEMTPS_START_TARGET) {
191
            start = randomVertex(agent);
192
            target = randomVertex(agent);
192
        	if (startPointAttempts++ > MAX_ATTEMPTS_START) {
193
        		throw new MissionNotAddedException();
194
        	}
195
        } while (collidesWithOtherStartPoint(problem, agent, start));
193 196

  
194
            if (start == target)
195
                continue;
197
    	Point target = null;
198
    	int targetPointAttempts = 0;
199
        do {
200
        	target = randomVertex(agent);
196 201

  
197
            if (collidesWithOtherStartPoint(problem, agent, start)) {
198
                continue;
199
            }
200

  
201
            if (collidesWithOtherTargetPoint(problem, agent, target)) {
202
                continue;
203
            }
204
            break;
205
        }
202
        	if (targetPointAttempts++ > MAX_ATTEMPTS_TARGET) {
203
        		throw new MissionNotAddedException();
204
        	}
205
        } while (collidesWithOtherTargetPoint(problem, agent, target) || start == target);
206 206

  
207 207
        Verbose.printf(" -- -- -- -- new random mission S:%s G:%s%n", start, target);
208 208

  
209
        if (attempts < MAX_ATTEMTPS_START_TARGET)
210
            return new AgentMissionImpl(start, target, bodyRadiuses[agent], MAX_SPEED);
211
        else
212
            throw new MissionNotAddedException();
209
        return new AgentMissionImpl(start, target, bodyRadiuses[agent], MAX_SPEED);
213 210
    }
214 211

  
215 212
    private Trajectory solveMission(AgentMission mission, int agent) throws PathNotFoundException {
......
254 251
    private Point randomVertex(int agent) {
255 252
        List<Point> list = listsOfVertices[agent];
256 253
        int size = list.size();
257

  
258 254
        return list.get(random.nextInt(size));
259 255
        //return Util.sampleFreeSpace(environment.getBounds(), inflatedObstacles[agent], random);
260 256
    }
261 257

  
262 258
    protected static Rectangle shrinkRectangle(Rectangle rect, int by) {
263
            return new Rectangle(      new Point(rect.getCorner1().x+by, rect.getCorner1().y+by),
264
                                        new Point(rect.getCorner2().x-by, rect.getCorner2().y-by)
265
                                      );
259
            return new Rectangle(new Point(rect.getCorner1().x+by, rect.getCorner1().y+by),
260
                                 new Point(rect.getCorner2().x-by, rect.getCorner2().y-by)
261
                                 );
266 262
    }
267 263
}
src/main/java/tt/jointeuclid2ni/probleminstance/generator/GenerateDenseGridInstance.java
1
package tt.jointeuclid2ni.probleminstance.generator;
2

  
3
import java.io.File;
4
import java.io.FileInputStream;
5
import java.io.FileNotFoundException;
6
import java.io.FileOutputStream;
7
import java.util.Arrays;
8
import java.util.LinkedList;
9
import java.util.List;
10
import java.util.Random;
11

  
12
import tt.euclid2i.Point;
13
import tt.euclid2i.discretization.LazyGrid;
14
import tt.euclid2i.probleminstance.Environment;
15
import tt.euclid2i.region.Rectangle;
16
import tt.jointeuclid2ni.probleminstance.AgentMission;
17
import tt.jointeuclid2ni.probleminstance.AgentMissionImpl;
18
import tt.jointeuclid2ni.probleminstance.EarliestArrivalProblem;
19
import tt.jointeuclid2ni.probleminstance.EarliestArrivalProblemXMLDeserializer;
20
import tt.jointeuclid2ni.probleminstance.EarliestArrivalProblemXMLSerializer;
21
import tt.jointeuclid2ni.probleminstance.generator.exception.MissionNotAddedException;
22
import tt.jointeuclid2ni.probleminstance.generator.exception.ProblemNotCreatedException;
23
import tt.util.Args;
24
import tt.util.Verbose;
25
import tt.vis.problemcreator.main.ExtensibleProblem;
26

  
27
public class GenerateDenseGridInstance {
28

  
29
    private boolean verbose = false;
30
    private String environmentFile;
31
    private int agents;
32
    private int step;
33
    private int seed;
34
	private int cellSize;
35
	private int agentRadius;
36

  
37
    public GenerateDenseGridInstance(String environmentFile, int agents, int cellWidth, int agentRadius, int seed) {
38
        this.environmentFile = environmentFile;
39
        this.agents = agents;
40
        this.cellSize = cellWidth;
41
        this.agentRadius = agentRadius;
42
        this.seed = seed;
43
    }
44

  
45
    private void run() throws ProblemNotCreatedException {
46
        Verbose.setVerbose(verbose);
47
        Random random = new Random(seed);
48
        Environment environment = readEnvironment(environmentFile);
49

  
50
        ExtensibleProblem problem = new ExtensibleProblem();
51
        problem.setEnvironment(environment);
52

  
53
        LinkedList<Point> starts = new LinkedList<Point>();
54
        LinkedList<Point> targets = new LinkedList<Point>();
55

  
56
        for(int x=cellSize/2; x <= 1000-cellSize/2; x += cellSize) {
57
	        for(int y=cellSize/2; y <= 1000-cellSize/2; y += cellSize) {
58
	        	starts.add(new Point(x,y));
59
	        	targets.add(new Point(x,y));
60
	        }
61
        }
62

  
63
        for (int i=0; i<agents; i++) {
64
        	Point start = starts.remove(random.nextInt(starts.size()));
65
        	Point target = targets.remove(random.nextInt(targets.size()));
66
        	problem.addAgent(start, target, agentRadius, 1);
67
        }
68

  
69
        EarliestArrivalProblemXMLSerializer.serialize(problem, System.out);
70
    }
71

  
72
    private Environment readEnvironment(String environmentFile) {
73
        EarliestArrivalProblem problem;
74

  
75
        try {
76
            File file = new File(environmentFile);
77
            FileInputStream inputStream = new FileInputStream(file);
78
            problem = EarliestArrivalProblemXMLDeserializer.deserialize(inputStream);
79
        } catch (FileNotFoundException e) {
80
            throw new RuntimeException("Environment could not be loaded");
81
        }
82

  
83
        return problem.getEnvironment();
84
    }
85

  
86
    public static void main(String[] args) throws ProblemNotCreatedException {
87

  
88
        String environmentFile = Args.getArgumentValue(args, "-env", true);
89
        int agents = Integer.parseInt(Args.getArgumentValue(args, "-nagents", true));
90
        int radius = Integer.parseInt(Args.getArgumentValue(args, "-radius", true));
91
        int cellSize = Integer.parseInt(Args.getArgumentValue(args, "-cellsize", true));
92
        int seed = Integer.parseInt(Args.getArgumentValue(args, "-seed", true));
93

  
94
        GenerateDenseGridInstance main = new GenerateDenseGridInstance(environmentFile, agents, cellSize, radius, seed);
95
        main.run();
96
    }
97
}
src/main/java/tt/jointeuclid2ni/probleminstance/generator/GenerateInstance.java
45 45
        int[] bodyRadiuses = prefillBodyRadiuses(agents, radius);
46 46

  
47 47
        EarliestArrivalProblem instance = ConflictGenerator.generateSingleInstance(environment, bodyRadiuses, pattern, this.step, seed, new Rectangle(new Point(0,0), new Point(1000,1000)));
48

  
49 48
        EarliestArrivalProblemXMLSerializer.serialize(instance, System.out);
50 49
    }
51 50

  
src/main/java/tt/jointeuclid2ni/solver/impl/AbstractAlgorithm.java
14 14

  
15 15
import tt.euclid2i.EvaluatedTrajectory;
16 16
import tt.euclid2i.Line;
17
import tt.euclid2i.Point;
17 18
import tt.euclid2i.Region;
18 19
import tt.euclid2i.Trajectory;
19 20
import tt.euclid2i.discretization.AdditionalPointsExtension;
20 21
import tt.euclid2i.discretization.LazyGrid;
22
import tt.euclid2i.region.Rectangle;
21 23
import tt.euclid2i.util.Util;
22 24
import tt.euclid2i.vis.RegionsLayer;
23 25
import tt.euclidtime3i.discretization.ConstantSpeedTimeExtension;
......
148 150

  
149 151
                    @Override
150 152
                    public Collection<Region> getRegions() {
153
                        LinkedList<Region> list = new LinkedList<Region>();
154
                        list.add(new Rectangle(new Point(0,0), new Point(1000,1000)));
155
                        return list;
156
                    }
157

  
158
                }, Color.BLACK, new Color(240,240,240)));
159

  
160
        VisManager.registerLayer(RegionsLayer.create(
161
                new RegionsLayer.RegionsProvider() {
162

  
163
                    @Override
164
                    public Collection<Region> getRegions() {
151 165
                        return problem.getObstacles();
152 166
                    }
153 167

  
src/main/java/tt/jointtraj/separableflow/SeparableFlowOptimizer.java
29 29
			// Find initial unconstrained trajectories
30 30
			trajectories = initUnconstrainedTrajectories(trajectoryOptimizers, maxCost, runtimeDeadlineMs);
31 31

  
32
			if (trajectories == null)
33
				return null;
34

  
32 35
			// Iteratively replan
33 36
			int iterations = nAgents * (k - 2);
34 37
		    trajectories = iterativelyReplan(trajectories, trajectoryOptimizers, constraints, iterations,
35 38
					maxCost, runtimeDeadlineMs);
36 39

  
37
		    // Replan with hard-constraints
38
		    trajectories = replanWithInfiniteWeight(trajectories, trajectoryOptimizers, constraints, maxCost, runtimeDeadlineMs);
40
		    if (trajectories == null)
41
		    	return null;
42

  
43
			// Replan with hard-constraints
44
			trajectories = replanWithInfiniteWeight(trajectories, trajectoryOptimizers, constraints, maxCost, runtimeDeadlineMs);
39 45
		}
40 46

  
41 47
		return trajectories;
src/main/resources/eclipse/Solver (dejvice).launch
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4
<listEntry value="/deconflictiontools/src/main/java/tt/jointeuclid2ni/Solver.java"/>
5
</listAttribute>
6
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7
<listEntry value="1"/>
8
</listAttribute>
9
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="tt.jointeuclid2ni.Solver"/>
10
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-method PP -problemfile src/main/resources/problems/dejvice.xml -timeout 5000 -maxtime 2500 -gridstep 25 -showvis"/>
11
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="deconflictiontools"/>
12
</launchConfiguration>
src/main/resources/eclipse/Solver (test).launch
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4
<listEntry value="/deconflictiontools/src/main/java/tt/jointeuclid2ni/Solver.java"/>
5
</listAttribute>
6
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7
<listEntry value="1"/>
8
</listAttribute>
9
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="tt.jointeuclid2ni.Solver"/>
10
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-method IIHP -problemfile src/main/resources/problems/cross_conflict.xml -timeout 5000 -maxtime 2500 -gridstep 100 -showvis -summary -grid 16"/>
11
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="deconflictiontools"/>
12
</launchConfiguration>
src/main/resources/eclipse/Solver.launch
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
3
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
4
<listEntry value="/deconflictiontools/src/main/java/tt/jointeuclid2ni/Solver.java"/>
5
</listAttribute>
6
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
7
<listEntry value="1"/>
8
</listAttribute>
9
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
10
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="tt.jointeuclid2ni.Solver"/>
11
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-method KSFO -problemfile /home/capino/projects/deconfliction/repo/experiments/ksfo/instances/empty-unbounded-g4/1088.xml -timeout 2000000 -maxtime 3500 -gridstep 50 -showvis -summary -grid 4 -k 1"/>
12
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="deconflictiontools"/>
13
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
14
</launchConfiguration>
src/main/resources/environments/empty-bounded.xml
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<multiagentproblem>
3
<environment>
4
<obstacles>
5
</obstacles>
6
<bounds>
7
<point>
8
<x>0</x>
9
<y>0</y>
10
</point>
11
<point>
12
<x>1000</x>
13
<y>1000</y>
14
</point>
15
</bounds>
16
</environment>
17
<agents>
18
</agents>
19
</multiagentproblem>
src/main/resources/environments/empty-unbounded.xml
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<multiagentproblem>
3
<environment>
4
<obstacles>
5
</obstacles>
6
<bounds>
7
<point>
8
<x>-1000</x>
9
<y>-1000</y>
10
</point>
11
<point>
12
<x>2000</x>
13
<y>2000</y>
14
</point>
15
</bounds>
16
</environment>
17
<agents>
18
</agents>
19
</multiagentproblem>
src/main/resources/environments/office.xml
1
<multiagentproblem>
2
    <environment>
3
        <obstacles>
4
            <obstacle>
5
                <point id="0">
6
                    <x>-5</x>
7
                    <y>1006</y>
8
                </point>
9
                <point id="1">
10
                    <x>-4</x>
11
                    <y>750</y>
12
                </point>
13
                <point id="2">
14
                    <x>-3</x>
15
                    <y>501</y>
16
                </point>
17
                <point id="3">
18
                    <x>-1</x>
19
                    <y>251</y>
20
                </point>
21
                <point id="4">
22
                    <x>187</x>
23
                    <y>251</y>
24
                </point>
25
                <point id="5">
26
                    <x>188</x>
27
                    <y>375</y>
28
                </point>
29
                <point id="6">
30
                    <x>175</x>
31
                    <y>376</y>
32
                </point>
33
                <point id="7">
34
                    <x>175</x>
35
                    <y>264</y>
36
                </point>
37
                <point id="8">
38
                    <x>13</x>
39
                    <y>263</y>
40
                </point>
41
                <point id="9">
42
                    <x>12</x>
43
                    <y>492</y>
44
                </point>
45
                <point id="10">
46
                    <x>175</x>
47
                    <y>493</y>
48
                </point>
49
                <point id="11">
50
                    <x>175</x>
51
                    <y>439</y>
52
                </point>
53
                <point id="12">
54
                    <x>187</x>
55
                    <y>438</y>
56
                </point>
57
                <point id="13">
58
                    <x>187</x>
59
                    <y>625</y>
60
                </point>
61
                <point id="14">
62
                    <x>175</x>
63
                    <y>625</y>
64
                </point>
65
                <point id="15">
66
                    <x>175</x>
67
                    <y>514</y>
68
                </point>
69
                <point id="16">
70
                    <x>12</x>
71
                    <y>514</y>
72
                </point>
73
                <point id="17">
74
                    <x>13</x>
75
                    <y>738</y>
76
                </point>
77
                <point id="18">
78
                    <x>175</x>
79
                    <y>738</y>
80
                </point>
81
                <point id="19">
82
                    <x>175</x>
83
                    <y>687</y>
84
                </point>
85
                <point id="20">
86
                    <x>187</x>
87
                    <y>688</y>
88
                </point>
89
                <point id="21">
90
                    <x>187</x>
91
                    <y>744</y>
92
                </point>
93
                <point id="22">
94
                    <x>202</x>
95
                    <y>760</y>
96
                </point>
97
                <point id="23">
98
                    <x>194</x>
99
                    <y>769</y>
100
                </point>
101
                <point id="24">
102
                    <x>181</x>
103
                    <y>750</y>
104
                </point>
105
                <point id="25">
106
                    <x>13</x>
107
                    <y>750</y>
108
                </point>
109
                <point id="26">
110
                    <x>12</x>
111
                    <y>986</y>
112
                </point>
113
                <point id="27">
114
                    <x>262</x>
115
                    <y>988</y>
116
                </point>
117
                <point id="28">
118
                    <x>262</x>
119
                    <y>840</y>
120
                </point>
121
                <point id="29">
122
                    <x>237</x>
123
                    <y>813</y>
124
                </point>
125
                <point id="30">
126
                    <x>249</x>
127
                    <y>801</y>
128
                </point>
129
                <point id="31">
130
                    <x>274</x>
131
                    <y>837</y>
132
                </point>
133
                <point id="32">
134
                    <x>275</x>
135
                    <y>1000</y>
136
                </point>
137
            </obstacle>
138
            <obstacle>
139
                <point id="0">
140
                    <x>287</x>
141
                    <y>999</y>
142
                </point>
143
                <point id="1">
144
                    <x>562</x>
145
                    <y>1000</y>
146
                </point>
147
                <point id="2">
148
                    <x>562</x>
149
                    <y>250</y>
150
                </point>
151
                <point id="3">
152
                    <x>375</x>
153
                    <y>250</y>
154
                </point>
155
                <point id="4">
156
                    <x>374</x>
157
                    <y>374</y>
158
                </point>
159
                <point id="5">
160
                    <x>388</x>
161
                    <y>374</y>
162
                </point>
163
                <point id="6">
164
                    <x>387</x>
165
                    <y>263</y>
166
                </point>
167
                <point id="7">
168
                    <x>549</x>
169
                    <y>262</y>
170
                </point>
171
                <point id="8">
172
                    <x>550</x>
173
                    <y>489</y>
174
                </point>
175
                <point id="9">
176
                    <x>388</x>
177
                    <y>487</y>
178
                </point>
179
                <point id="10">
180
                    <x>387</x>
181
                    <y>439</y>
182
                </point>
183
                <point id="11">
184
                    <x>375</x>
185
                    <y>437</y>
186
                </point>
187
                <point id="12">
188
                    <x>375</x>
189
                    <y>626</y>
190
                </point>
191
                <point id="13">
192
                    <x>387</x>
193
                    <y>627</y>
194
                </point>
195
                <point id="14">
196
                    <x>387</x>
197
                    <y>513</y>
198
                </point>
199
                <point id="15">
200
                    <x>549</x>
201
                    <y>514</y>
202
                </point>
203
                <point id="16">
204
                    <x>549</x>
205
                    <y>739</y>
206
                </point>
207
                <point id="17">
208
                    <x>386</x>
209
                    <y>737</y>
210
                </point>
211
                <point id="18">
212
                    <x>387</x>
213
                    <y>689</y>
214
                </point>
215
                <point id="19">
216
                    <x>373</x>
217
                    <y>688</y>
218
                </point>
219
                <point id="20">
220
                    <x>375</x>
221
                    <y>744</y>
222
                </point>
223
                <point id="21">
224
                    <x>362</x>
225
                    <y>751</y>
226
                </point>
227
                <point id="22">
228
                    <x>374</x>
229
                    <y>763</y>
230
                </point>
231
                <point id="23">
232
                    <x>387</x>
233
                    <y>751</y>
234
                </point>
235
                <point id="24">
236
                    <x>549</x>
237
                    <y>752</y>
238
                </point>
239
                <point id="25">
240
                    <x>549</x>
241
                    <y>987</y>
242
                </point>
243
                <point id="26">
244
                    <x>288</x>
245
                    <y>987</y>
246
                </point>
247
                <point id="27">
248
                    <x>299</x>
249
                    <y>988</y>
250
                </point>
251
                <point id="28">
252
                    <x>300</x>
253
                    <y>838</y>
254
                </point>
255
                <point id="29">
256
                    <x>324</x>
257
                    <y>813</y>
258
                </point>
259
                <point id="30">
260
                    <x>312</x>
261
                    <y>801</y>
262
                </point>
263
                <point id="31">
264
                    <x>288</x>
265
                    <y>838</y>
266
                </point>
267
            </obstacle>
268
            <obstacle>
269
                <point id="0">
270
                    <x>1</x>
271
                    <y>75</y>
272
                </point>
273
                <point id="1">
274
                    <x>188</x>
275
                    <y>75</y>
276
                </point>
277
                <point id="2">
278
                    <x>188</x>
279
                    <y>187</y>
280
                </point>
281
                <point id="3">
282
                    <x>438</x>
283
                    <y>188</y>
284
                </point>
285
                <point id="4">
286
                    <x>438</x>
287
                    <y>175</y>
288
                </point>
289
                <point id="5">
290
                    <x>201</x>
291
                    <y>173</y>
292
                </point>
293
                <point id="6">
294
                    <x>201</x>
295
                    <y>63</y>
296
                </point>
297
                <point id="7">
298
                    <x>12</x>
299
                    <y>62</y>
300
                </point>
301
                <point id="8">
302
                    <x>12</x>
303
                    <y>13</y>
304
                </point>
305
                <point id="9">
306
                    <x>312</x>
307
                    <y>13</y>
308
                </point>
309
                <point id="10">
310
                    <x>312</x>
311
                    <y>124</y>
312
                </point>
313
                <point id="11">
314
                    <x>437</x>
315
                    <y>126</y>
316
                </point>
317
                <point id="12">
318
                    <x>437</x>
319
                    <y>13</y>
320
                </point>
321
                <point id="13">
322
                    <x>499</x>
323
                    <y>12</y>
324
                </point>
325
                <point id="14">
326
                    <x>500</x>
327
                    <y>187</y>
328
                </point>
329
                <point id="15">
330
                    <x>513</x>
331
                    <y>188</y>
332
                </point>
333
                <point id="16">
334
                    <x>561</x>
335
                    <y>188</y>
336
                </point>
337
                <point id="17">
338
                    <x>562</x>
339
                    <y>175</y>
340
                </point>
341
                <point id="18">
342
                    <x>514</x>
343
                    <y>175</y>
344
                </point>
345
                <point id="19">
346
                    <x>513</x>
347
                    <y>14</y>
348
                </point>
349
                <point id="20">
350
                    <x>674</x>
351
                    <y>13</y>
352
                </point>
353
                <point id="21">
354
                    <x>674</x>
355
                    <y>175</y>
356
                </point>
357
                <point id="22">
358
                    <x>624</x>
359
                    <y>176</y>
360
                </point>
361
                <point id="23">
362
                    <x>623</x>
363
                    <y>188</y>
364
                </point>
365
                <point id="24">
366
                    <x>749</x>
367
                    <y>188</y>
368
                </point>
369
                <point id="25">
370
                    <x>749</x>
371
                    <y>174</y>
372
                </point>
373
                <point id="26">
374
                    <x>688</x>
375
                    <y>175</y>
376
                </point>
377
                <point id="27">
378
                    <x>687</x>
379
                    <y>13</y>
380
                </point>
381
                <point id="28">
382
                    <x>867</x>
383
                    <y>13</y>
384
                </point>
385
                <point id="29">
386
                    <x>868</x>
387
                    <y>175</y>
388
                </point>
389
                <point id="30">
390
                    <x>812</x>
391
                    <y>175</y>
392
                </point>
393
                <point id="31">
394
                    <x>812</x>
395
                    <y>188</y>
396
                </point>
397
                <point id="32">
398
                    <x>936</x>
399
                    <y>188</y>
400
                </point>
401
                <point id="33">
402
                    <x>936</x>
403
                    <y>174</y>
404
                </point>
405
                <point id="34">
406
                    <x>887</x>
407
                    <y>175</y>
408
                </point>
409
                <point id="35">
410
                    <x>886</x>
411
                    <y>12</y>
412
                </point>
413
                <point id="36">
414
                    <x>986</x>
415
                    <y>13</y>
416
                </point>
417
                <point id="37">
418
                    <x>986</x>
419
                    <y>125</y>
420
                </point>
421
                <point id="38">
422
                    <x>999</x>
423
                    <y>138</y>
424
                </point>
425
                <point id="39">
426
                    <x>999</x>
427
                    <y>0</y>
428
                </point>
429
                <point id="40">
430
                    <x>0</x>
431
                    <y>0</y>
432
                </point>
433
            </obstacle>
434
            <obstacle>
435
                <point id="0">
436
                    <x>1000</x>
437
                    <y>1002</y>
438
                </point>
439
                <point id="1">
440
                    <x>624</x>
441
                    <y>1001</y>
442
                </point>
443
                <point id="2">
444
                    <x>625</x>
445
                    <y>551</y>
446
                </point>
447
                <point id="3">
448
                    <x>625</x>
449
                    <y>363</y>
450
                </point>
451
                <point id="4">
452
                    <x>737</x>
453
                    <y>250</y>
454
                </point>
455
                <point id="5">
456
                    <x>937</x>
457
                    <y>250</y>
458
                </point>
459
                <point id="6">
460
                    <x>938</x>
461
                    <y>263</y>
462
                </point>
463
                <point id="7">
464
                    <x>738</x>
465
                    <y>263</y>
466
                </point>
467
                <point id="8">
468
                    <x>638</x>
469
                    <y>364</y>
470
                </point>
471
                <point id="9">
472
                    <x>637</x>
473
                    <y>426</y>
474
                </point>
475
                <point id="10">
476
                    <x>937</x>
477
                    <y>426</y>
478
                </point>
479
                <point id="11">
480
                    <x>936</x>
481
                    <y>439</y>
482
                </point>
483
                <point id="12">
484
                    <x>638</x>
485
                    <y>438</y>
486
                </point>
487
                <point id="13">
488
                    <x>637</x>
489
                    <y>550</y>
490
                </point>
491
                <point id="14">
492
                    <x>937</x>
493
                    <y>550</y>
494
                </point>
495
                <point id="15">
496
                    <x>937</x>
497
                    <y>563</y>
498
                </point>
499
                <point id="16">
500
                    <x>637</x>
501
                    <y>563</y>
502
                </point>
503
                <point id="17">
504
                    <x>637</x>
505
                    <y>624</y>
506
                </point>
507
                <point id="18">
508
                    <x>638</x>
509
                    <y>676</y>
510
                </point>
511
                <point id="19">
512
                    <x>937</x>
513
                    <y>674</y>
514
                </point>
515
                <point id="20">
516
                    <x>936</x>
517
                    <y>688</y>
518
                </point>
519
                <point id="21">
520
                    <x>638</x>
521
                    <y>688</y>
522
                </point>
523
                <point id="22">
524
                    <x>639</x>
525
                    <y>800</y>
526
                </point>
527
                <point id="23">
528
                    <x>638</x>
529
                    <y>812</y>
530
                </point>
531
                <point id="24">
532
                    <x>937</x>
533
                    <y>812</y>
534
                </point>
535
                <point id="25">
536
                    <x>935</x>
537
                    <y>827</y>
538
                </point>
539
                <point id="26">
540
                    <x>639</x>
541
                    <y>826</y>
542
                </point>
543
                <point id="27">
544
                    <x>638</x>
545
                    <y>988</y>
546
                </point>
547
                <point id="28">
548
                    <x>999</x>
549
                    <y>986</y>
550
                </point>
551
                <point id="29">
552
                    <x>999</x>
553
                    <y>251</y>
554
                </point>
555
                <point id="30">
556
                    <x>1011</x>
557
                    <y>252</y>
558
                </point>
559
                <point id="31">
560
                    <x>1012</x>
561
                    <y>1002</y>
562
                </point>
563
            </obstacle>
564
        </obstacles>
565
        <bounds>
566
            <point>
567
                <x>0</x>
568
                <y>0</y>
569
            </point>
570
            <point>
571
                <x>1000</x>
572
                <y>1000</y>
573
            </point>
574
        </bounds>
575
    </environment>
576
    <agents/>
577
</multiagentproblem>
src/main/resources/environments/office2.xml
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<multiagentproblem>
3
    <environment>
4
        <obstacles>
5
            <obstacle>
6
                <point id="0">
7
                    <x>187</x>
8
                    <y>500</y>
9
                </point>
10
                <point id="1">
11
                    <x>187</x>
12
                    <y>626</y>
13
                </point>
14
                <point id="2">
15
                    <x>749</x>
16
                    <y>626</y>
17
                </point>
18
                <point id="3">
19
                    <x>749</x>
20
                    <y>513</y>
21
                </point>
22
                <point id="4">
23
                    <x>736</x>
24
                    <y>514</y>
25
                </point>
26
                <point id="5">
27
                    <x>736</x>
28
                    <y>612</y>
29
                </point>
30
                <point id="6">
31
                    <x>637</x>
32
                    <y>613</y>
33
                </point>
34
                <point id="7">
35
                    <x>635</x>
36
                    <y>526</y>
37
                </point>
38
                <point id="8">
39
                    <x>662</x>
40
                    <y>525</y>
41
                </point>
42
                <point id="9">
43
                    <x>674</x>
44
                    <y>525</y>
45
                </point>
46
                <point id="10">
47
                    <x>673</x>
48
                    <y>512</y>
49
                </point>
50
                <point id="11">
51
                    <x>562</x>
52
                    <y>513</y>
53
                </point>
54
                <point id="12">
55
                    <x>562</x>
56
                    <y>525</y>
57
                </point>
58
                <point id="13">
59
                    <x>623</x>
60
                    <y>525</y>
61
                </point>
62
                <point id="14">
63
                    <x>624</x>
64
                    <y>611</y>
65
                </point>
66
                <point id="15">
67
                    <x>501</x>
68
                    <y>613</y>
69
                </point>
70
                <point id="16">
71
                    <x>500</x>
72
                    <y>513</y>
73
                </point>
74
                <point id="17">
75
                    <x>486</x>
76
                    <y>514</y>
77
                </point>
78
                <point id="18">
79
                    <x>486</x>
80
                    <y>612</y>
81
                </point>
82
                <point id="19">
83
                    <x>375</x>
84
                    <y>613</y>
85
                </point>
86
                <point id="20">
87
                    <x>375</x>
88
                    <y>526</y>
89
                </point>
90
                <point id="21">
91
                    <x>424</x>
92
                    <y>526</y>
93
                </point>
94
                <point id="22">
95
                    <x>425</x>
96
                    <y>513</y>
97
                </point>
98
                <point id="23">
99
                    <x>313</x>
100
                    <y>513</y>
101
                </point>
102
                <point id="24">
103
                    <x>312</x>
104
                    <y>524</y>
105
                </point>
106
                <point id="25">
107
                    <x>362</x>
108
                    <y>525</y>
109
                </point>
110
                <point id="26">
111
                    <x>363</x>
112
                    <y>612</y>
113
                </point>
114
                <point id="27">
115
                    <x>200</x>
116
                    <y>613</y>
117
                </point>
118
                <point id="28">
119
                    <x>200</x>
120
                    <y>500</y>
121
                </point>
122
            </obstacle>
123
            <obstacle>
124
                <point id="0">
125
                    <x>188</x>
126
                    <y>437</y>
127
                </point>
128
                <point id="1">
129
                    <x>188</x>
130
                    <y>312</y>
131
                </point>
132
                <point id="2">
133
                    <x>750</x>
134
                    <y>313</y>
135
                </point>
136
                <point id="3">
137
                    <x>750</x>
138
                    <y>438</y>
139
                </point>
140
                <point id="4">
141
                    <x>737</x>
142
                    <y>438</y>
143
                </point>
144
                <point id="5">
145
                    <x>737</x>
146
                    <y>326</y>
147
                </point>
148
                <point id="6">
149
                    <x>638</x>
150
                    <y>327</y>
151
                </point>
152
                <point id="7">
153
                    <x>638</x>
154
                    <y>426</y>
155
                </point>
156
                <point id="8">
157
                    <x>675</x>
158
                    <y>425</y>
159
                </point>
160
                <point id="9">
161
                    <x>675</x>
162
                    <y>438</y>
163
                </point>
164
                <point id="10">
165
                    <x>562</x>
166
                    <y>438</y>
167
                </point>
168
                <point id="11">
169
                    <x>563</x>
170
                    <y>424</y>
171
                </point>
172
                <point id="12">
173
                    <x>625</x>
174
                    <y>425</y>
175
                </point>
176
                <point id="13">
177
                    <x>624</x>
178
                    <y>325</y>
179
                </point>
180
                <point id="14">
181
                    <x>500</x>
182
                    <y>325</y>
183
                </point>
184
                <point id="15">
185
                    <x>500</x>
186
                    <y>438</y>
187
                </point>
188
                <point id="16">
189
                    <x>487</x>
190
                    <y>438</y>
191
                </point>
192
                <point id="17">
193
                    <x>487</x>
194
                    <y>325</y>
195
                </point>
196
                <point id="18">
197
                    <x>376</x>
198
                    <y>325</y>
199
                </point>
200
                <point id="19">
201
                    <x>375</x>
202
                    <y>425</y>
203
                </point>
204
                <point id="20">
205
                    <x>425</x>
206
                    <y>423</y>
207
                </point>
208
                <point id="21">
209
                    <x>426</x>
210
                    <y>438</y>
211
                </point>
212
                <point id="22">
213
                    <x>313</x>
214
                    <y>437</y>
215
                </point>
216
                <point id="23">
217
                    <x>313</x>
218
                    <y>424</y>
219
                </point>
220
                <point id="24">
221
                    <x>363</x>
222
                    <y>425</y>
223
                </point>
224
                <point id="25">
225
                    <x>363</x>
226
                    <y>325</y>
227
                </point>
228
                <point id="26">
229
                    <x>200</x>
230
                    <y>325</y>
231
                </point>
232
                <point id="27">
233
                    <x>200</x>
234
                    <y>437</y>
235
                </point>
236
            </obstacle>
237
            <obstacle>
238
                <point id="0">
239
                    <x>125</x>
240
                    <y>688</y>
241
                </point>
242
                <point id="1">
243
                    <x>125</x>
244
                    <y>701</y>
245
                </point>
246
                <point id="2">
247
                    <x>824</x>
248
                    <y>701</y>
249
                </point>
250
                <point id="3">
251
                    <x>824</x>
252
                    <y>687</y>
253
                </point>
254
            </obstacle>
255
            <obstacle>
256
                <point id="0">
257
                    <x>137</x>
258
                    <y>249</y>
259
                </point>
260
                <point id="1">
261
                    <x>137</x>
262
                    <y>237</y>
263
                </point>
264
                <point id="2">
265
                    <x>823</x>
266
                    <y>237</y>
267
                </point>
268
                <point id="3">
269
                    <x>824</x>
270
                    <y>251</y>
271
                </point>
272
            </obstacle>
273
        </obstacles>
274
        <bounds>
275
            <point>
276
                <x>60</x>
277
                <y>150</y>
278
            </point>
279
            <point>
280
                <x>900</x>
281
                <y>760</y>
282
            </point>
283
        </bounds>
284
    </environment>
285
    <agents/>
286
</multiagentproblem>
src/main/resources/environments/urban.xml
1
<multiagentproblem>
2
    <environment>
3
        <obstacles>
4
            <obstacle>
5
                <point id="0">
6
                    <x>112</x>
7
                    <y>113</y>
8
                </point>
9
                <point id="1">
10
                    <x>111</x>
11
                    <y>333</y>
12
                </point>
13
                <point id="2">
14
                    <x>333</x>
15
                    <y>333</y>
16
                </point>
17
                <point id="3">
18
                    <x>332</x>
19
                    <y>112</y>
20
                </point>
21
            </obstacle>
22
            <obstacle>
23
                <point id="0">
24
                    <x>553</x>
25
                    <y>445</y>
26
                </point>
27
                <point id="1">
28
                    <x>555</x>
29
                    <y>665</y>
30
                </point>
31
                <point id="2">
32
                    <x>111</x>
33
                    <y>663</y>
34
                </point>
35
                <point id="3">
36
                    <x>111</x>
37
                    <y>445</y>
38
                </point>
39
            </obstacle>
40
            <obstacle>
41
                <point id="0">
42
                    <x>111</x>
43
                    <y>777</y>
44
                </point>
45
                <point id="1">
46
                    <x>111</x>
47
                    <y>888</y>
48
                </point>
49
                <point id="2">
50
                    <x>444</x>
51
                    <y>889</y>
52
                </point>
53
                <point id="3">
54
                    <x>444</x>
55
                    <y>779</y>
56
                </point>
57
            </obstacle>
58
            <obstacle>
59
                <point id="0">
60
                    <x>444</x>
61
                    <y>109</y>
62
                </point>
63
                <point id="1">
64
                    <x>444</x>
65
                    <y>333</y>
66
                </point>
67
                <point id="2">
68
                    <x>556</x>
69
                    <y>333</y>
70
                </point>
71
                <point id="3">
72
                    <x>667</x>
73
                    <y>113</y>
74
                </point>
75
            </obstacle>
76
            <obstacle>
77
                <point id="0">
78
                    <x>667</x>
79
                    <y>335</y>
80
                </point>
81
                <point id="1">
82
                    <x>781</x>
83
                    <y>113</y>
84
                </point>
85
                <point id="2">
86
                    <x>888</x>
87
                    <y>113</y>
88
                </point>
89
                <point id="3">
90
                    <x>891</x>
91
                    <y>333</y>
92
                </point>
93
            </obstacle>
94
            <obstacle>
95
                <point id="0">
96
                    <x>667</x>
97
                    <y>445</y>
98
                </point>
99
                <point id="1">
100
                    <x>665</x>
101
                    <y>667</y>
102
                </point>
103
                <point id="2">
104
                    <x>665</x>
105
                    <y>777</y>
106
                </point>
107
                <point id="3">
108
                    <x>555</x>
109
                    <y>780</y>
110
                </point>
111
                <point id="4">
112
                    <x>553</x>
113
                    <y>889</y>
114
                </point>
115
                <point id="5">
116
                    <x>888</x>
117
                    <y>888</y>
118
                </point>
119
                <point id="6">
120
                    <x>888</x>
121
                    <y>444</y>
122
                </point>
123
            </obstacle>
124
        </obstacles>
125
        <bounds>
126
            <point>
127
                <x>0</x>
128
                <y>0</y>
129
            </point>
130
            <point>
131
                <x>1000</x>
132
                <y>1000</y>
133
            </point>
134
        </bounds>
135
    </environment>
136
    <agents/>
137
</multiagentproblem>
src/main/resources/environments/urbanC.xml
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<multiagentproblem>
3
<environment>
4
<obstacles>
5
<obstacle>
6
<point id="0">
7
<x>194</x>
8
<y>157</y>
9
</point>
10
<point id="1">
11
<x>196</x>
12
<y>388</y>
13
</point>
14
<point id="2">
15
<x>346</x>
16
<y>391</y>
17
</point>
18
<point id="3">
19
<x>345</x>
20
<y>158</y>
21
</point>
22
</obstacle>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff