MIT’s Climate Collaboratorium has posted java code that it used to wrap C-LEARN as a web service using the multicontext .dll. If you’re doing something similar, you may find the code useful, particularly the VensimHelper class. The liberal MIT license applies. However, be aware that you’ll need a license for the Vensim multicontext .dll to go with it.
Tag Archive for 'Vensim'
Vensim doesn’t have a function for the cumulative normal distribution, but it’s easy to implement via a macro. I used to use a polynomial cited in Numerical Recipes (error function, Ch. 6.2):
:MACRO: NCDF(x)
NCDF = 1-Complementary Normal CDF
~ dmnl
~ |
Complementary Normal CDF= ERFCy/2 ~ dmnl ~ |
ERFCy = IF THEN ELSE(y>=0,ans,2-ans) ~ dmnl ~ http://www.library.cornell.edu/nr/bookcpdf/c6-2.pdf |
y = x/sqrt(2) ~ dmnl ~ |
ans=t*exp(-z*z-1.26551+t*(1.00002+t*(0.374092+t*(0.0967842+ t*(-0.186288+t*(0.278868+t*(-1.1352+t*(1.48852+ t*(-0.822152+t*0.170873))))))))) ~ dmnl ~ |
t=1/(1+0.5*z) ~ dmnl ~ |
z = ABS(y) ~ dmnl ~ |
:END OF MACRO:
I recently discovered a better approximation here, from algorithm 26.2.17 in Abromowitz and Stegun, Handbook of Mathematical Functions:
:MACRO: NCDF2(x)
NCDF2 = IF THEN ELSE(x >= 0,
(1 - c * exp( -x * x / 2 ) * t *
( t *( t * ( t * ( t * b5 + b4 ) + b3 ) + b2 ) + b1 )), ( c * exp( -x * x / 2 ) * t *
( t *( t * ( t * ( t * b5 + b4 ) + b3 ) + b2 ) + b1 ))
)
~ dmnl
~ From http://www.sitmo.com/doc/Calculating_the_Cumulative_Normal_Distribution
Implements algorithm 26.2.17 from Abromowitz and Stegun, Handbook of Mathematical \
Functions. It has a maximum absolute error of 7.5e^-8.
http://www.math.sfu.ca/
|
c = 0.398942
~ dmnl
~ |
t = IF THEN ELSE( x >= 0, 1/(1+p*x), 1/(1-p*x))
~ dmnl
~ |
b5 = 1.33027
~ dmnl
~ |
b4 = -1.82126
~ dmnl
~ |
b3 = 1.78148
~ dmnl
~ |
b2 = -0.356564
~ dmnl
~ |
b1 = 0.319382
~ dmnl
~ |
p = 0.231642
~ dmnl
~ |
:END OF MACRO:
In advanced Vensim versions, paste the macro into the header of your model (View>As Text). Otherwise, you can implement the equations inside the macro directly in your model.
This is a little experimental model that I developed to investigate stochastic allocation of rental cars. The setup for the situation is described in this thread at the Vensim forum.
There’s a single fleet of rental cars distributed around 50 cities, connected by a random distance matrix (probably not physically realizable on a 2D manifold, but good enough for test purposes). In each city, customers arrive at random, rent a car if available, and return it locally or in another city. Along the way, the dawdle a bit, so returns are essentially a 2nd order delay of rentals: a combination of transit time and idle time.
The two interesting features here are:
- Proper use of Poisson arrivals within each time step, so that car flows are dimensionally consistent and preserve the integer constraint (no fractional cars)
- Use of Vensim’s ALLOC_P/MARKETP functions to constrain rentals when car availability is low. The usual approach, setting actual = MIN(desired, available/TIME STEP), doesn’t work because available is subscripted by 50 cities, while desired has 50 x 50 origin-destination pairs. Therefore the constrained allocation could result in fractional cars. The alternative approach is to set up a randomized first-come, first-served queue, so that any shortfall preserves the integer constraint.
The interesting experiment with this model is to lower the fleet until it becomes a constraint (at around 10,000 cars).
Documentation is sparse, but units balance.
Requires an advanced Vensim version (for arrays).
Replicated by: Tom Fiddaman
Citation: Hatlebakk, Magnus, & Moxnes, Erling (1992). Misperceptions and Mismanagement of the Greenhouse Effect? The Simulation Model . Report # CMR-92-A30009, December). Christian Michelsen Research.
Units: no
Format: Vensim
This is a climate-economy model, of about the same scale and vintage as Nordhaus’ original DICE model. It’s more interesting in some respects, because it includes path-dependent reversible and irreversible emissions reductions. As I recall, the original also had some stochastic elements, not active here. This version has no units; hopefully I can get an improved version online at some point.
Model Name: World Dynamics
Citation: Jay W. Forrester (1971) World Dynamics. Cambridge, MA: Wright-Allen Press
Source: Standard Vensim distribution
Units balance: Yes
Format: Vensim
Model Name: The Energy Transition and the Economy: A System Dynamics Approach
Citation: John D. Sterman, 1981. PhD Dissertation, MIT Sloan School of Management
Source: Replicated by Miguel Vukelic (a heroic effort)
Units balance: Yes
Format: Vensim (Contains data variables and thus requires an advanced version or the free Model Reader)
Illustrations of a ‘Normal’ (first order) Outflow, a Delay Outflow, and a Fixed Delay Outflow
LEARN_comparison_of_delay_n_and_delay_fixed_etc_RGD (Vensim .vmf)
Model Name: payments, penalties, and environmental ethic
Citation: Dudley, R. 2007. Payments, penalties, payouts, and environmental ethics: a system dynamics examination Sustainability: Science, Practice, & Policy 3(2):24-35. http://ejournal.nbii.org/archives/vol3iss2/0706-013.dudley.html.
Source: Richard G. Dudley
Copyright: Richard G. Dudley (2007)
License: Gnu GPL
Peer reviewed: Yes (probably when submitted for publication?)
Units balance: Yes
Format: Vensim
Target audience: People interested in the concept of payments for environmental services as a means of improving land use and conservation of natural resources.
Questions answered: How might land users’ environmental ethic be influenced by, and influence, payments for environmental services.
Software: Vensim
Recent Comments