-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
6 changed files
with
125 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package trafficsim.model.grid; | ||
|
||
import trafficsim.model.traffic.Vehicle; | ||
|
||
import java.util.ArrayList; | ||
import java.util.Random; | ||
|
||
public class Junction implements TrafficNode { | ||
private ArrayList<Road> outgoingRoads = new ArrayList<>(0); | ||
private ArrayList<Road> freeRoads = new ArrayList<>(0); | ||
private Random rnd = new Random(); | ||
|
||
@Override | ||
public boolean canMoveTo(int position) { | ||
findFreeRoads(position); | ||
return freeRoads.size() > 0; | ||
} | ||
|
||
@Override | ||
public void transferVehicle(Road origin, Vehicle v, int position) { | ||
if (freeRoads.size() > 0) { | ||
int roadNumber = rnd.nextInt(freeRoads.size()); | ||
freeRoads.get(roadNumber).addVehicle(v, position); | ||
origin.removeVehicle(v); | ||
} | ||
} | ||
|
||
public void addRoad(Road r) { | ||
this.outgoingRoads.add(r); | ||
} | ||
|
||
private void findFreeRoads(int position) { | ||
freeRoads.clear(); | ||
for (Road road: this.outgoingRoads) { | ||
if (road.getDistanceToNextCar(0) >= position && road.getVehicle(0) == null) { | ||
freeRoads.add(road); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package trafficsim.model.grid; | ||
|
||
import trafficsim.model.traffic.Vehicle; | ||
|
||
public class Sink implements TrafficNode { | ||
@Override | ||
public boolean canMoveTo(int position) { | ||
return true; | ||
} | ||
|
||
@Override | ||
public void transferVehicle(Road origin, Vehicle v, int position) { | ||
origin.removeVehicle(v); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package trafficsim.model.grid; | ||
|
||
import trafficsim.model.traffic.Car; | ||
import trafficsim.model.traffic.Truck; | ||
import trafficsim.model.traffic.Vehicle; | ||
|
||
import java.util.Random; | ||
|
||
public class Source { | ||
private Road road; | ||
private double sourcingFactor; | ||
private Random rnd = new Random(); | ||
|
||
public Source() { | ||
} | ||
|
||
public Source(Road road) { | ||
this.road = road; | ||
} | ||
|
||
public void generateVehicle() { | ||
int speed = rnd.nextInt(this.road.getMaxV()) + 1; | ||
Vehicle v; | ||
|
||
if (road.isEmpty(0, speed) && rnd.nextDouble() < this.sourcingFactor) { | ||
if (rnd.nextDouble() <= 0.1) { | ||
v = new Truck(speed); | ||
} else { | ||
v = new Car(speed); | ||
} | ||
road.addVehicle(v, 0); | ||
} | ||
} | ||
|
||
public void setRoad(Road road) { | ||
this.road = road; | ||
} | ||
|
||
public void setSourcingFactor(double sourcingFactor) { | ||
this.sourcingFactor = sourcingFactor; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters