Table of Contents

Module: SimulationRT .\simpy1_5\SimPy\SimulationRT.py

SimulationRT 1.5 __version__ = $Revision: 1.9 $ $Date: 2004-12-04 16:09:19+01 $ kgm LICENSE: Copyright (C) 2002 Klaus G. Muller, Tony Vignaux mailto: kgmuller@xs4all.nl and Tony.Vignaux@vuw.ac.nz

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. END OF LICENSE

Implements SimPy Processes, resources, and the backbone simulation scheduling by coroutine calls. Based on generators (Python 2.2 and later)

Change history: 4/8/2003: - Experimental introduction of synchronization of simulation time and real time (idea of Geoff Jarrad of CSIRO -- thanks, Geoff!). * Changes made to class __Evlist, _nextev(), simulate()

Dec 11, 2003: - Updated to Simulation 1.4alpha API

  1. Dec 2003: Merged in Monitor and Histogram

  2. Feb 2004: Repaired bug in activeQ monitor of class Resource. Now actMon correctly records departures from activeQ.

  3. May 2004: Added erroneously omitted Histogram class.

  4. Sep 2004: Added SimEvents synchronization constructs

  5. Sep 2004: Added waituntil synchronization construct

  6. Sep 2004: Changed handling of real time -- now uses time.clock for Win32, and time.time for all other OS (works better on Linux, Unix).

  7. Dec 2004: SimPy version 1.5 Changes in this module: Repaired SimEvents bug re proc.eventsFired

Imported modules   
from SimPy.Lister import *
from __future__ import generators
import bisect
import sys
import time
import types
Functions   
_startWUStepping
_stopWUStepping
_test
_waitUntilFunc
activate
allEventNotices
holdfunc
initialize
now
passivatefunc
queueevfunc
reactivate
releasefunc
requestfunc
rtnow
scheduler
simulate
stopSimulation
testSimEvents
test_demo
test_interrupt
testwaituntil
waitevfunc
waituntilfunc
  _startWUStepping 
_startWUStepping ()

Application function to start stepping through simulation for waituntil construct.

  _stopWUStepping 
_stopWUStepping ()

Application function to stop stepping through simulation.

  _test 
_test ()

Gets called by simulate after every event, as long as there are processes waiting in condQ for a condition to be satisfied. Tests the conditions for all waiting processes. Where condition satisfied, reactivates that process immediately and removes it from queue.

begin waituntil functionality

  _waitUntilFunc 
_waitUntilFunc ( proc,  cond )

  activate 
activate (
        object,
        process,
        at="undefined",
        delay="undefined",
        prior=False,
        )

Application function to activate passive process.

Exceptions   
Simerror( "Fatal SimPy error: activating function which" + " is not a generator (contains no 'yield')" )
  allEventNotices 
allEventNotices ()

Returns string with eventlist as list of tuples (eventtime,action)

  holdfunc 
holdfunc ( a )

  initialize 
initialize ()

  now 
now ()

  passivatefunc 
passivatefunc ( a )

  queueevfunc 
queueevfunc ( a )

  reactivate 
reactivate (
        object,
        at="undefined",
        delay="undefined",
        prior=False,
        )

Application function to reactivate a process which is active, suspended or passive.

  releasefunc 
releasefunc ( a )

  requestfunc 
requestfunc ( a )

  rtnow 
rtnow ()

  scheduler 
scheduler ( till=0 )

Schedules Processes/semi-coroutines until time till. Deprecated since version 0.5.

  simulate 
simulate (
        until=0,
        real_time=False,
        rel_speed=1,
        )

Schedules Processes/semi-coroutines until time until

Exceptions   
Simerror( "Fatal SimPy error: Simulation not initialized" )
  stopSimulation 
stopSimulation ()

Application function to stop simulation run

  testSimEvents 
testSimEvents ()

  test_demo 
test_demo ()

Test/demo functions #############

  test_interrupt 
test_interrupt ()

  testwaituntil 
testwaituntil ()

Demo of waitUntil capability.

Scenario: Three workers require sets of tools to do their jobs. Tools are shared, scarce resources for which they compete.

  waitevfunc 
waitevfunc ( a )

  waituntilfunc 
waituntilfunc ( par )

Classes   

FIFO

Histogram

A histogram gathering and sampling class

Monitor

Monitored variables

PriorityQ

Queue is always ordered according to priority.

Process

Superclass of classes which may use generator functions

Queue

Resource

Models shared, limited capacity resources with queuing;

SimEvent

Supports one-shot signalling between processes. All processes waiting for an event to occur

Simerror

_Action

Structure (who=process owner, generator=process)

__Evlist

Defines event list and operations on it


Table of Contents

This document was automatically generated on Tue Dec 07 19:52:27 2004 by HappyDoc version 2.1