Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.98 KB | None | 0 0
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package Simulation.Manager.algorithms;
  6.  
  7. import Simulation.Manager.Algorithm;
  8. import Simulation.Manager.AlgorithmManager;
  9. import Simulation.Manager.Passenger;
  10. import Simulation.Manager.Railcab;
  11. import Simulation.Manager.Station;
  12. import Simulation.Manager.exceptions.RailcabCapacityException;
  13. import java.util.ArrayList;
  14.  
  15. /**
  16.  *
  17.  * @author Maarten Blokker
  18.  */
  19. public class StandardAlgorithm extends Algorithm {
  20.  
  21.     public StandardAlgorithm(final AlgorithmManager manager) {
  22.         super(manager);
  23.     }
  24.  
  25.     @Override
  26.     public double initialPosition(Railcab cab) {
  27.         return getStations().get(cab.id).position;
  28.     }
  29.  
  30.     @Override
  31.     public Station getDestination(Railcab cab) {
  32.         ArrayList<Passenger> passengers = cab.getPassengers();
  33.         if (passengers.size() > 0) {
  34.             for (Passenger p : passengers) {
  35.                 return p.getDestination();
  36.             }
  37.         }
  38.         final ArrayList<Station> stations = sortStations();
  39.         for (Station s : stations) {
  40.             if (!s.isOccupied() && !isCabUnderway(s)) {
  41.                 if (isTrackFree(cab, cab.getDestination(), s)) {
  42.                     return s;
  43.                 }
  44.             }
  45.         }
  46.         return null;
  47.     }
  48.  
  49.     @Override
  50.     public Railcab getRailcab() {
  51.         throw new UnsupportedOperationException("Not supported yet.");
  52.     }
  53.  
  54.     @Override
  55.     public void update() {
  56.         //
  57.     }
  58.  
  59.     @Override
  60.     public void proccesPassengers(Railcab cab, Station arrival) {
  61.         /* creates three arraylists for boarded passengers, boarding passengers
  62.          * and waiting passengers. */
  63.         ArrayList<Passenger> boarded = cab.getPassengers();
  64.         ArrayList<Passenger> boarding = new ArrayList<Passenger>();
  65.         ArrayList<Passenger> waiting = arrival.getPassengersWaiting();
  66.         //kijken of er iemand is die moet uitstappen
  67.         for (int i = 0; i < boarded.size(); i++) {
  68.             Passenger p = boarded.get(i);
  69.             if (p.getDestination().equals(arrival)) {
  70.                 cab.removePassenger(p);
  71.             }
  72.         }
  73.  
  74.         Station dest = null;
  75.         long maxWaiting = Long.MIN_VALUE;
  76.         for (int i = 0; i < waiting.size(); i++) {
  77.             Passenger p = waiting.get(i);
  78.             long waitTime = p.getWaitingTime();
  79.             if (maxWaiting < waitTime) {
  80.                 maxWaiting = waitTime;
  81.                 dest = p.getDestination();
  82.             }
  83.         }
  84.         //we hebben de langst wachtende passagier en zijn bestemming gevonden.
  85.         //kijken of er nog meer mensen die kant op moeten
  86.         for (int i = 0; i < waiting.size(); i++) {
  87.             Passenger p = waiting.get(i);
  88.             if (p.getDestination() == dest) {
  89.                 if (boarding.size() < 3) {
  90.                     boarding.add(p);
  91.                 } else {
  92.                     //we zitten vol, stop maar met zoeken
  93.                     break;
  94.                 }
  95.             }
  96.         }
  97.         try {
  98.             cab.addPassenger(boarding);
  99.         } catch (RailcabCapacityException ex) {
  100.             //cab is al vol!
  101.         }
  102.  
  103.     }
  104.  
  105.     @Override
  106.     public void whatToDoAtPassingStation(Railcab cab, Station passingStation) {
  107. //        final ArrayList<Railcab> cabs = getRailcabs();
  108. //        for (Railcab r : cabs) {
  109. //            if (r.equals(cab)) {
  110. //                continue;
  111. //            } else {
  112. //                Station dest = cab.getDestination();
  113. //                Station otherdest = r.getDestination();
  114. //                if (Math.abs(cab.location - r.location) < 10) { //within a certain range
  115. //                    if (r.direction != cab.direction) {
  116. //                        if (!r.isWaiting()) {
  117. //                            cab.isWaiting();
  118. //                        } else {
  119. //
  120. //                        }
  121. //                    }
  122. //                }
  123. //            }
  124. //        }
  125.     }
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement