You are here:


This method initialises a trajectory object, which comprises a chain of activities that can be attached to an arrivals (intakes) generator for the purpose of simulation. See below for a complete list of available activities by category.


AXCEL.DES.TRAJECTORY(trajectory, [deployment])

The AXCEL.DES.TRAJECTORY function syntax has the following arguments:

trajectory Required. If you enter a single cell or a text input, this function looks for the trajectory name. If exist with appropriate access, the function send the details back to your spreadsheet and displays the trajectory as a flow chart in your task pane. Otherwise, the function builds the trajectory based on input. The structure of the trajectory is as follws:

First step of trajectory specification 1 specification 2 specification n
Second step of trajectory specification 1 specification 2 specification n
Last step of trajectory specification 1 specification 1 specification n

There are several types of trajectories explained below:

seize / release / release_all :

Activities for seizing / releasing a resource, by name. Here is the format:

releaseresource amount

resource is the name of the resource seized / released such as “Doctor 1” or “SMT Machine”.

amount is the amount to seize

continue is a boolean (TRUE / FALSE) to indicate whether the subtrajectory defined in reject, if it is defined, should continue to the next activity in the main trajectory.

reject is an optional trajectory object which will be followed if the arrival is rejected (dropped). Rejection happens when a resource is at full capacity and there is no room in the queue (either because there is a finite queue_size and it is full, or because queue_size=0 and thus it is disabled).


Activity for inserting delays and execute user-defined tasks. Here is the format:

timeouttimeout distribution argument 1 argument 2 argument …

Here is the list of distributions:

Distribution input name argument 1 argument 2 argument 3 argument …
constant constant number
normal norm mean sd
discrete uniform unif min max
log normal lnorm meanlog sdlog
classic beta pert betapert min likeliest max
gamma gamma min shape scale
logistic logis mean scale
exponential exp rate
binomial binom trials probability
poisson pois lambda
custom inputs sample obs 1 obs 2 obs 3


Activity for going backwards to a previous point in the trajectory. Useful to implement loops.

rollbacksteps times

steps is the number of activities to roll back and times is the number of repetitions until an arrival may continue.


Concatenate any number of trajectories in the specified order. Here is the format:

join trajectory 1 trajectory 2 trajectory … trajectory n

All trajectories should be in your storage already deployed or shared by other users.

activate / deactivate:

Activities for activating or deactivating the generation of arrivals by name. Here is the format:

activate arrival name in generator
deactivate arrival name in generator

send / trap / untrap / wait:

These activities enable asynchronous programming. send broadcasts a signal. Arrivals can subscribe to signals and (optionally) assign a handler with trap. Note that, while inside a batch, all the signals subscribed before entering the batch are ignored. Upon a signal reception, the arrival stops the current activity and executes the handler (if provided). Then, the execution returns to the activity following the point of the interruption. untrap can be used to unsubscribe from signals. wait blocks until a signal is received. Here is the format of each:

send signal name
trap signal name handler trajectory interruptible (TRUE or FALSE)
untrap signal name


This process encapsulates the activity of n workers running parallel sub-trajectories. You can define wait behaviour. If TRUE, the arrival waits until all parallel sub-trajectories are finished; if FALSE, the arrival continues as soon as the first parallel task ends. The input trajectories must be in user’s storage with appropriate access. Here is the format:

parallel wait (TRUE / FALSE) trajectory 1 trajectory 2 trajectory n

set_attribue / set_global

Activity for modifying attributes. Attributes defined with set_attribute are per arrival, meaning that each arrival has its own set of attributes, not visible by any other one. On the other hand, attributes defined with set_global are shared by all the arrivals in the simulation. Here is the format:

set_attribute key value operation ( +, *, or empty) initial value
set_global key value operation ( +, *, or empty) initial value

get_attribute / get_global

Logs the key values set by set_global or set_attribute. Here is the format:

get_attribute key
get_global key


logs a message. Here isthe format:

log message


Activities for leaving with some probability. Here is the format:

leave probability (0 to 1) out trajectory or empty

Arrivals the original trajectory randomly with defined probability. After leaving, they follow out trajectory or leave permanently if no trajectory is provided.


Activity for setting a drop-out trajectory for unfinished arrivals, i.e., those dropped from a resource (due to preemption, resource shrinkage or a rejected seize) or those that leave a trajectory. Here is the format:

handle_unfinished unfinished trajectory or empty

trajectory must be in user’s storage with appropriate access.


Reneging after provided waiting time.

renege_in time out trajectory or empty

Arrivals leave the trajectory if they are not served after waiting time. After leaving, they follow out trajectory or leave permanently, if no trajectory is provided.


Activity for defining a fork with N alternative sub-trajectories based on key value. Here is the format:

branchkey trajectory 1 trajectory n continue 1
continue n

All trajectories must be in user’s storage. Continue 1,2 .. indicates whether the arrivals continue by coming back to the original trajectory (TRUE) or not (FALSE).

batch / separate

Activities for collecting a number of arrivals before they can continue processing . Here is the format:

batch n (number) timeout name

n number of arrivals are in the batch. timeout sets an optional timer which triggers batches every timeout time units even if the batch size has not been fulfilled. If set to 0, it is disabled. name is the batch name.

For splitting a previously established batch you need to run separate as follows:



Define machine specifications in a production line. Each production line is structured in a block defined as follows:

machines machine 1 machine 2 machine n
amount amount 1 amount 2 amount n
passthroughrate 1 ( 0 – 1) rate 2 ( 0 – 1)rate n ( 0 – 1)
rejectstrajectory 1trajectory ntrajectory n
timedist. 1arg 1 arg2 dist. 2 arg 1 arg 2 dist. n arg 1 arg 2

Please note that for machine blocks all 5 elements should be defined in the order showed above. Otherwise, the system shows error.

reject trajectories show the path when a part if rejected. If you leave it empty, the part is identified with permanent leave and shows “Unfinished” in simulations. Dist1,2,… and corresponding arguments follow the same convention defined in the timeout section.

deployment Optional. You can define a deployment name to deploy your model. After deployment, you can use the deployed function in AXCEL.DES.SIMULATION function. Please note that the deployment name is case sensitive and should include alphabets, numbers, and non-repeating underline. You cannot use underline at the beginning or end of the filename. For instance “abc-123” or “a-b-c-123” are allowed but “abc–123”, “abc-123-“, “-abc-123” or “abc-$123” are not allowed. Depending on your subscription, you can view and restrict access to the deployed model through Axcel web application.

when you run the function, it validates the structure first. If all valid, the system shows the details of the trajectory in the console and a flow chart showing the steps in the trajectory. Here is an example: