Package: tcllib, Version: CVS HEAD

NAME

simulation::montecarlo -
Monte Carlo simulations

SYNOPSIS

package require Tcl  ? 8.4 ? 
package require simulation::montecarlo 0.1
package require simulation::random 
package require math::statistics 
::simulation::montecarlo::getOption keyword
::simulation::montecarlo::hasOption keyword
::simulation::montecarlo::setOption keyword value
::simulation::montecarlo::setTrialResult values
::simulation::montecarlo::setExpResult values
::simulation::montecarlo::getTrialResults 
::simulation::montecarlo::getExpResult 
::simulation::montecarlo::transposeData values
::simulation::montecarlo::integral2D ...
::simulation::montecarlo::singleExperiment args

DESCRIPTION

The technique of Monte Carlo simulations is basically simple:

You can think of a model of a network of computers, an ecosystem of some kind or in fact anything that can be quantitatively described and has some stochastic element in it.

The package simulation::montecarlo offers a basic framework for such a modelling technique:

#
# MC experiments:
# Determine the mean and median of a set of points and compare them
#
::simulation::montecarlo::singleExperiment -init {
    package require math::statistics

    set prng [::simulation::random::prng_Normal 0.0 1.0]
} -loop {
    set numbers {}
    for { set i 0 } { $i < [getOption samples] } { incr i } {
        lappend numbers [$prng]
    }
    set mean   [::math::statistics::mean $numbers]
    set median [::math::statistics::median $numbers] ;# ? Exists?
    setTrialResult [list $mean $median]
} -final {
    set result [getTrialResults]
    set means   {}
    set medians {}
    foreach r $result {
        foreach {m M} $r break
        lappend means   $m
        lappend medians $M
    }
    puts [getOption reportfile] "Correlation: [::math::statistics::corr $means $medians]"

} -trials 100 -samples 10 -verbose 1 -columns {Mean Median}

This example attemps to find out how well the median value and the mean value of a random set of numbers correlate. Sometimes a median value is a more robust characteristic than a mean value - especially if you have a statistical distribution with "fat" tails.

PROCEDURES

The package defines the following auxiliary procedures:
::simulation::montecarlo::getOption keyword
Get the value of an option given as part of the singeExperiment command.
TypeNameMode
stringkeyword
  Given keyword (without leading minus)

::simulation::montecarlo::hasOption keyword
Returns 1 if the option is available, 0 if not.
TypeNameMode
stringkeyword
  Given keyword (without leading minus)

::simulation::montecarlo::setOption keyword value
Set the value of the given option.
TypeNameMode
stringkeyword
  Given keyword (without leading minus)
stringvalue
  (New) value for the option

::simulation::montecarlo::setTrialResult values
Store the results of the trial for later analysis
TypeNameMode
listvalues
  List of values to be stored

::simulation::montecarlo::setExpResult values
Set the results of the entire experiment (typically used in the final phase).
TypeNameMode
listvalues
  List of values to be stored

::simulation::montecarlo::getTrialResults
Get the results of all individual trials for analysis (typically used in the final phase or after completion of the command).
::simulation::montecarlo::getExpResult
Get the results of the entire experiment (typically used in the final phase or even after completion of the singleExperiment command).
::simulation::montecarlo::transposeData values
Interchange columns and rows of a list of lists and return the result.
TypeNameMode
listvalues
  List of lists of values
There are two main procedures: integral2D and singleExperiment.
::simulation::montecarlo::integral2D ...
Integrate a function over a two-dimensional region using a Monte Carlo approach.
Arguments PM
::simulation::montecarlo::singleExperiment args
Iterate code over a number of trials and store the results. The iteration is gouverned by parameters given via a list of keyword-value pairs.
TypeNameMode
intn
  List of keyword-value pairs, all of which are available during the execution via the getOption command.
The singleExperiment command predefines the following options: Any other options can be used via the getOption procedure in the body.

TIPS

The procedure singleExperiment works by constructing a temporary procedure that does the actual work. It loops for the given number of trials.

As it constructs a temporary procedure, local variables defined at the start continue to exist in the loop.

KEYWORDS

math, montecarlo simulation, stochastic modelling