AnyLogic
Expand
Font size

Creating custom resource types

You can create custom resource types. They have their own diagrams where you can add parameters, statecharts, functions, etc. You can select custom animation for the resource types that you create and easily make changes to those animation figures.

To define a custom resource type

  1. Drag the Resource Type from the Process Modeling Library palette into the graphical editor.

  2. The New agent dialog box will open up.
  3. On the first page of the wizard, specify Agent type name.

  4. Choose the animation for the resources of this type. If you want the resource units to be animated both in 2D and 3D, choose 3D and select 3D model from the list below, otherwise select 2D and choose from another (shorter) list. If no shapes satisfy your needs, just choose None. You can draw animation of the resource on its graphical diagram later.

  5. Upon choosing the animation, click Next to proceed to the next step.
  6. Specify the parameters for this resource type. Click <add new...> in the Parameters list to create new parameter. Having selected a parameter in this list, you can set its name, type, and initial value using the controls in the right panel. To remove a parameter from the list, click the button below.

  7. Click Finish.

The graphical diagram of the created resource type will open. You will see there the chosen resource unit animation (located in the axis origin) and the parameter(s) you have defined in the wizard.

Now you can specify this resource type in the flowchart blocks parameters, for instance, in ResourcePool properties:

Resource type properties

General

Name — The name of the resource type.

Since AnyLogic generates Java class for each resource type, you should follow Java naming guidelines and start the name with an uppercase letter.

Ignore — If selected, the resource type is excluded from the model.

Parameters preview

Parameters preview properties are available only when this resource type has any parameters. Here you can rearrange parameters of this resource. Resources of this type will list parameters in their property view in this well-defined order.

Agent actions

On startup — Perform resource initialization not here, but in the On new unit action property of the ResourcePool block that defines a set of resources of this type in your model.

On destroy — Define resource's actions to be executed upon destroying the resource unit not here, but in the On destroy unit action property of the ResourcePool block that defines a set of resources of this type in your model.

On arrival to target destination — This parameter is derived from agent type and is not applied to the movement defined with a Process Modeling Library flowchart.

On before step — This parameter is derived from agent type and is rarely used for resources. For details refer to the Agent article.

On step — This parameter is derived from agent type and is rarely used for resources. For details refer to the Agent article.

Agent in flowcharts

Use in flowcharts as — Here you choose the role for agents of this type in the flowcharts. To enable using these agents as resources in the blocks of the Process Modeling Library, leave the Resource Unit option selected. This way the agent of this type obtains resource-specific functions: resourcePool(), isIdle(), getUtilization(), etc.

On enter flowchart block — Here you can write the code to be executed when this resource enters the flowchart.

On exit flowchart block — Here you can write the code to be executed when this resource exits the flowchart.

On seize resource — Here you can write the code to be executed when this resource seizes another resource while being in the flowchart (it is rather rare case).

On release resource — Here you can write the code to be executed when this resource releases another resource while being in the flowchart (it is rather rare case).

Dimensions and movement

Initial speed — [Visible if Space type: Continuous or GIS] The speed of the resource.

Rotate animation towards movement — [Visible if Space type: Continuous or GIS] The heading of the resource.

Rotate vertically as well (along Z-axis) — If selected, the resource shape will be headed towards the target during the resource movement.

Space and network

The parameters in this section are derived from agent type and are rarely used for resources. For details refer to the Agent article.

Advanced Java

The parameters in this section are derived from agent type and are rarely used for resources. For details refer to the Agent article.

Advanced

The parameters in this section are derived from agent type and are rarely used for resources. For details refer to the Agent article.

Accessing parameters of custom resources

Since custom resources are derived from agent type, it is possible to enrich them with custom variables, parameters, functions, and other elements.

When using a custom resource in a process flow (for example, upon starting processing the resource via the Seize block), you may need to access these elements in the context of the resource being used. In this case, you cannot directly access the resource without specifying its type explicitly.

Let’s say we have a custom resource pool named Cashiers that consists of multiple resource instances: the Cashier agents. On the Cashier agent’s diagram, there is the isBusy Boolean parameter whose value is false by default — but we want to set it to true upon starting the resource’s utilization.

To do this, specify the following as the On seize unit action in the Actions section of the Seize block:

((Cashier)unit).isBusy = false;

We address the agent type — Cashier, rather than the resource pool Cashiers itself.

Use a similar approach to access other elements of a custom resource type to modify their values, execute functions, and so on.

To learn more about the parameters of custom agents, see the following article: Accessing parameters of custom agents in the flowchart block parameters.

How can we improve this article?