Skip to content
Snippets Groups Projects
Select Git revision
  • 4d60b2e1ad9e839ed05df5c58956e8d95805e46c
  • main default protected
2 results

README.md

Blame
  • user avatar
    Leonardo Brenner authored
    4d60b2e1
    History

    Simuleau

    The Simuleau tool has been developed to provide an academic tool for modeling and simulating systems described by the Petri Nets (PN) formalism, with a specific focus on Batches Petri Nets (BPN) models.

    BPN models were initially used to model the Perrier water bottling manufacturing system, in which conveyors were modeled using batch places. Since then, BPN models have been developed and applied in various areas such as high-speed communications, traffic and crowd modeling.

    The first version of Simuleau was proposed in 1993 to implement the concepts of the "original" BPN class. In 1998, the concepts of sensors and control were integrated into the tool.

    Since 2016, the current version of Simuleau has been under development. The goal of this new version is to rewrite the old code using modern programming languages, integrate the various extensions of BPN that have been developed in recent years, and restructure the tool to make it easier to develop future extensions.

    Simuleau is a tool written in C++ that runs on Linux systems. It enables the modeling and simulation of systems described using Petri Net (PN) formalism, specifically focusing on different classes of Batch Petri Nets (BPN) models. The goal of Simuleau is to provide an academic tool for modeling and simulating BPNs.

    ##Interface

    To make the tool user-friendly, we have incorporated a textual menu interface that displays different options to the user. The main menu of Simuleau includes in option "1", which enables the user to compile the input file and verify the model using Simuleau.

        +--------------------------------------------------------+
        |          This is Simuleau 2016 - the BPN tool          |
        |  released on: Apr 30 2016 -- compiled on: Dec 16 2022  |
        +--------------------------------------------------------+
    
      1) Compile a BPN model             4) Inspect data structures
      2) Simulate a compiled BPN model   5) Dynamics facilities
      3) Preferences                     6) About this version
    
        0) Exit Simuleau (Option 0 always exits the current menu)

    The option "2" in the main menu leads the user to the simulation menu. In this menu, the user can select from different simulation algorithms. One of the options, option "2", simulates the system's evolution without control (autonomous). The remaining options simulate the system's evolution using external controlled events (option "1") or controlled methods that drive the system's evolution to a steady state.

                  ******* Simulating a BPN model *******
    
     1) With controlled events       3) On/Off control method
     2) Without conntrolled events   4) MF-On/Off control method
    

    Textual model description

    Another important development in this new version of Simuleau is the input model description. The objectives for this syntax are to have a human-readable input file and to use well-known tools like flex and bison to make the development easy and extendable.

    Here is a brief example of the input syntax used in Simuleau. The Petri net model is described in a textual file, which is structured in three blocks.

    The first block of the input file gives a name to the model and sets the length and time units.

    // double "/" for comments 
    model example; 
    length unity=km; 
    time unity=h; 

    The second block is dedicated to the model description. The keyword "network description" starts this block. The block is organized into two sub-parts. The first one describes the places of the model, while the second one is dedicated to the transitions. Different types of places (discrete, continuous, batch, and triangular) and transitions (discrete, continuous, batch) can be described. Each one has specific parameters, and some are optional.

    An example of a model description is given below.

    network description
      places
        place DPlace (discrete) 
          initial marking {2} // integer value 
          steady marking {1} // optional parameter
          output arc DTransition (2) // 2 is the weight of the arc
    
        place CPlace (continuous) 
          initial marking {2.3} // real value 
          steady marking {1.1} // optional parameter
          output arc CTransition // if no specified weight is 1
            
        place BPlace (batch)
          function (110, 200, 10) // speed, max density, and length 
          initial marking {(1.2, 150, 9.0)} 
          // list of initial batches 
          // {(length, density, position), ..}
          steady marking {} // optional parameter
          output arc BTransition
    
        place TBPlace (triangular)
          function (110, 200, 10, 3600) 
          // speed, max density, length, and max flow
          initial marking {(1.2, 150, 9.0, 35)} 
          // list of initial batches 
          // {(length, density, position, speed), ..}  
          steady marking {} // optional parameter
          output arc BTransition
    
      transitions
        transition DTransition (discrete) 
          timing (4) // real value
          output arc CPlace (3)
    
        transition CTransition (continuous) 
          flow (2.0) // real value    
          steady flow (2) // option parameter
          output arc BPlace
          output arc TBPlace
        
        transition BTransition (batch) 
          flow (200.0) // real value         
          steady flow (150) // option parameter

    The last block of the input file concerns controlled events. Following the formalism definitions, it is possible to change the maximum flow of a transition and the maximum speed of a place. These controlled events will be included in the scheduler, and the changes will be made at the specified time.

    // the section of controlled events are option 
    controlled events
      max_flow_change=(flow, BTransition, 3000, 1.15); 
      // event type, concerned transition, new flow, and time
      max_speed_change=(speed, TBPlace, 100, 0.4); 
      // event type, concerned place, new speed, and time

    Textual simulation output

    When a compiled model is simulated, an output file is generated. For each date that drives the system's evolution, Simuleau writes the current date, the state of each place and transition, and a list of all upcoming events with their respective dates. The upcoming events that will be processed are listed at the end of each step.

    The following listing gives an example of a step in the output file for the example above starting from the initial date.

    ================================================
    Current date : 0
    ================================================
    ================================================
    At the begin of the step
    ================================================
    Name:              DPlace
       Type:           Discrete
       Marks:          2
       Reserved Marks: 0
    Name:              CPlace
       Type:           Continuous
       Marks:          5
       Reserved Marks: 0
    Name:             BPlace
       Type:          Batch
       Density:       200
       Speed:         110
       Length:        10
       Batches:       1
                       (1.2, 150, 2)
    Name:              CTransition
        Type:          Continuous
        Current Flow:  2
    Name:              BTransition
        Type:          Batch
        Current Flow:  0
    
    Events
    Discrete transition is fired: 1
    Date 1	 node DTransition
    Continuous place becomes empty: 1
    Date 2.5	 node CPlace
    Batch becomes an output batch: 1
    Date 0.07272727273	 node BPlace
    
    Controlled Events
    Transition maximum flow changes: 1
    Date 1.15	 node BTransition	 name max_flow_change
    
    Next events to proceed
    Event date 0.07272727273	 in node BPlace	 type Batch becomes an output batch