commit
14272a6834
@ -15,9 +15,9 @@ public class MakkahCity {
|
|||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
//Gen Camp
|
//Gen Camp
|
||||||
generateCamps(District.ALAZIZIYA, (int)getRandom(700, 1000));
|
generateCamps(District.ALAZIZIYA, (int)getRandom(1200, 1400));
|
||||||
generateCamps(District.ALMANSOOR, (int)getRandom(1000, 1200));
|
generateCamps(District.ALMANSOOR, (int)getRandom(1600, 1800));
|
||||||
generateCamps(District.ALHIJRA, (int)getRandom(850, 1100));
|
generateCamps(District.ALHIJRA, (int)getRandom(1400, 1600));
|
||||||
|
|
||||||
fillBusesToList();
|
fillBusesToList();
|
||||||
|
|
||||||
@ -70,19 +70,11 @@ public class MakkahCity {
|
|||||||
|
|
||||||
if (currentLocation >= vehicle.getCurrentStreet().getLength()) {
|
if (currentLocation >= vehicle.getCurrentStreet().getLength()) {
|
||||||
//Move to next street
|
//Move to next street
|
||||||
int nxtIndex = route.indexOf(vehicle.getCurrentStreet()) + 1;
|
vehicle.moveToNextStreet();
|
||||||
if (nxtIndex <= route.getStreets().length - 1) {
|
|
||||||
if (vehicle.getRoute().getStreets()[nxtIndex].capcityPoint(0, 1000) < 1) {
|
|
||||||
vehicle.setCurrentStreet(route.getStreets()[nxtIndex]);
|
|
||||||
vehicle.setCurrentLocation(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
vehicle.arrive();
|
|
||||||
}
|
}
|
||||||
if (!vehicle.isArrivedToDest()) {
|
if (!vehicle.isArrivedToDest()) {
|
||||||
double factor = 1-(vehicle.getCurrentStreet().capcityPoint(vehicle.getCurrentLocation(),
|
double factor = 1-(vehicle.getCurrentStreet().capcityPoint(vehicle.getCurrentLocation(),
|
||||||
vehicle.getCurrentLocation()+1000)) ;
|
vehicle.getCurrentLocation()+1000,vehicle)) ;
|
||||||
if (vehicle instanceof Bus) vehicle.move(Bus.MAX_FORWARD * factor );
|
if (vehicle instanceof Bus) vehicle.move(Bus.MAX_FORWARD * factor );
|
||||||
else if (vehicle instanceof Sedan) vehicle.move(Sedan.MAX_FORWARD * factor );
|
else if (vehicle instanceof Sedan) vehicle.move(Sedan.MAX_FORWARD * factor );
|
||||||
else if (vehicle instanceof SUV) vehicle.move(SUV.MAX_FORWARD * factor );
|
else if (vehicle instanceof SUV) vehicle.move(SUV.MAX_FORWARD * factor );
|
||||||
@ -199,9 +191,9 @@ public class MakkahCity {
|
|||||||
private static void addCivilVehicleNoise() {
|
private static void addCivilVehicleNoise() {
|
||||||
|
|
||||||
for (Street street: stdStreet) {
|
for (Street street: stdStreet) {
|
||||||
int numOfSedan = (int)getRandom(7, 15);
|
int numOfSedan = (int)getRandom(40,50);
|
||||||
int numOfSUV = (int)getRandom(5, 10);
|
int numOfSUV = (int)getRandom(20,30);
|
||||||
int numOfTruck = (int)getRandom(0, 2);
|
int numOfTruck = (int)getRandom(10,12);
|
||||||
|
|
||||||
if (street.getName() == StreetNames.FOURTH_HIGHWAY) numOfSedan = (int) (numOfSedan * 0.5);
|
if (street.getName() == StreetNames.FOURTH_HIGHWAY) numOfSedan = (int) (numOfSedan * 0.5);
|
||||||
if (street.getName() == StreetNames.STREET3) numOfSedan = (int) (numOfSedan * 1.5);
|
if (street.getName() == StreetNames.STREET3) numOfSedan = (int) (numOfSedan * 1.5);
|
||||||
|
@ -60,4 +60,5 @@ public class Route {
|
|||||||
private void throwIllegal() {
|
private void throwIllegal() {
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ public class Street {
|
|||||||
private StreetNames name;
|
private StreetNames name;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public Street(double length, int numberOfLanes, StreetNames name) {
|
public Street(double length, int numberOfLanes, StreetNames name) {
|
||||||
vehicles = new ArrayList<>();
|
vehicles = new ArrayList<>();
|
||||||
setLength(length);
|
setLength(length);
|
||||||
@ -56,7 +57,17 @@ public class Street {
|
|||||||
for(int i=0;i<vehicles.size();i++) {
|
for(int i=0;i<vehicles.size();i++) {
|
||||||
totalLenthofCar+=vehicles.get(i).getVehicleSize();
|
totalLenthofCar+=vehicles.get(i).getVehicleSize();
|
||||||
}
|
}
|
||||||
return totalLength -totalLenthofCar;
|
int percent = 0;
|
||||||
|
if (totalLenthofCar > totalLength){
|
||||||
|
percent = (int) (totalLength/totalLenthofCar);
|
||||||
|
percent *= 100;
|
||||||
|
percent += totalLength - (totalLength % totalLenthofCar);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
percent = (int)(totalLength - totalLenthofCar);
|
||||||
|
}
|
||||||
|
|
||||||
|
return percent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPercentRemainingCapacity() {
|
public int getPercentRemainingCapacity() {
|
||||||
@ -93,4 +104,38 @@ public class Street {
|
|||||||
else
|
else
|
||||||
return capcity;
|
return capcity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double capcityPoint(double min, double max, Vehicle vehicle) {
|
||||||
|
|
||||||
|
if(max > getLength() && getNextStreet(vehicle) != null) {
|
||||||
|
double reamingLength = max - getLength();
|
||||||
|
double y = capcityPoint(min, getLength(),vehicle);
|
||||||
|
double z = getNextStreet(vehicle).capcityPoint(0, reamingLength, vehicle);
|
||||||
|
return ((y + z)/2);
|
||||||
|
}
|
||||||
|
double totalLength = (max - min) * numberOfLanes;
|
||||||
|
double totalLenthofCar=0;
|
||||||
|
for(int i=0;i<vehicles.size();i++) {
|
||||||
|
if (vehicles.get(i).getCurrentLocation() >= min &&
|
||||||
|
vehicles.get(i).getCurrentLocation() <= max)
|
||||||
|
totalLenthofCar+=vehicles.get(i).getVehicleSize();
|
||||||
|
}
|
||||||
|
double capcity = totalLenthofCar / totalLength;
|
||||||
|
if (capcity > 1)
|
||||||
|
return 1;
|
||||||
|
else if (capcity < 0 )
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return capcity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Street getNextStreet(Vehicle vehicle) {
|
||||||
|
int nextIndex = vehicle.getRoute().indexOf(vehicle.getCurrentStreet()) +1 ;
|
||||||
|
if(vehicle.getRoute().getStreets().length > nextIndex)
|
||||||
|
return (vehicle.getRoute().getStreets()[nextIndex]);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,4 +126,20 @@ public abstract class Vehicle {
|
|||||||
public void setTimeOfArrival(Date timeOfArrival) {
|
public void setTimeOfArrival(Date timeOfArrival) {
|
||||||
this.timeOfArrival = timeOfArrival;
|
this.timeOfArrival = timeOfArrival;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void moveToNextStreet() {
|
||||||
|
|
||||||
|
int nxtIndex = route.indexOf(this.getCurrentStreet()) + 1;
|
||||||
|
if (nxtIndex <= route.getStreets().length - 1) {
|
||||||
|
if (this.getRoute().getStreets()[nxtIndex].capcityPoint(0, 1000) < 1) {
|
||||||
|
this.setCurrentStreet(route.getStreets()[nxtIndex]);
|
||||||
|
this.setCurrentLocation(0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.arrive();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user