Methodes FOO terminées
This commit is contained in:
parent
5c9a6d72b2
commit
5d682d1872
1 changed files with 95 additions and 8 deletions
|
|
@ -17,7 +17,7 @@ import java.util.List;
|
|||
public class Path {
|
||||
|
||||
/**
|
||||
* Create a new path that goes through the given list of nodes (in order), choosing
|
||||
* Create a new path that goes through the given list of nodes in order, choosing
|
||||
* the fastest route if multiple are available.
|
||||
*
|
||||
* @param graph Graph containing the nodes in the list.
|
||||
|
|
@ -25,11 +25,41 @@ public class Path {
|
|||
* @return A path that goes through the given list of nodes.
|
||||
* @throws IllegalArgumentException If the list of nodes is not valid, i.e. two
|
||||
* consecutive nodes in the list are not connected in the graph.
|
||||
* @deprecated Need to be implemented.
|
||||
*/
|
||||
public static Path createFastestPathFromNodes(Graph graph, List<Node> nodes)
|
||||
throws IllegalArgumentException {
|
||||
List<Arc> arcs = new ArrayList<Arc>();
|
||||
if (nodes.size() == 0) {
|
||||
return new Path(graph);
|
||||
}
|
||||
if (nodes.size() == 1) {
|
||||
return new Path(graph, nodes.get(0));
|
||||
}
|
||||
for (int i = 1; i < nodes.size(); i++) {
|
||||
Node depart = nodes.get(i - 1);
|
||||
Node dest = nodes.get(i);
|
||||
List<Arc> test = depart.getSuccessors();
|
||||
List<Arc> chemins = new ArrayList<Arc>();
|
||||
Boolean erreur = true;
|
||||
for (Arc a : test) {
|
||||
if (a.getDestination().equals(dest)) {
|
||||
chemins.add(a);
|
||||
erreur = false;
|
||||
}
|
||||
}
|
||||
if (erreur) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
double min = chemins.get(0).getMinimumTravelTime();
|
||||
int index = 0;
|
||||
for (int j = 1; j < chemins.size(); j++) {
|
||||
if (min > chemins.get(j).getMinimumTravelTime()) {
|
||||
index = j;
|
||||
min = chemins.get(j).getMinimumTravelTime();
|
||||
}
|
||||
}
|
||||
arcs.add(chemins.get(index));
|
||||
}
|
||||
// TODO:
|
||||
return new Path(graph, arcs);
|
||||
}
|
||||
|
|
@ -43,11 +73,41 @@ public class Path {
|
|||
* @return A path that goes through the given list of nodes.
|
||||
* @throws IllegalArgumentException If the list of nodes is not valid, i.e. two
|
||||
* consecutive nodes in the list are not connected in the graph.
|
||||
* @deprecated Need to be implemented.
|
||||
*/
|
||||
public static Path createShortestPathFromNodes(Graph graph, List<Node> nodes)
|
||||
throws IllegalArgumentException {
|
||||
List<Arc> arcs = new ArrayList<Arc>();
|
||||
if (nodes.size() == 0) {
|
||||
return new Path(graph);
|
||||
}
|
||||
if (nodes.size() == 1) {
|
||||
return new Path(graph, nodes.get(0));
|
||||
}
|
||||
for (int i = 1; i < nodes.size(); i++) {
|
||||
Node depart = nodes.get(i - 1);
|
||||
Node dest = nodes.get(i);
|
||||
List<Arc> test = depart.getSuccessors();
|
||||
List<Arc> chemins = new ArrayList<Arc>();
|
||||
Boolean erreur = true;
|
||||
for (Arc a : test) {
|
||||
if (a.getDestination().equals(dest)) {
|
||||
chemins.add(a);
|
||||
erreur = false;
|
||||
}
|
||||
}
|
||||
if (erreur) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
double min = chemins.get(0).getLength();
|
||||
int index = 0;
|
||||
for (int j = 1; j < chemins.size(); j++) {
|
||||
if (min > chemins.get(j).getLength()) {
|
||||
index = j;
|
||||
min = chemins.get(j).getLength();
|
||||
}
|
||||
}
|
||||
arcs.add(chemins.get(index));
|
||||
}
|
||||
// TODO:
|
||||
return new Path(graph, arcs);
|
||||
}
|
||||
|
|
@ -184,12 +244,27 @@ public class Path {
|
|||
* </ul>
|
||||
*
|
||||
* @return true if the path is valid, false otherwise.
|
||||
* @deprecated Need to be implemented.
|
||||
*/
|
||||
public boolean isValid() {
|
||||
// TODO:
|
||||
if (this.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
if (this.size() < 2) {
|
||||
return true;
|
||||
}
|
||||
if (!this.origin.equals(this.arcs.get(0).getOrigin())) {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < this.arcs.size() - 1; i++) {
|
||||
Node dest = this.arcs.get(i).getDestination();
|
||||
Node depart = this.arcs.get(i + 1).getOrigin();
|
||||
if (!dest.equals(depart)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// TODO:
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the length of this path (in meters).
|
||||
|
|
@ -198,8 +273,12 @@ public class Path {
|
|||
* @deprecated Need to be implemented.
|
||||
*/
|
||||
public float getLength() {
|
||||
float l = 0;
|
||||
for (Arc a : this.arcs) {
|
||||
l += a.getLength();
|
||||
}
|
||||
// TODO:
|
||||
return 0;
|
||||
return l;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -211,8 +290,12 @@ public class Path {
|
|||
* @deprecated Need to be implemented.
|
||||
*/
|
||||
public double getTravelTime(double speed) {
|
||||
double l = 0;
|
||||
for (Arc a : this.arcs) {
|
||||
l += a.getTravelTime(speed);
|
||||
}
|
||||
// TODO:
|
||||
return 0;
|
||||
return l;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -224,7 +307,11 @@ public class Path {
|
|||
*/
|
||||
public double getMinimumTravelTime() {
|
||||
// TODO:
|
||||
return 0;
|
||||
double l = 0;
|
||||
for (Arc a : this.arcs) {
|
||||
l += a.getMinimumTravelTime();
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue