Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
- package Simulation.Manager.algorithms;
- import Simulation.Manager.Algorithm;
- import Simulation.Manager.AlgorithmManager;
- import Simulation.Manager.Passenger;
- import Simulation.Manager.Railcab;
- import Simulation.Manager.Station;
- import Simulation.Manager.exceptions.RailcabCapacityException;
- import java.util.ArrayList;
- /**
- *
- * @author Maarten Blokker
- */
- public class StandardAlgorithm extends Algorithm {
- public StandardAlgorithm(final AlgorithmManager manager) {
- super(manager);
- }
- @Override
- public double initialPosition(Railcab cab) {
- return getStations().get(cab.id).position;
- }
- @Override
- public Station getDestination(Railcab cab) {
- ArrayList<Passenger> passengers = cab.getPassengers();
- if (passengers.size() > 0) {
- for (Passenger p : passengers) {
- return p.getDestination();
- }
- }
- final ArrayList<Station> stations = sortStations();
- for (Station s : stations) {
- if (!s.isOccupied() && !isCabUnderway(s)) {
- if (isTrackFree(cab, cab.getDestination(), s)) {
- return s;
- }
- }
- }
- return null;
- }
- @Override
- public Railcab getRailcab() {
- throw new UnsupportedOperationException("Not supported yet.");
- }
- @Override
- public void update() {
- //
- }
- @Override
- public void proccesPassengers(Railcab cab, Station arrival) {
- /* creates three arraylists for boarded passengers, boarding passengers
- * and waiting passengers. */
- ArrayList<Passenger> boarded = cab.getPassengers();
- ArrayList<Passenger> boarding = new ArrayList<Passenger>();
- ArrayList<Passenger> waiting = arrival.getPassengersWaiting();
- //kijken of er iemand is die moet uitstappen
- for (int i = 0; i < boarded.size(); i++) {
- Passenger p = boarded.get(i);
- if (p.getDestination().equals(arrival)) {
- cab.removePassenger(p);
- }
- }
- Station dest = null;
- long maxWaiting = Long.MIN_VALUE;
- for (int i = 0; i < waiting.size(); i++) {
- Passenger p = waiting.get(i);
- long waitTime = p.getWaitingTime();
- if (maxWaiting < waitTime) {
- maxWaiting = waitTime;
- dest = p.getDestination();
- }
- }
- //we hebben de langst wachtende passagier en zijn bestemming gevonden.
- //kijken of er nog meer mensen die kant op moeten
- for (int i = 0; i < waiting.size(); i++) {
- Passenger p = waiting.get(i);
- if (p.getDestination() == dest) {
- if (boarding.size() < 3) {
- boarding.add(p);
- } else {
- //we zitten vol, stop maar met zoeken
- break;
- }
- }
- }
- try {
- cab.addPassenger(boarding);
- } catch (RailcabCapacityException ex) {
- //cab is al vol!
- }
- }
- @Override
- public void whatToDoAtPassingStation(Railcab cab, Station passingStation) {
- // final ArrayList<Railcab> cabs = getRailcabs();
- // for (Railcab r : cabs) {
- // if (r.equals(cab)) {
- // continue;
- // } else {
- // Station dest = cab.getDestination();
- // Station otherdest = r.getDestination();
- // if (Math.abs(cab.location - r.location) < 10) { //within a certain range
- // if (r.direction != cab.direction) {
- // if (!r.isWaiting()) {
- // cab.isWaiting();
- // } else {
- //
- // }
- // }
- // }
- // }
- // }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement