/******************************************************************************* * Copyright (c) 2015 QUANTICOL EU Project. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Michele Loreti (University of Firenze) - initial API and implementation *******************************************************************************/ package org.cmg.ml.sam.sim.tests.sier; import org.apache.commons.math3.random.RandomGenerator; import org.cmg.ml.sam.sim.Activity; import org.cmg.ml.sam.sim.Agent; import org.cmg.ml.sam.sim.util.WeightedElement; import org.cmg.ml.sam.sim.util.WeightedStructure; public class SeirAgent extends Agent<SeirState> { private SeirAgentState state; public SeirAgent() { this(SeirAgentState.S_STATE); } public SeirAgent(SeirAgentState state) { this.state = state; } @Override public WeightedStructure<Activity> getActivities(final SeirState data) { switch (state) { case S_STATE: return new WeightedElement<Activity>( data.fromStoERate() , new Activity() { @Override public String getName() { return ""; } @Override public boolean execute( RandomGenerator r ) { data.fromStoE(); state = SeirAgentState.E_STATE; return false; } } ); case E_STATE: return new WeightedElement<Activity>( data.fromEtoIRate() , new Activity() { @Override public String getName() { return ""; } @Override public boolean execute( RandomGenerator r ) { data.fromEtoI(); state = SeirAgentState.I_STATE; return false; } } ); case I_STATE: return new WeightedElement<Activity>( data.fromItoRRate() , new Activity() { @Override public String getName() { return ""; } @Override public boolean execute( RandomGenerator r ) { data.fromItoR(); state = SeirAgentState.R_STATE; return false; } } ); case R_STATE: return new WeightedElement<Activity>( data.fromRtoIRate() , new Activity() { @Override public String getName() { return ""; } @Override public boolean execute( RandomGenerator r ) { data.fromRtoI(); state = SeirAgentState.I_STATE; return false; } } ); default: return null; } } }