20 package tutorial.programming.withinDayReplanningAgents;
22 import com.google.inject.Provider;
23 import org.apache.log4j.Logger;
51 import javax.inject.Inject;
55 public static void main(String[] args) {
61 config.
network().setInputFile(
"../../../matsim/trunk/examples/siouxfalls/network-wo-dummy-node.xml") ;
63 config.
qsim().setEndTime(26.*3600) ;
70 public void install() {
71 bindMobsim().toProvider(
new Provider<Mobsim>() {
86 public void insertAgentsIntoMobsim() {
87 final Id<Link> startLinkId = (Id<Link>) (sc.getNetwork().getLinks().keySet().toArray())[0];
116 class MyAgent
implements MobsimDriverAgent {
117 private static Logger log = Logger.getLogger(
"MyAgent") ;
119 private MobsimVehicle vehicle;
121 private EventsManager ev;
122 private Id<Link> currentLinkId;
123 private Id<Person> myId;
124 private State state = State.ACTIVITY;
125 private Netsim netsim;
126 private Id<Link> destinationLinkId = Id.create(
"dummy", Link.class);
127 private Id<Vehicle> plannedVehicleId ;
129 private double activityEndTime = 1. ;
131 MyAgent( Scenario sc, EventsManager ev, Netsim netsim, Id<Link> startLinkId, MobsimVehicle veh ) {
132 log.info(
"calling MyAgent" ) ;
135 this.myId = Id.create(
"testveh", Person.class) ;
136 this.netsim = netsim ;
137 this.currentLinkId = startLinkId ;
138 this.plannedVehicleId = veh.getId() ;
142 public void setStateToAbort(
double now) {
143 this.state = State.ABORT ;
144 log.info(
"calling abort; setting state to: " + this.state ) ;
148 public void endActivityAndComputeNextState(
double now) {
149 this.state = State.LEG ;
150 log.info(
"calling endActivityAndComputeNextState; setting state to: " + this.state ) ;
155 this.state = State.ACTIVITY ;
156 this.activityEndTime = Double.POSITIVE_INFINITY ;
157 log.info(
"calling endLegAndComputeNextState; setting state to: " + this.state ) ;
161 public double getActivityEndTime() {
162 log.info (
"calling getActivityEndTime; answer: " + this.activityEndTime ) ;
163 return this.activityEndTime ;
167 public Double getExpectedTravelTime() {
172 public Double getExpectedTravelDistance() {
177 public String getMode() {
178 return TransportMode.car ;
182 public State getState() {
183 log.info(
"calling getState; answer: " + this.state ) ;
189 this.currentLinkId = linkId ;
193 public Id<Link> getCurrentLinkId() {
194 return this.currentLinkId ;
198 public Id<Link> getDestinationLinkId() {
199 return this.destinationLinkId ;
203 public Id<Person>
getId() {
208 public Id<Link> chooseNextLinkId() {
209 Link currentLink = sc.getNetwork().getLinks().get(this.currentLinkId) ;
210 Object[] outLinks = currentLink.getToNode().getOutLinks().keySet().toArray() ;
211 int idx = MatsimRandom.getRandom().nextInt(outLinks.length) ;
212 if ( this.netsim.getSimTimer().getTimeOfDay() < 24.*3600 ) {
213 return (Id<Link>) outLinks[idx] ;
215 this.destinationLinkId = (Id<Link>) outLinks[idx] ;
221 public Id<Vehicle> getPlannedVehicleId() {
222 return this.plannedVehicleId ;
226 public MobsimVehicle getVehicle() {
227 return this.vehicle ;
231 public void notifyMoveOverNode(Id<Link> newLinkId) {
232 this.currentLinkId = newLinkId ;
241 public boolean isWantingToArriveOnCurrentLink() {
247 public Facility<? extends Facility<?>> getCurrentFacility() {
253 public Facility<? extends Facility<?>> getDestinationFacility() {
final void addOverridingModule(AbstractModule abstractModule)
void addAgentSource(AgentSource agentSource)
static void main(String[] args)
static QSim createDefaultQSim(final Scenario scenario, final EventsManager eventsManager)
void insertAgentIntoMobsim(final MobsimAgent agent)
void setVehicle(final MobsimVehicle veh)
ControlerConfigGroup controler
static Config createConfig(final String filename)
void endLegAndComputeNextState(final double now)
NetworkConfigGroup network
void addParkedVehicle(MobsimVehicle veh, Id< Link > startLinkId)
void notifyArrivalOnLinkByNonNetworkMode(final Id< Link > linkId)