AnyLogic
Expand
Font size
Type Parameters:
ROOT - class of top-level agent
All Implemented Interfaces:
AgentConstants, EnvironmentConstants, Serializable
Direct Known Subclasses:
ExperimentRunFast, ExperimentSimulation

public abstract class Experiment<ROOT extends Agent>
extends Utilities
A base class for all AnyLogic experiments. Experiment describes how would one like to run the model (just perform a single simulation run, do Monte Carlo simulation, vary parameters, optimize, etc.), and what outputs of the model you are interested in (this may be a simple chart of how a certain value was changing over time during a run, or how an observable depends on a parameter in case of multiple runs, or a histogram in case of risk analysis, etc.). The experiment is also capable of storing the outputs producted by the model so that they are available after the simulation and independently of it. Experiment can display itself in a presentation window and be controlled by the presentation GUI. For that purpose it supports a set of commands that can be assigned to the presentation window toolbar buttons and menu items.

AnyLogic models with GUI can run as Java applications.
Author:
AnyLogic North America, LLC https://anylogic.com
See Also:
Serialized Form

Nested Class Summary

Modifier and TypeClassDescription
static enum Experiment.Command 
static enum Experiment.State
The state of the Engine

Field Summary

Modifier and TypeFieldDescription
static final Experiment.StateERROR 
static final Experiment.StateFINISHED 
static final Experiment.StateIDLE 
com.anylogic.engine.internal.ActionQueuemodelExecutionCommandQueue
This field shouldn't be accessed by user
is public due to technical reasons
com.anylogic.engine.internal.ActionQueuemutexModelActionQueue
This field shouldn't be accessed by user
is public due to technical reasons
static final Experiment.CommandOPEN_RESULTS 
static final Experiment.CommandOPEN_SNAPSHOT 
static final Experiment.CommandPAUSE 
static final Experiment.StatePAUSED 
static final Experiment.StatePLEASE_WAIT 
static final Experiment.CommandRUN 
static final Experiment.StateRUNNING 
static final Experiment.CommandSAVE_RESULTS 
static final Experiment.CommandSAVE_SNAPSHOT 
static final Experiment.CommandSTEP 
static final Experiment.CommandSTOP 

Fields inherited from interface com.anylogic.engine.AgentConstants

AGENT_ORIENTATION_FRONT, AGENT_ORIENTATION_LEFT, AGENT_ORIENTATION_REAR, AGENT_ORIENTATION_RIGHT, ALL, ALL_CONNECTED, ALL_NEIGHBORS, AREA_ACCESS_RESTRICTION_BY_CAPACITY, AREA_ACCESS_RESTRICTION_BY_CONDITION, AREA_ACCESS_RESTRICTION_BY_SCHEDULE, AREA_ACCESS_RESTRICTION_BY_THROUGHPUT, AREA_ACCESS_RESTRICTION_MANUAL, CENTIMETER, CONVEYOR_BACKWARD, CONVEYOR_CUSTOM_STATION_AGENT_LOCATION_CENTER, CONVEYOR_CUSTOM_STATION_AGENT_LOCATION_NEAR_CONVEYOR, CONVEYOR_CUSTOM_STATION_AGENT_LOCATION_RANDOM, CONVEYOR_FORWARD, CONVEYOR_SIMPLE_STATION_DELAY_TYPE_MANUAL, CONVEYOR_SIMPLE_STATION_DELAY_TYPE_TIMEOUT, CONVEYOR_TYPE_BELT, CONVEYOR_TYPE_CELL, CONVEYOR_TYPE_ROLLER, CUBIC_METER, CUBIC_METER_PER_SECOND, CUSTOM_COLOR_SCHEME, DAY, DEG_PER_SECOND, DEGREE, DENSITY_VALUE_MAX, DENSITY_VALUE_MEAN, EAST, ELEVATOR_DIRECTION_DOWN, ELEVATOR_DIRECTION_NONE, ELEVATOR_DIRECTION_UP, ELEVATOR_DOOR_FRONT, ELEVATOR_DOOR_REAR, ELEVATOR_DOORS_FRONT, ELEVATOR_DOORS_FRONT_REAR, ELEVATOR_DOORS_FRONT_REAR_XJAL, ELEVATOR_DOORS_FRONT_XJAL, ELEVATOR_MOVEMENT_BY_SPEED, ELEVATOR_MOVEMENT_BY_TIME_PER_LEVEL, ELEVATOR_STATE_FAILED, ELEVATOR_STATE_IDLE, ELEVATOR_STATE_LOADING, ELEVATOR_STATE_MOVING, ESCALATOR_STAY_ALL, ESCALATOR_WALK_ALL, ESCALATOR_WALK_ON_LEFT_SIDE, ESCALATOR_WALK_ON_RIGHT_SIDE, EVENT_TIMEOUT_MODE_CYCLIC, EVENT_TIMEOUT_MODE_ONCE, EVENT_TIMEOUT_MODE_USER, EXCEEDED_QUEUE_CROWD_ROUND_AT_THE_END, EXCEEDED_QUEUE_EXTEND_TO_THE_FREE_SPACE, EXT_AGENT_CONTINUOUS, EXT_AGENT_DISCRETE, EXT_AGENT_GIS, EXT_AGENT_INTERACTIVE, EXT_AGENT_NETWORK, EXT_ENTITY, EXT_ENVIRONMENT_CONTINUOUS, EXT_ENVIRONMENT_DISCRETE, EXT_ENVIRONMENT_GIS, EXT_ENVIRONMENT_INTERACTIVE, EXT_SPACE, FLOW_STATISTICS_BOTH, FLOW_STATISTICS_LEFT, FLOW_STATISTICS_RIGHT, FOOT, FPM, FPS, FPS_SQ, HOUR, INCH, JIB_CRANE_CAT_HEAD, JIB_CRANE_FLAT_TOP, JIB_CRANE_INDUSTRIAL, JIB_CRANE_MOVEMENT_CONCURRENT, JIB_CRANE_MOVEMENT_STEP_BY_STEP, KILOGRAM, KILOGRAM_PER_SECOND, KILOMETER, KN, KPH, LIFT_PLATFORM_FLAT, LIFT_PLATFORM_ROLLER, LIFT_SELECTION_MODE_COMPARISON, LIFT_SELECTION_MODE_FIFO, LIFT_SELECTION_MODE_PRIORITY, LINEAR_COLOR_SCHEME, LITER, LITER_PER_SECOND, LOGARITHMIC_COLOR_SCHEME, METER, MILE, MILLIMETER, MILLISECOND, MINUTE, MONTH, MPH, MPS, MPS_SQ, NAUTICAL_MILE, NORTH, NORTHEAST, NORTHWEST, OBJECT_3D_INTERNAL_LIGHTING_GLOBAL, OBJECT_3D_INTERNAL_LIGHTING_INSIDE, OBJECT_3D_INTERNAL_LIGHTING_OFF, OBJECT_3D_XYZ_AXIS_ORDER, OBJECT_3D_YZX_AXIS_ORDER, OBJECT_3D_ZXY_AXIS_ORDER, OIL_BARREL, OIL_BARREL_PER_SECOND, OVERHEAD_CRANE_BRIDGE, OVERHEAD_CRANE_GANTRY, OVERHEAD_CRANE_GIRDER_DOUBLE_TIE, OVERHEAD_CRANE_GIRDER_SINGLE_FLAT, OVERHEAD_CRANE_MOVEMENT_CONCURRENT, OVERHEAD_CRANE_MOVEMENT_INDEPENDENT_HOIST, OVERHEAD_CRANE_MOVEMENT_STEP_BY_STEP, PALLET_RACK_LEFT_TO_RIGHT, PALLET_RACK_NO_DIRECTION, PALLET_RACK_RIGHT_TO_LEFT, PALLET_RACK_SINGLE_AISLE_LEFT, PALLET_RACK_SINGLE_AISLE_RIGHT, PALLET_RACK_TWO_AISLES, PALLET_RACK_TWO_PALLET_RACKS, PARKING_LOT_PARALLEL, PARKING_LOT_PERPENDICULAR, PATH_CONVEYOR, PATH_DASHEDLINE, PATH_LINE, PATH_RAILROAD, PATH_ROAD, PEDESTRIAN_MAP_TYPE, PER_DAY, PER_HOUR, PER_MILLISECOND, PER_MINUTE, PER_MONTH, PER_SECOND, PER_WEEK, PER_YEAR, POSITION_CHOICE_ARRANGED, POSITION_CHOICE_BY_ATTRACTORS, POSITION_CHOICE_RANDOM, RACK_PLACEMENT_BACK_TO_BACK, RACK_PLACEMENT_STAND_ALONE, RACK_TYPE_DRIVE_IN, RACK_TYPE_FIFO_FLOW, RACK_TYPE_LIFO_FLOW, RACK_TYPE_SELECTIVE, RAD_PER_SECOND, RADIAN, RAILWAY_SWITCH_ALL_TO_ALL, RAILWAY_SWITCH_DOUBLE_SLIP, RAILWAY_SWITCH_SINGLE_SLIP, RANDOM, RANDOM_CONNECTED, RANDOM_NEIGHBOR, ROAD_LEFT_HAND, ROAD_LINE_DOUBLE, ROAD_LINE_DOUBLE_DASHED, ROAD_LINE_SINGLE, ROAD_LINE_SINGLE_DASHED, ROAD_RIGHT_HAND, RPM, SECOND, SERVICE_GROUP_BEHAVIOR_DEPENDS_ON_INCOMING_GROUP, SERVICE_GROUP_BEHAVIOR_SAME_FOR_ALL_GROUPS, SERVICE_GROUP_INDIVIDUAL_SERVING, SERVICE_GROUP_ONE_MEMBER_IS_SERVED_OTHERS_WAIT_IN_AREA, SERVICE_GROUP_ONE_MEMBER_IS_SERVED_OTHERS_WAIT_IN_QUEUE, SERVICE_QUEUE_CLOSEST_NON_EMPTY, SERVICE_QUEUE_CLOSEST_STRICT, SERVICE_QUEUE_CUSTOM, SERVICE_QUEUE_LONGEST, SERVICE_QUEUE_NEXT_ROUND_ROBIN, SERVICE_QUEUE_PRIORITY, SERVICE_TYPE_LINEAR, SERVICE_TYPE_POINT, SIGNAL_GREEN, SIGNAL_NONE, SIGNAL_RED, SIGNAL_YELLOW, SIMPLE_STATION_LOADING_MODE_AFTER_UNLOADING, SIMPLE_STATION_LOADING_MODE_SIMULTANEOUS_WITH_UNLOADING, SIMPLE_STATION_PROCESSING_WHEN_AGENT_ENTERS, SIMPLE_STATION_PROCESSING_WHEN_CAPACITY_FULL, SOUTH, SOUTHEAST, SOUTHWEST, SPACE_CONTINUOUS, SPACE_CONTINUOUS_2D, SPACE_DISCRETE, SPACE_DISCRETE_2D, SPACE_GIS, SPACE_UNDEFINED, SQ_CENTIMETER, SQ_FOOT, SQ_INCH, SQ_KILOMETER, SQ_METER, SQ_MILE, SQ_MILLIMETER, SQ_NAUTICAL_MILE, SQ_YARD, TON, TON_PER_SECOND, TRANSFER_MODE_AUTOMATIC, TRANSFER_MODE_MANUAL, TRANSPORTER_MAP_TYPE, TURN, TURN_STATION_MODE_ANGLE, TURN_STATION_MODE_ORIENTATION, WALL_FILL_HATCHING, WALL_FILL_NONE, WALL_FILL_SOLID, WEEK, WEST, WINDOW_3D_NAVIGATION_FULL, WINDOW_3D_NAVIGATION_LIMITED_TO_Z_ABOVE_ZERO, WINDOW_3D_NAVIGATION_NONE, WINDOW_3D_NAVIGATION_ROTATION_ONLY, YARD, YEAR

Method Summary

Modifier and TypeMethodDescription
final voidaddExecutionListener(ExperimentExecutionListener listener)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
voidclose()
This method returns immediately and performs the following actions in a separate thread: stops experiment if it is not stopped, destroys the model and closes experiment window (only if model is started in the application mode)
abstract ROOTcreateRoot(Engine engine)
Is called to obtain a new top-level agent.
final voiddestroy_xjal()
This method normally shouldn't be called by user.
Is called when the experiment object is dynamically disposed - before closing the model window.
RuntimeExceptionerror(Throwable cause, String errorText)
Signals an error during the model run by throwing a RuntimeException with errorText preceded by the agent full name.
RuntimeExceptionerrorInModel(Throwable cause, String errorText)
Signals an model logic error during the model run by throwing a ModelException with errorText preceded by the agent full name.
This method differs from error() in the way of displaying error message: model logic errors are 'softer' than other errors, they use to happen in the models and signal the modeler that model might need some parameters adjustments.
final String[]getCommandLineArguments()
Returns an array of Command-line Arguments passed to this experiment on model start (empty array in case of no arguments)
Never returns null
IExperimentHostgetExperimentHost()
Returns the experiment host object of the model, or some dummy object with no functionality if there is none.
ObjectgetMutexRead_xjal()
This field shouldn't be called by user
is public due to technical reasons
ObjectgetMutexWrite_xjal()
This field shouldn't be called by user
is public due to technical reasons
StringgetName()
Returns the name (window title) of the experiment.
abstract doublegetProgress()
Returns the progress of the experiment: a number between 0 and 1 depending on what part of experiment is completed, or -1 if not known.
intgetRunCount()
Returns the number of the current simulation run, more precisely the number of times the model was destroyed.
abstract doublegetRunTimeSeconds()
Returns the real duration of the experiment in seconds, excluding pause times.
final StringgetSnapshotFileName()
Returns the name of snapshot file this experiment is configured to start simulation from
abstract Experiment.StategetState()
Returns the current state of the experiment: IDLE, PAUSED, RUNNING, FINISHED, ERROR, or PLEASE_WAIT
longgetStep()
Returns the number of events executed by the engine.
intgetWindowHeight()
Returns the initial height of the experiment window, 600 by default.
intgetWindowWidth()
Returns the initial width of the experiment window, 800 by default.
voidinitDefaultRandomNumberGenerator(Engine engine)
This method should be overridden to initialize random number generator of the given engine
Default implementation set new random generation with random seed - for unique experiments
voidinternalFillConfig(LaunchConfiguration config)
This class is internal and shouldn't be called by user.
it may be removed/renamed in future.
booleanisCommandEnabled(Experiment.Command cmd)
Checks if a command can be executed.
final booleanisLoadRootFromSnapshot()
Returns true if this experiment is configured to start simulation from state loaded from snapshot file
static booleanisTestExperiment(Class<?> experimentClass) 
voidonBeforeSimulationRun(ROOT root)
Deprecated.
this method will be removed in future, please use addExecutionListener(ExperimentExecutionListener) instead of overriding this method
voidonDestroy()
User extension point which is called when the experiment object is dynamically disposed - before closing the model window.
This method may be overridden to perform custom actions.
Default implementation does nothing.
voidonDestroy_xjal()
This method normally shouldn't be called by user.
Is called when the experiment object is dynamically disposed - before closing the model window.
This method should be overridden to release resources (e.g.
voidonEngineFinished()
Deprecated.
this method will be removed in future, please use addExecutionListener(ExperimentExecutionListener) instead of overriding this method
voidonError(Throwable error)
This method may be overridden to perform custom processing on errors in the model execution (i.e.
voidonError(Throwable error, Agent root)
This method may be overridden to perform custom processing on errors in the model execution (i.e.
abstract voidpause()
Pauses the experiment execution.
voidregisterExperimentHost_xjal(IExperimentHost experimentHost)
This method isn't designed to be called by user.
Public due to technical reasons
May be removed in future releases
final voidremoveExecutionListener(ExperimentExecutionListener listener)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.
voidreset()
Is called each time before a new model is created and is intended to reset all data associated with the experiment.
abstract voidrun()
Starts the experiment execution from the current state.
voidsetCommandLineArguments_xjal(String[] commandLineArguments)
This method should not be called by user
final voidsetLoadRootFromSnapshot(String snapshotFileName)
Tells this experiment to load the top-level agent from AnyLogic snapshot file

This method is only available in the AnyLogic Professional
voidsetName(String name)
Sets the name (window title) of the experiment.
voidsetup(IExperimentHost experimentHost)
Is called in static main() method of applications, after the experiment is constructed.
voidsetupEngine(Engine engine)
Is called for the simulation engine when it is created
abstract voidstep()
Performs one step of experiment execution.
abstract voidstop()
Terminates the experiment execution.
voidwarning(String warningText)
Signals a warning during the model run with warningText preceded by the agent full name.
Warnings may be turned off in the AnyLogic preferences (runtime section) or by API: AnyLogicRuntimePreferences.setEnableWarnings(Boolean).
This method checks against numerous warnings output: In case of multiple warnings having equal warningText, only the first 10 of them are displayed.
voidwarning(String warningTextFormat, Object... args)
Signals a warning during the model run with warningText preceded by the agent full name.

Methods inherited from class com.anylogic.engine.Utilities

addToDate, addToDate, atan2fast, bernoulli, bernoulli, beta, beta, beta, beta, beta, binomial, binomial, binomial, binomial, binomial, briefInfoOn, castNumberTypes, castTypes, castTypesBack, cauchy, cauchy, cauchy, chi2, chi2, chi2, convertMarkupSegmentDescriptors_xjal, copyToClipboard, copyToClipboard, copyToClipboard, createTableElementDatabaseBuilder, createTrajectoryGIS, createURL_xjal, date, dateToTime, day, deleteFrom, difference, difference, differenceInCalendarUnits, differenceInCalendarUnits, differenceInDateUnits, differenceInDateUnits, differenceInDateUnits, differenceInDateUnits, dirToAngle, dropTime, erlang, erlang, erlang, error, error, error, errorInModel, errorInModel, errorInModel, executeAction, executeExpression, executeExpression, executeStatement, exponential, exponential, exponential, exponential, exponential, exponential, findExistingFile, format, format, format, format, format, format, format, formatAmountUnits, formatDayOfWeek, formatFlowRateUnits, formatGeoHeading, formatLatitude, formatLengthUnits, formatLengthUnits, formatLongitude, formatMonth, formatSpeedUnits, formatTimeInterval, gamma, gamma, gamma, gamma, gamma, gammaLog, geometric, geometric, getAmPm, getAmPm, getCanonicalPath, getDatabaseConnection, getDateWithTimeNextTo, getDayOfMonth, getDayOfMonth, getDayOfWeek, getDayOfWeek, getDayOfYear, getDefaultRandomGenerator, getDistance, getDistance, getDistanceFromPointToLine, getDistanceFromPointToLineSq, getDistanceFromPointToSegment, getDistanceFromPointToSegment, getDistanceFromPointToSegmentSq, getDistanceFromPointToSegmentSq, getDistanceGIS, getDistanceGIS, getDistanceSq, getDistanceSq, getFullName, getHour, getHour, getHourOfDay, getHourOfDay, getLength, getLength, getLengthSq, getLengthSq, getMillisecond, getMillisecond, getMinute, getMinute, getMonth, getMonth, getName, getNearestPointOnSegment, getNearestPointOnSegment, getPerformanceParallelWorkersCount_xjal, getRandom, getRandom, getResult, getSecond, getSecond, getTime, getTimeoutToNextTime, getYear, getYear, gumbel1, gumbel1, gumbel2, gumbel2, hour, hypergeometric, hypergeometric, insertInto, inspectOf, inspectOfLink_xjal, isFinite, isLineIntersectingLine, isLineIntersectingRectangle, isLoggingClassToDB, isLoggingToDB, isPointInsideRay, isPointInsideRectangle, isPointInsideSegment, isPointOnTheSameLine, isRayIntersectingSegment, joinArrays_xjal, laplace, laplace, layoutTypeToString, limit, limit, limitMax, limitMax, limitMin, limitMin, logarithmic, logarithmic, logistic, logistic, lognormal, lognormal, logToDB, logToDB, logToDB, logToDB, millisecond, minute, month, negativeBinomial, negativeBinomial, negativeBinomial, negativeBinomial, normal, normal, normal, normal, normal, normal, pareto, pareto, pareto, pert, pert, poisson, poisson, poisson, poisson, prepareBeforeExperimentStart_xjal, prepareStatement, pulse, pulseTrain, quantum, ramp, random, randomColor, randomFalse, randomFalse, randomFrom, randomFrom, randomFrom, randomFrom, randomFrom, randomFrom, randomlyCreate, randomlyCreate, randomlyCreate, randomlyCreate, randomTrue, randomTrue, randomWhere, randomWhere, randomWhere, randomWhere, rayleigh, rayleigh, rayleigh, roundToDecimal, roundToInt, second, selectAndDoForEach, selectArrayOfDouble, selectArrayOfInt, selectExists, selectExists, selectFirstValue, selectFirstValue, selectFirstValue, selectFirstValue, selectFrom, selectResultSet, selectTableFunction, selectUniqueValue, selectUniqueValue, selectUniqueValue, selectUniqueValue, selectValues, selectValues, setDefaultRandomGenerator, shuffle, sqlGetObject, sqlGetObject, sqlGetObject, sqlGetObject, sqlSetObject, sqr, step, time, time, timeToDate, toBoxedDouble_xjal, toDate, toDate, toDate, toDateInMillis, toLatitude, toLongitude, toModelRate, toModelTime, toRateUnits, toStringAlignedNameValues, toTimeout, toTimeout, toTimeoutInCalendar, toTimeUnits, trace, trace, traceln, traceln, traceln, traceln, traceln, traceToDB, traceToDB, triangular, triangular, triangular, triangular, triangular, triangularAV, triangularAV, uniform, uniform, uniform, uniform, uniform, uniform_discr, uniform_discr, uniform_discr, uniform_pos, uniform_pos, update, week, weibull, weibull, weibull, weibull, weibull, xidz, year, zidz

Methods inherited from class java.lang.Object

equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

IDLE

public static final Experiment.State IDLE

PAUSED

public static final Experiment.State PAUSED

RUNNING

public static final Experiment.State RUNNING

FINISHED

public static final Experiment.State FINISHED

ERROR

public static final Experiment.State ERROR

PLEASE_WAIT

public static final Experiment.State PLEASE_WAIT

OPEN_RESULTS

public static final Experiment.Command OPEN_RESULTS

SAVE_RESULTS

public static final Experiment.Command SAVE_RESULTS

OPEN_SNAPSHOT

public static final Experiment.Command OPEN_SNAPSHOT

SAVE_SNAPSHOT

public static final Experiment.Command SAVE_SNAPSHOT

RUN

public static final Experiment.Command RUN

STEP

public static final Experiment.Command STEP

PAUSE

public static final Experiment.Command PAUSE

STOP

public static final Experiment.Command STOP

modelExecutionCommandQueue

@AnyLogicInternalAPI
public transient com.anylogic.engine.internal.ActionQueue modelExecutionCommandQueue
This field shouldn't be accessed by user
is public due to technical reasons

mutexModelActionQueue

@AnyLogicInternalAPI
public transient com.anylogic.engine.internal.ActionQueue mutexModelActionQueue
This field shouldn't be accessed by user
is public due to technical reasons

Method Details

internalFillConfig

@AnyLogicInternalAPI
public void internalFillConfig(LaunchConfiguration config)
This class is internal and shouldn't be called by user.
it may be removed/renamed in future.

isTestExperiment

public static boolean isTestExperiment(Class<?> experimentClass)

setName

@AnyLogicInternalCodegenAPI
public void setName(String name)
Sets the name (window title) of the experiment. This method is not intended to be called by user, to change window title at run-time use getExperimentHost().getFrame().setTitle("My new name");
Parameters:
name - the new name (window title) of the experiment

getName

public String getName()
Returns the name (window title) of the experiment.
Returns:
the name (window title) of the experiment

error

public RuntimeException error(Throwable cause,
 String errorText)
Description copied from class: Utilities
Signals an error during the model run by throwing a RuntimeException with errorText preceded by the agent full name.
Specified by:
error in class Utilities
Parameters:
cause - the cause (which will be saved for more detailed message), may be null
errorText - the text describing the error that will be displayed.
Returns:
actually this method never returns, it throws runtime exception by itself.
But the return type is defined for some cases when you would like to use the following form of call: throw error("my message");

errorInModel

public RuntimeException errorInModel(Throwable cause,
 String errorText)
Description copied from class: Utilities
Signals an model logic error during the model run by throwing a ModelException with errorText preceded by the agent full name.
This method differs from error() in the way of displaying error message: model logic errors are 'softer' than other errors, they use to happen in the models and signal the modeler that model might need some parameters adjustments. Examples are 'entity was unable to leave flowchart block because subsequent block was busy', 'insufficient capacity of pallet rack' etc.
Specified by:
errorInModel in class Utilities
Parameters:
cause - the cause (which will be saved for more detailed message), may be null
errorText - the text describing the error that will be displayed.
Returns:
actually this method never returns, it throws runtime exception by itself.
But the return type is defined for some cases when you would like to use the following form of call: throw errorInModel("my message");

warning

public void warning(String warningText)
Description copied from class: Utilities
Signals a warning during the model run with warningText preceded by the agent full name.
Warnings may be turned off in the AnyLogic preferences (runtime section) or by API: AnyLogicRuntimePreferences.setEnableWarnings(Boolean).
This method checks against numerous warnings output:
  • In case of multiple warnings having equal warningText, only the first 10 of them are displayed.
  • When more than 1000 warnings having different warningText occur, all the subsequent warnings (including new occurrences of those in the first 1000) will stop displaying.
  • Be careful with using dynamically changing warningText (e.g. listing names of agents), it could be better to use Utilities.warning(String, Object...).
Specified by:
warning in class Utilities
Parameters:
warningText - the text describing the warning that will be displayed.

warning

public void warning(String warningTextFormat,
 Object... args)
Description copied from class: Utilities
Signals a warning during the model run with warningText preceded by the agent full name. The method allows warning format syntax like in String.format(String, Object...) method.
Warnings may be turned off in the AnyLogic preferences (runtime section) or by API: AnyLogicRuntimePreferences.setEnableWarnings(Boolean).
This method checks against numerous warnings output:
  • In case of multiple warnings having equal warningTextFormat, only the first 10 of them are displayed.
  • It is safe to raise numerous warnings with equal format string (which defines the warning type) but varying args - AnyLogic will take care to display only 10 first warnings of each warning type.
  • When more than 1000 warnings having different warningTextFormat occur, all the subsequent warnings (including new occurrences of those in the first 1000) will stop displaying.
  • Don't use dynamically changing warningTextFormat (e.g. listing names of agents), use args instead.
Specified by:
warning in class Utilities
See Also:

getRunCount

public int getRunCount()
Returns the number of the current simulation run, more precisely the number of times the model was destroyed.
Returns:
the number of the current simulation run, more precisely the number of times the model was destroyed.

getStep

public long getStep()
Returns the number of events executed by the engine.
Returns:
the number of events executed

getState

public abstract Experiment.State getState()
Returns the current state of the experiment: IDLE, PAUSED, RUNNING, FINISHED, ERROR, or PLEASE_WAIT
Returns:
the current state of the experiment

getProgress

public abstract double getProgress()
Returns the progress of the experiment: a number between 0 and 1 depending on what part of experiment is completed, or -1 if not known.
Returns:
the progress of the experiment

getRunTimeSeconds

public abstract double getRunTimeSeconds()
Returns the real duration of the experiment in seconds, excluding pause times.
Returns:
the real duration of the experiment in seconds

getWindowWidth

public int getWindowWidth()
Returns the initial width of the experiment window, 800 by default.
Returns:
the initial width of the experiment window

getWindowHeight

public int getWindowHeight()
Returns the initial height of the experiment window, 600 by default.
Returns:
the initial height of the experiment window

getExperimentHost

public IExperimentHost getExperimentHost()
Description copied from class: Presentable
Returns the experiment host object of the model, or some dummy object with no functionality if there is none.
Specified by:
getExperimentHost in class Presentable
Returns:
the experiment host object of the model

run

public abstract void run()
Starts the experiment execution from the current state.

step

public abstract void step()
Performs one step of experiment execution.

pause

public abstract void pause()
Pauses the experiment execution.

stop

public abstract void stop()
Terminates the experiment execution.

close

public void close()
This method returns immediately and performs the following actions in a separate thread:
  • stops experiment if it is not stopped,
  • destroys the model and
  • closes experiment window (only if model is started in the application mode)

isCommandEnabled

public boolean isCommandEnabled(Experiment.Command cmd)
Checks if a command can be executed. The possible command ids are: OPEN_RESULTS, SAVE_RESULTS, OPEN_SNAPSHOT, SAVE_SNAPSHOT, RUN, STEP PAUSE, STOP.
Parameters:
cmd - the command id
Returns:
true if the command can be executed, false otherwise

setLoadRootFromSnapshot

public final void setLoadRootFromSnapshot(String snapshotFileName)
Tells this experiment to load the top-level agent from AnyLogic snapshot file

This method is only available in the AnyLogic Professional
Parameters:
snapshotFileName -

isLoadRootFromSnapshot

public final boolean isLoadRootFromSnapshot()
Returns true if this experiment is configured to start simulation from state loaded from snapshot file
Returns:
true if this experiment is configured to start simulation from state loaded from snapshot file

getSnapshotFileName

public final String getSnapshotFileName()
Returns the name of snapshot file this experiment is configured to start simulation from
Returns:
the name of snapshot file this experiment is configured to start simulation from

getCommandLineArguments

public final String[] getCommandLineArguments()
Returns an array of Command-line Arguments passed to this experiment on model start (empty array in case of no arguments)
Never returns null
Returns:
array of Command-line Arguments passed to this experiment on model start

createRoot

@AnyLogicInternalCodegenAPI
public abstract ROOT createRoot(Engine engine)
Is called to obtain a new top-level agent. This method must be defined in a subclass. Note that the top-level agent should just be constructed in this method, as its create() and start() methods will be called later on.
This method should not be used to define parameters
Parameters:
engine - the simulation engine that will simulate the model

onBeforeSimulationRun

@Deprecated
@AnyLogicInternalCodegenAPI
public void onBeforeSimulationRun(ROOT root)
Deprecated.
this method will be removed in future, please use addExecutionListener(ExperimentExecutionListener) instead of overriding this method
See Also:

onEngineFinished

@Deprecated
@AnyLogicInternalCodegenAPI
public void onEngineFinished()
Deprecated.
this method will be removed in future, please use addExecutionListener(ExperimentExecutionListener) instead of overriding this method
See Also:

reset

@AnyLogicInternalCodegenAPI
public void reset()
Is called each time before a new model is created and is intended to reset all data associated with the experiment. This is an user's extension point; by default does nothing.

setup

@AnyLogicInternalCodegenAPI
public void setup(IExperimentHost experimentHost)
Is called in static main() method of applications, after the experiment is constructed. Is intended to perform initial setup of the simulation engine and the presentation, if any. This is a user's extension points; by default does nothing.
Parameters:
experimentHost - experiment host, see ExperimentHost

setupEngine

@AnyLogicInternalCodegenAPI
public void setupEngine(Engine engine)
Is called for the simulation engine when it is created
Parameters:
engine - the simulation engine

onDestroy

@AnyLogicInternalCodegenAPI
public void onDestroy()
User extension point which is called when the experiment object is dynamically disposed - before closing the model window.
This method may be overridden to perform custom actions.
Default implementation does nothing.

onDestroy_xjal

@AnyLogicInternalCodegenAPI
public void onDestroy_xjal()
This method normally shouldn't be called by user.
Is called when the experiment object is dynamically disposed - before closing the model window.
This method should be overridden to release resources (e.g. commit connections with database) and call super.doDestroy_xjal() method at the end. Don't call onDestroy() when overriding this method: it is called automatically

destroy_xjal

@AnyLogicInternalAPI
public final void destroy_xjal()
This method normally shouldn't be called by user.
Is called when the experiment object is dynamically disposed - before closing the model window.

initDefaultRandomNumberGenerator

@AnyLogicInternalCodegenAPI
public void initDefaultRandomNumberGenerator(Engine engine)
This method should be overridden to initialize random number generator of the given engine
Default implementation set new random generation with random seed - for unique experiments
Parameters:
engine - the engine instance

onError

public void onError(Throwable error)
This method may be overridden to perform custom processing on errors in the model execution (i.e. errors in the action code of events, dynamic events, transitions, entry/exit codes of states etc, formulas, conditions of events etc.)
By default, this method does nothing.
This method shouldn't be called directly by user. Instead, engine calls it internally.
Parameters:
error - an error which has occurred during event execution

onError

public void onError(Throwable error,
 Agent root)
This method may be overridden to perform custom processing on errors in the model execution (i.e. errors in the action code of events, dynamic events, transitions, entry/exit codes of states etc, formulas, conditions of events etc.)
By default, this method does nothing.
This method shouldn't be called directly by user. Instead, engine calls it internally.
Parameters:
error - an error which has occurred during event execution
root - the root (main) agent of the model, useful for experiments with multiple runs executed in parallel. May be null in some cases (e.g. on errors during root agent creation).
Since:
8.4

addExecutionListener

@AnyLogicInternalAPI
public final void addExecutionListener(ExperimentExecutionListener listener)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.

removeExecutionListener

@AnyLogicInternalAPI
public final void removeExecutionListener(ExperimentExecutionListener listener)
This method is internal and shouldn't be called by user.
it may be removed/renamed in future.

setCommandLineArguments_xjal

@AnyLogicInternalCodegenAPI
public void setCommandLineArguments_xjal(String[] commandLineArguments)
This method should not be called by user
Parameters:
commandLineArguments -

getMutexRead_xjal

@AnyLogicInternalAPI
public Object getMutexRead_xjal()
This field shouldn't be called by user
is public due to technical reasons

getMutexWrite_xjal

@AnyLogicInternalAPI
public Object getMutexWrite_xjal()
This field shouldn't be called by user
is public due to technical reasons

registerExperimentHost_xjal

@AnyLogicInternalAPI
public void registerExperimentHost_xjal(IExperimentHost experimentHost)
This method isn't designed to be called by user.
Public due to technical reasons
May be removed in future releases