Scenario World Modeler and Simulator


Back to Software
Back to Home

Download and Execution

  1. Unzip this file on your local machine (around 25Mb).(ISCL)
  2. Dubble click iscl.exe included in the iscl directory.

Saving and loading models

  1. Build a new model: Select Toolbar>File>New Model
  2. Save: Select Toolbar>File>Save Model and define a model name.
  3. Load: Select Toolbar>File>Load Model and specify the name of the model to be loaded.

Modeling-Simulation-Evaluation Cycle


A business model on ISCL consists of elements classified into Entity, Attribute, Activity, Scene, and Specification. Users create these elements on the canvas of ISCL. Users can also move, inspect, and delete these elements on the canvas.

Relations between elements

ISCL visualizes relations between the abovementioned model elements. Relations 1 and 2 correspond to the definition of Scene, Relation 3 to the condition of Activity, and Relations 4-8 to the consequence of Activity. Relations 9-11 are manually defined by used on the canvas. These are visualized as horizontal connections between model elements, while the relations below are visualized as vertical relations between model elements.

Figure: Relation between model elements
Relations 9-11 are concerned with specifications and used for the reasoning about business models.

Figure: Relation between model elements concerning Specification


ISCL simulates the behavior of a business model realized by periodical and discrete execution of activities. During a single execution, the executed activity dynamically calculates the number of the iteration of the internal routine, which describes its consequence (e.g., creation and removal of entity instances). The number of iteration is assigned to self.size. (self.size=0 means that the activity does nothing at the moment). The figure below shows how self.size of three independent activities (production, use, and dispose) is defined and product instances are created (deleted).

Figure: Illustration of the simulation mechanism


Simulation results are evaluated in terms of the time series of the following three types of values (visualized as two-dimensional plots by selecting Toolbar>Post>Plot results).
  1. The number of executed activities (e.g., production of products) per time period.
  2. The number of entity instances included in Scene (e.g., the number of broken products).
  3. Statistical value of an attribute of the entities included in a specific scene (the average number of failures of products in a specific location).
The time series of the first two types are automatically collected. However, those of the third type should be defined before simulation. They are defined by selecting Toolbar>Pre>Parameters and Objectives. Furthermore, all time series are exported in a csv format, which is visualized and analyzed with Excel Toolbar>Post>Output as csv format.

Programming in Python on ISCL

ISCL is implemented on Python. To fully use ISCL, users need to type several lines of Python codes in order to define the behavior of Activity.

Reserved key words and standard functions often used on ISCL

Variables defined on ISCL

Functions defined on ISCL

These functions are used to describe Activity. ISCL evaluates the description of Activity and creates relations 3-8.

Remarks in programming in Python

Example 1: A simple production-use-disposal model Model is available here.

This example consists of three basic activities "produce", "use", and "dispose". Assumptions included in the model are as follows: Considering these assumptions, the model is developed as follows:
  1. Definition of model elements: As shown in Figure 1, the elements listed below are defined on the canvas.
    1. Entity: Product
    2. Activity: Produce, Use, Dispose
    3. Scene: All, Broken
    4. Attributes of Entity: ElapsedLifeTime(of Product) and PhysicalState (of Product)

    Figure 1: Model elements on the canvas

  2. Set up simulation parameters and objectives (evaluation criteria): Select Toolbar>Prep>Define Parameters and Objectives and define Time, Parameter, Objective on Parameter Editor and Objective Editor, respectively.
    1. Time=1000
    2. Parameters: FailureRate=0; MarketSize=100
    3. Objectives: AverageElapsedLifeTime (Average of ElapsedLifeTime of Product in Scene All)

    Figure 2: Definition of simulation parameters and objectives.

  3. Definition of Scene-All: Inspect Scene-All. Select Product. Then answer NO (this indicates that this scene includes all Product instances in the market). After that, Relation 1 is defined between Scene-All and Entity-Product.
  4. Definition of Scene-Broken: Inspect Scene-Broken. Select Product. Then answer Yes (this indicates that this scene selectively collect Product instances in terms of the value of attributes). In the next dialog, define PhysicalState=Broken. After that, Relation 2 is defined between Scene-All and Attribute-PhysicalState
  5. Definition of Activity-Produce: Inspect Activity-Produce. On Activity Editor, describe the following code on the top frame as shown below. This indicates that the number of production at a single simulation step is MarketSize-(the number of products in the market). The number of products in the market is obtained by the function self.count_scene(). On the bottom frame shown below, new Product instance is created, and the value of ElapsedLifeTime and PhysicalState is initialized.
  6. Definition of Activity-Use: Similar to Activity-Produce, Activity-Use is defined by inspecting the node on the canvas. The description on the top frame indicates that Activity-Use is applied to all products in the market. The description on the bottom frame indicates that
    1. Call a product instance in Scene-All.
    2. Increment ElapsedLifeTime of the called instance.
    3. If a randomly generated number (between 0 and 1) is smaller than FailureRate, change PhysicalState of the called instance from Healthy to Broken.
    if Random().uniform(0,1) < V['FailureRate']:
  7. Definition of Activity-Dispose: On the top window, define the number of iteration of the activity is the same as the number of broken products. On the bottom window, first call one of the broken product, then delete the called instance.

    Figure 3: The model on the canvas after defining Scene and Activity.

  8. Setting of the timing of Activity and Evaluation of objectives: Select Toolbar>Prep>Set Timing of. The popped window with several gauges is used to adjust the timing of the execution of all activities and the evaluation of all objectives. The timing is relative to the timing to calculate the number of the execution of Activity and size of Scene. In this example, if the timing of Activity-Dispose is before that of Activity-Use. The number of broken products (i.e., the number of instances in Scene-Broken) is always 0. It is because of that the number is collected after the calculation of the size of Scene. As shown in Figure 4, if the size of Scene-Broken (.00) is measured after executing Activity-Use (.59) and before executing Activity-Dispose (.02), the number of broken products is collected successfully.

    Figure 4: Defining the timing of the execution of activities and the evaluation of objectives.

  9. Executing Simulation: Select Toolbar>Run>Execute Simulation. Depending on the performance of the computer, ISCL finishes the simulation within 10 seconds.
  10. Observation of simulation results: Users can visualize the time series of the collected values by selecting Toolbar>Post>Plot Results. For instance, Figure 5 shows the average of life time of products Value-AcerageElapsedLifeTime(left), the number of broken products Scene-Broken(middle), and the number of production Activity-Produce (right). Users can export the results in csv format by selecting Toolbar>Post>Export results as csv (Comma Separate Value) format.

    Figure 5: Visualization of simulation results.

H. Komoto last edited on 25.05.2011.