<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Making Connections &#187; STELLA &amp; iThink</title>
	<atom:link href="http://blog.iseesystems.com/wp-404-handler.php/category/stella-ithink/feed/?404;http://blog.iseesystems.com:80/category/stella-ithink/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.iseesystems.com</link>
	<description>isee systems blog</description>
	<lastBuildDate>Tue, 10 Aug 2010 22:07:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Modeling Bass Diffusion with Rivalry</title>
		<link>http://blog.iseesystems.com/stella-ithink/bass-diffusion-with-rivalry/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/bass-diffusion-with-rivalry/#disqus_thread</comments>
		<pubDate>Thu, 18 Feb 2010 14:00:10 +0000</pubDate>
		<dc:creator>Karim Chichakly</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[archetypes]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[Bass diffusion]]></category>
		<category><![CDATA[iThink/STELLA]]></category>
		<category><![CDATA[market dynamics]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=2608</guid>
		<description><![CDATA[This is the last of a three-part series on the Limits to Growth Archetype.  The first part can be accessed here and the second part here.
Last time, we explored the effects of Type 1 rivalry (rivalry between different companies in a developing market) on the Bass diffusion model by replicating the model structure.  This part [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is the last of a three-part series on the Limits to Growth Archetype.  The first part can be accessed <a href="http://blog.iseesystems.com/stella-ithink/limits-to-growth/">here</a> and the second part <a href="http://blog.iseesystems.com/stella-ithink/bass-diffusion-model/">here</a>.</em></p>
<p>Last time, we explored the effects of Type 1 rivalry (rivalry between different companies in a developing market) on the Bass diffusion model by replicating the model structure.  This part will generalize this structure and add Type 2 rivalry (customers switching between brands).</p>
<p><strong>Bass Diffusion with Type 1 Rivalry</strong></p>
<p>To model the general case of an emerging market with multiple competitors, we can return to the original single company case and use arrays to add additional companies.  In this case, everything except <em>Potential Customers</em> needs to be arrayed, as shown below (and available by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2010/02/developing-with-type-1-rivalry.itm">here</a>).</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb.png" border="0" alt="image" width="350" height="281" /></p>
<p>For this example, three companies will be competing for the pool of <em>Potential Customers</em>.  Each array has one-dimension, named <em>Company</em>, and that dimension has three elements, named <em>A</em>, <em>B</em>, and <em>C</em>, one for each company.  Although each different parameter, <em>wom multiplier</em>, <em>fraction gained per $K</em>, and <em>marketing spend in $K</em>, can be separately specified for each company, all three companies use the same values initially.  All three companies, however, do not enter the market at the same time.  Company <em>A</em> enters the market at the start of the simulation, company <em>B</em> enters six months later, and company <em>C</em> enters six months after that.</p>
<p>Recall that the marketing spend is the trigger for a company to start gaining customers.  Thus, the staggered market entrance can be modeled with the following equation for <em>marketing spend in $K</em>:</p>
<p style="padding-left: 30px;">STEP(10, STARTTIME + (ARRAYIDX() &#8211; 1)*6)</p>
<p>The <em>STEP</em> function is used to start the marketing spend for each company at the desired time.  The <em>ARRAYIDX</em> function returns the integer index of the array element, so it will be 1 for company <em>A</em>, 2 for company <em>B</em>, and 3 for company <em>C</em>.  Thus, the offsets from the start of the simulation for the launch of each company’s marketing campaign are 0, 6, and 12, respectively.</p>
<p>This leads to the following behavior:</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb1.png" border="0" alt="image" width="473" height="263" /></p>
<p>Note that under these circumstances, the first company to enter the market retains a leadership position.  However, companies <em>B</em> and <em>C</em> could anticipate this and market more strongly.  What if company <em>B</em> spent 50% more and company <em>C</em> spent 100% more than company <em>A</em> on marketing that is similarly effective?  This could be modeling by once again changing the equation for <em>marketing spend in $K</em>, this time to:</p>
<p style="padding-left: 30px;">STEP(10 + (ARRAYIDX() &#8211; 1)*5, STARTTIME + (ARRAYIDX() &#8211; 1)*6)</p>
<p><span id="more-2608"></span>The effect in this case is quite different.  All three companies end up with approximately equal market shares.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb2.png" border="0" alt="image" width="473" height="263" /></p>
<p><strong>Bass Diffusion with Type 1 and Type 2 Rivalry</strong></p>
<p>Once a market is established, companies will also make an effort to win competitor’s customers away.  A previous <a href="http://blog.iseesystems.com/modeling-tips/array-methods-4/">post</a> showed how to model switching between brands using arrays.  Adding that structure to this model gives a model (available by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2010/02/developing-with-types-1-2-rivalry.itm">here</a>) that implements both type 1 and type 2 rivalry.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb3.png" border="0" alt="image" width="472" height="306" /></p>
<p>The specific mechanism that convinces customers to switch brands is not explicitly modeled here so that the structure matches that in the earlier post.  Instead, this model uses constant switching rates; the earliest entrant, company <em>A</em> is given the most favorable values.  However, to make the model more dynamic and also useful, there should be factors that influence the relative attractiveness of the two brands, for example, marketing spend, product quality, product features, and customer service.</p>
<p>Giving an advantage to the early entrant to the market has the expected effect of boosting their customer base at the expense of the others.  This another example of <a href="http://blog.iseesystems.com/stella-ithink/success-to-the-successful/">Success to the Successful</a>.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb4.png" border="0" alt="image" width="473" height="263" /></p>
<p>Note the scale of this graph had to be changed relative to the earlier graphs to show all of company <em>A’</em>s customers.  The effect of the customer switching is so strong that even increasing marketing for company’s <em>B</em> and <em>C</em> does not change the end result.  Of course, the switching factors in this model are constant and increased marketing should indeed change them.</p>
<p>This does, however, show that it is important to intervene in the correct place to reach your desired outcome.  Once the market is mature, the dynamics are dominated by the switching effects, not the process of gaining customers.  Thus, efforts to change market share by changing the rate of gaining customers are ineffective.  Energy should instead be focused on reducing the number of customers who switch to other brands and increasing the number of customers gained from other brands.</p>
<p>This model does not model the decline of the market, through customer loss, since we are mostly concerned with growth and maturation.  If desired, the loss would be modeled with an outflow from <em>Customers</em> as shown in the earlier brand switching post.</p>
<p>Finally, this model assumes that <em>Customers</em> belong to one company alone, i.e., no one uses the product from more than one company at one time.  Sharing customers is known as type 3 rivalry and is beyond the scope of this post.</p>
<p><strong>A Note About Revenues</strong></p>
<p>Gaining customers is, of course, not the entire story.  The purpose of gaining customers is to create revenue for your business.  There are two opportunities to generate revenue in this model:</p>
<ol>
<li>From your existing customer base.  This <em>stock</em>-driven revenue stream is typical for manufacturers of non-durable goods such as bleach and razors, or for subscription-based or service businesses, such as magazines, cable TV, or beauty salons.  If your customer base is large, your revenues will be high.  The Bass diffusion model shows a growing customer base and therefore a growing revenue stream (see curve 1 below).</li>
<li>When a person is converted from a <em>Potential Customer</em> to a <em>Customer</em> or a customer switches from one brand to another.  This <em>flow</em>-driven revenue stream is the only source of revenue for manufacturers of durable goods, such as cars, computers, and refrigerators.  However, it often also applies to software companies.  Since the flow rate determines the revenue stream, if the rate at which you gain customers is large, your revenue will be high.  Note, however, that the Bass diffusion model shows us this rate falls sharply as the market matures, as the number of <em>Customers</em> saturates (see curve 2 below).  To keep revenues high in a mature market for this kind of business, it is necessary to entice customers away from competitors, build in product obsolescence (so your customers have to buy again), or enter new markets.</li>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb5.png" border="0" alt="image" width="455" height="252" /></p>
</ol>
<p><strong>A Final Aside on the Bass Diffusion Model</strong></p>
<p>In his excellent book <span style="text-decoration: underline;">Strategic Modelling and Business Dynamics</span>, John Morecroft explains (on page 173) that the effect of marketing in the Bass diffusion model has a stronger purpose than just to start the ball rolling.  Without the marketing effect, market growth through word-of-mouth alone is much slower than any business would desire, or typically experience.  The following graph compares the growth with and without the marketing effect (<em>Customers</em> is initialized to one in both cases).</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb6.png" border="0" alt="image" width="455" height="252" /></p>
<p>Without the marketing expenditure, the conversion of <em>Potential Customers</em> to <em>Customers</em> does not peak until the month 91, whereas, with marketing expenditure, it peaks in month 50, in almost half the time.  This is also reflected in the time it takes the market to mature:</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/02/image_thumb7.png" border="0" alt="image" width="455" height="252" /></p>
<div id="_mcePaste" style="position: absolute; width: 1px; height: 1px; overflow: hidden; top: 1286px; left: -10000px;">available by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2010/02/developing-with-types-1-2-rivalry.itm">here</a>)</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/bass-diffusion-with-rivalry/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Developing a Market Using the Bass Diffusion Model</title>
		<link>http://blog.iseesystems.com/stella-ithink/bass-diffusion-model/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/bass-diffusion-model/#disqus_thread</comments>
		<pubDate>Thu, 21 Jan 2010 17:08:21 +0000</pubDate>
		<dc:creator>Karim Chichakly</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[archetypes]]></category>
		<category><![CDATA[Bass diffusion]]></category>
		<category><![CDATA[iThink/STELLA]]></category>
		<category><![CDATA[market dynamics]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=2495</guid>
		<description><![CDATA[This is part two of a three part series on Limits to Growth.  Part one can be accessed here and part three can be accessed here.

In part one of this series, I explained the Limits to Growth archetype and gave examples in epidemiology and ecology. This part introduces the Bass diffusion model, an effective way [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is part two of a three part series on Limits to Growth.  Part one can be accessed <a href="http://blog.iseesystems.com/stella-ithink/limits-to-growth/">here</a> and part three can be accessed <a href="http://blog.iseesystems.com/stella-ithink/bass-diffusion-with-rivalry/">here</a>.<br />
</em></p>
<p>In part one of this series, I explained the Limits to Growth archetype and gave examples in epidemiology and ecology. This part introduces the Bass diffusion model, an effective way to implement the capture of customers in a developing market. This is also used to implement what Kim Warren calls Type 1 rivalry in his book <span style="text-decoration: underline;">Strategy Management Dynamics</span>, that is, rivalry between multiple companies in an emerging market.</p>
<p><strong>The Bass Diffusion Model</strong></p>
<p>The Bass diffusion model is very similar to the <a href="http://blog.iseesystems.com/stella-ithink/limits-to-growth/#more-2385">SIR model</a> shown in part one. Since we do not usually track customers who have “recovered” from using our product, the model only has two stocks, corresponding loosely to the <em>Susceptible</em> and <em>Infected</em> stocks. New customers are acquired through contact with existing customers, just as an infection spreads, but in this context this is called <em>word of mouth</em> (<em>wom</em>). This is, however, not sufficient to spread the news of a good product, so the Bass diffusion model also includes a constant rate of customer acquisition through advertising. This is shown below (and can be downloaded by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2010/01/developing.itm">here</a>).</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb.png" border="0" alt="image" width="289" height="235" /></p>
<p>The feedback loops <em>B1</em> and <em>R</em> are the same as the balancing and reinforcing loops between <em>Susceptible</em> and <em>Infected</em> in the SIR model. Instead of an infection rate, there is a <em>wom multiplier</em> which is the product of the Bass diffusion model’s contact rate and the adoption rate. If you are examining policies related to these variables, it would be important to separate them out in the model.</p>
<p>The additional feedback loop, <em>B2</em>, starts the ball rolling and helps a steady stream of customers come in the door. If you examine the SIR model closely, you will see that the initial value of <em>Infected</em> is one. If no one is infected, the disease cannot spread. Likewise, if no one is a customer, there is no one to tell others how great the product is so they want to become customers also. By advertising, awareness of the product is created in the market and some people will become customers without having encountered other customers who are happy with the product.</p>
<p>The behavior of this model is shown below. Note it is not different in character from the SIR model or the simple population model.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb1.png" border="0" alt="image" width="455" height="252" /><span id="more-2495"></span></p>
<p><strong>Implicit Type 1 Rivalry</strong></p>
<p>In the face of competition for an emerging market, multiple companies will be fighting for these same potential customers. Ostensibly, they all follow the Bass diffusion model. However, if the exact dynamics of the competition is not important to the purpose of the model, it is possible to simply model the reverse pressure the competition is placing on your company’s growth.</p>
<p><br class="spacer_" /></p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb2.png" border="0" alt="image" width="397" height="289" /></p>
<p>In this version of the model (which can be downloaded by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2010/01/developing-with-competition.itm">here</a>), both the <em>wom multiplier</em> and the marketing effectiveness (<em>fraction gained per $K</em>) are restricted by competitive pressure. The variable <em>competitive pressure</em> is an S-shaped graphical function meant to mimic the behavior of competitors in a developing market. In the beginning, there is no competition. As the market grows, more and more competitors enter the market until it becomes saturated. It is a simple time-series function, as shown below, but could instead be tied to the success of your company.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="clip_image002" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/clip_image002_thumb.jpg" border="0" alt="clip_image002" width="311" height="264" /></p>
<p>The variable <em>competition</em> is just 1 – <em>competitive_pressure</em>, i.e., it is a multiplier that reduces the effectiveness of wom and marketing spending as competitive pressure grows. Finally, a switch called <em>competition switch</em> has been added. When this is set to zero (the default), the model behaves as it did previously, i.e., without competition. When it is set to one, competition is active and the behavior changes to that shown below.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb3.png" border="0" alt="image" width="456" height="253" /></p>
<p><strong>Explicit Type 1 Rivalry</strong></p>
<p>Finally, another competitor can be explicitly modeled by replicating the structure (or by using arrays). This model is shown below (and can be downloaded by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2010/01/developing-with-rivalry.itm">here</a>).</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb4.png" border="0" alt="image" width="257" height="436" /></p>
<p>In this structure, each competitor can be given their own explicit parameters, which can also vary as the simulation progresses based on market share or product attractiveness. When the rival spends half as much on marketing as your company does, your company wins more market share:</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb5.png" border="0" alt="image" width="455" height="252" /></p>
<p>In this simulation, the rival enters the market at the same time as your company. This is usually not the case in the real world. If all parameters are the same for both companies, but the rival company enters the market one year later, the end result is identical to that shown above. The transient response, however, is necessarily different:</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2010/01/image_thumb6.png" border="0" alt="image" width="455" height="252" /></p>
<p>This model does not include the process of developing a market for a product nor does it model persons leaving the market. I.e., it is assumed that the total market size is predefined and never changes. For a completely new product, the potential market will likely grow, so we may want to include this effect. However, when modeling a developing market, it is unlikely we are interested in the shrinking of the market that occurs after maturation.</p>
<p>The model also does not model losing customers to competitors (Type 2 rivalry) or customers who use products from multiple competitors (Type 3 rivalry). An example of modeling Type 2 rivalry is shown in a previous <a href="http://blog.iseesystems.com/modeling-tips/array-methods-3/">post</a>.</p>
<p>My next post in this series will expand the above model to include Type 2 rivalry and to use arrays.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/bass-diffusion-model/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Limits to Growth</title>
		<link>http://blog.iseesystems.com/stella-ithink/limits-to-growth/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/limits-to-growth/#disqus_thread</comments>
		<pubDate>Thu, 03 Dec 2009 15:00:55 +0000</pubDate>
		<dc:creator>Karim Chichakly</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[archetypes]]></category>
		<category><![CDATA[Causal Loop]]></category>
		<category><![CDATA[CLD]]></category>
		<category><![CDATA[h1n1]]></category>
		<category><![CDATA[population dynamics]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=2385</guid>
		<description><![CDATA[This is the first of a three-part series on the Limits to Growth Archetype.  The second part can be accessed here and the third part  here.
The Limits to Growth Systems Archetype, also known as Limits to Success, combines growth with an exogenous or endogenous limit.  This Systems Archetype was formally identified in Appendix 2 [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is the first of a three-part series on the Limits to Growth Archetype.  The second part can be accessed </em><a href="../stella-ithink/limits-to-growth/"><em><a href="../stella-ithink/bass-diffusion-model/">here</a></em></a><em><a href="../stella-ithink/limits-to-growth/"></a> and the third part </em><a href="../stella-ithink/limits-to-growth/"><em> </em></a><em></em><em><a href="http://blog.iseesystems.com/stella-ithink/bass-diffusion-with-rivalry/">here</a></em><em><a href="../stella-ithink/bass-diffusion-model/"></a>.</em></p>
<p>The Limits to Growth Systems Archetype, also known as Limits to Success, combines growth with an exogenous or endogenous limit.  This Systems Archetype was formally identified in Appendix 2 of <span style="text-decoration: underline;">The Fifth Discipline</span> by Peter Senge (1990), but made its first prominent appearance in <span style="text-decoration: underline;">World Dynamics</span> by Jay Forrester (1971) and then <span style="text-decoration: underline;">The Limits to Growth</span> by Meadows, Meadows, Randers, and Behrens (1972).  The Causal Loop Diagram (CLD) is shown below.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb8.png" border="0" alt="image" width="401" height="171" /></p>
<p>Real growth processes have inherent limits to growth.  Identifying these limits can help avoid problems in the future, whether the problem is overpopulation, increasing demand for a product that cannot be met, or growing a business in a mature market.  When growth is desired, but limited, it is always better to find ways to increase the limit before pushing for more growth.  Excessive growth in the face of a limit often leads to collapse.  Driving the system to the point of collapse can erode the ability to continue after the collapse, for example, by reducing the production capability of a piece of farmland or destroying the reputation of a company.</p>
<p>Classic examples of limits to growth include:</p>
<ul>
<li>The collapse of the deer population on the Kaibab plateau and on St. Matthew Island due to overpopulation and the attendant overgrazing of their habitat </li>
<li>The overshoot and collapse of the human population on Easter Island </li>
<li>Overgrazing in the Sahel region of Africa by cattle herders </li>
<li>Overfishing of the oceans by fishermen </li>
<li>The collapse of People Express due to sharp customer growth combined with slow personnel growth </li>
<li>The sharp exodus of America Online subscribers after an intense marketing campaign increased the number of subscribers far beyond their capacity </li>
<li>The contraction of the world economy in 2008 due to limiting oil supplies </li>
<li>The productivity of staff deteriorating as a company grows, due to increased interactions and reporting overhead </li>
<li>Business growth limited by the size of the potential market </li>
<li>Yeast cells in the fermentation process, who suffer from both the loss of exogenously supplied sugar and the increase of endogenously produced pollution </li>
</ul>
<p><span id="more-2385"></span></p>
<p><strong>Exploring Limits to Growth with the SIR Model</strong></p>
<p>The SIR (Susceptible-Infected-Recovered) model, also known as the Kermack-McKendrick model, is used to predict the spread of an infectious disease.  The disease is ultimately limited by the number of potential hosts.</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb1.png" border="0" alt="image" width="435" height="163" /></p>
<p>In this model (available by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2009/12/SIR.stm">here</a>), the <em>Susceptible</em> population becomes infected based on their rate of contact with an <em>Infected</em> population and the probability of being infected (<em>infection rate</em> combines these parameters).  After some amount of time (1/<em>recovery rate</em>), the disease runs its course and people either recover or die, moving into the <em>Recovered</em> population.</p>
<p>The infection feeds on susceptible people.  As the number of susceptible people falls, the number who can become infected also falls.  Since infected people eventually recover, the number of infected people will ultimately fall.  This behavior is reflected in the graph below.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0pt;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb2.png" border="0" alt="image" width="458" height="254" /></p>
<p>The sharp increase in <em>Infected</em>, followed by a dramatic drop is known as <em>overshoot and collapse</em>.  It is a characteristic behavior of the Limits to Growth Archetype.  The stock of <em>Recovered</em> people is also limited – by the total population.  It exhibits a different characteristic behavior of Limits to Growth:  <em>S-shaped growth</em>, so called because the graph of this growth pattern looks like the letter <em>S</em>.  This is also known as <em>logistic growth</em>.  In the beginning, growth is very rapid, but as the limit is approached, growth slows and then stops.  In feedback terms (refer back to the CLD), the rapid growth on the left side of the <em>S</em> occurs because the reinforcing loop dominates while the right side slowdown occurs because the balancing loop dominates.</p>
<p>There are two separate limits to growth:  one on the sustainable level of the <em>condition of interest</em> and one on its rate of growth.  The former is defined by a system’s <em>carrying capacity</em> (named <em>limiting condition</em> in the CLD).  As Khalid Saeed, Professor of Social Science and Policy Studies at <a href="http://www.wpi.edu/academics/Depts/SSPS/People/kqs.html" target="_blank">Worcestor Polytechnic Institute</a>, recently reminded me, the carrying capacity of a system is always a <em>flow</em>.  Any system that requires something, either energy or mass, to persist cannot exist beyond the level at which that something can be provided.  The second limit, that on the rate of growth, is defined by the system <em>slack</em>, which is always a <em>stock</em>.</p>
<p>In the SIR model, the infectious disease feeds off of the susceptible people.  The stock of <em>Susceptible</em> people is therefore the slack in the system.  The growth of the disease is limited by the contents of this stock.  However, the carrying capacity of the system is zero, as there is no inflow to <em>Susceptible</em> to provide an endless supply of victims for the disease.  The net result is that eventually, and after a sharp rate of growth, the number of infected people will also drop to zero.</p>
<p>In either a closed or a quarantined community, this may be true.  However, ease of travel creates an inflow to <em>Susceptible</em>, i.e., a carrying capacity, and thus the disease can persist.  The graph below shows what happens when an inflow is added <em>Susceptible</em> and set to 10 people per day (10% of the initial population).</p>
<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0pt;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb3.png" border="0" alt="image" width="459" height="254" /></p>
<p>Rather than going to zero, both <em>Susceptible</em> and <em>Infected</em> wind up at non-zero steady-state values that reflect the new carrying capacity (10).  Note in particular that this value is <em>not</em> 10 for either stock; it is about 50.  Note also that the <em>Infected</em> peak has risen from roughly 17 to 90 due to the inflow of susceptible people.</p>
<p>For more information about the spread of infectious disease, read our blog post on <a href="http://blog.iseesystems.com/stella-ithink/modeling-h1n1-flu-outbreak/">Modeling H1N1 Flu Outbreak</a>.</p>
<p><strong>Exploring Limits to Growth in Population Dynamics</strong></p>
<p>Another example occurs in population dynamics.  The simple example shown below demonstrates the impact of a limit (click <a href="http://blog.iseesystems.com/wp-content/uploads/2009/12/population-simple.stm">here</a> to download this model).</p>
<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0pt;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb4.png" border="0" alt="image" width="375" height="203" /></p>
<p>The food available is a simple linear relationship that reduces available food as population increases.  The death rate increases as the available food per member of the population falls.  The behavior of this model is shown below.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0pt;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb5.png" border="0" alt="image" width="456" height="253" /></p>
<p>While this shows the desired behavior, an exogenous limit (food available) enforced as the population grows, this model has no slack and no explicit carrying capacity.  The lack of an explicit stock to model the slack in the system will result in an incorrect <em>transient response</em> (i.e., the system&#8217;s response to a change in its variables) when something happens that might require that slack, for example, a drought or a surge in the population due to immigration.</p>
<p>A more accurate and useful, though more complex, model appears below (and is available by clicking <a href="http://blog.iseesystems.com/wp-content/uploads/2009/12/population-replenish.stm">here</a>).</p>
<p><img style="display: block; margin-left: auto; margin-right: auto; border: 0pt;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb6.png" border="0" alt="image" width="459" height="316" /></p>
<p>Both the carrying capacity (<em>replenishment</em>) and the slack (<em>Food Available</em>) are explicitly modeled.  The behavior is quite different:</p>
<p><img style="border: 0pt none; display: block; margin-left: auto; margin-right: auto;" title="image" src="http://blog.iseesystems.com/wp-content/uploads/2009/12/image_thumb7.png" border="0" alt="image" width="459" height="254" /></p>
<p><br class="spacer_" /></p>
<p>There is now a proper transient response to an increase in the birth rate.  The slack, <em>Food Available</em>, fuels growth in the <em>Population</em> until the slack is exhausted (relative to the carrying capacity), at which point the population collapses to its approximate equilibrium value – the value supported by the carrying capacity.</p>
<p>Next time, I will explore limits to growth in the context of business development models.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/limits-to-growth/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Modeling H1N1 Flu Outbreak</title>
		<link>http://blog.iseesystems.com/stella-ithink/modeling-h1n1-flu-outbreak/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/modeling-h1n1-flu-outbreak/#disqus_thread</comments>
		<pubDate>Fri, 13 Nov 2009 21:37:05 +0000</pubDate>
		<dc:creator>Jeremy Merritt</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[epidemic]]></category>
		<category><![CDATA[flu]]></category>
		<category><![CDATA[h1n1]]></category>
		<category><![CDATA[infection]]></category>
		<category><![CDATA[netsim]]></category>
		<category><![CDATA[seir]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=2328</guid>
		<description><![CDATA[ It seems like everyone has been talking about H1N1 (swine flu) the last couple of months.  If you have children in school, then you are probably very aware of how fast the virus is spreading.  Schools are the perfect environment for a virus to spread.  To help understand why, we created a STELLA model [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 0px 0px 0px 10px; display: inline; border: 0px;" title="H1N1 Virus" src="http://blog.iseesystems.com/wp-content/uploads/2009/11/purpleh1n1.jpg" border="0" alt="H1N1 Virus" width="206" height="242" align="right" /> It seems like <em>everyone</em> has been talking about H1N1 (swine flu) the last couple of months.  If you have children in school, then you are probably very aware of how fast the virus is spreading.  Schools are the perfect environment for a virus to spread.  To help understand why, we created a STELLA model of a high school that introduces the H1N1 virus.  You can experiment with vaccination and “stay at home” policies to limit the spread of the flu.</p>
<p>The STELLA model is based on the <a href="http://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology" target="_blank">SEIR compartmental model</a> that epidemiologists use to model the progress of an epidemic.  SEIR models divide the population into compartments: Susceptible, Exposed, Infected and Recovered.  These ‘compartments’ translate nicely into stocks within the STELLA model where we can observe the dynamics of the spreading virus.</p>
<p>While developing the model we decided to explore some strategies that schools are pursuing to limit the virus’ spread.  We wanted to know if the “stay at home” (when you are sick) policy would be effective in the case where vaccines are not available quickly enough, (which as of November 2009 is the case).</p>
<p>Take a look:</p>
<p>
<object width='600' height='542'><param name='movie' value='http://forio.com/simulate/resources/swf/sim-frame.swf?userPath=jeremyx&#038;simPath=h1n1-embedded-version&#038;simID=jeremyx/h1n1_embedded_version&#038;netSimColor=0xC1E0FF&#038;serviceRoot=http://forio.com/service2/&#038;initialPage=Page 1&#038;displayForioBadge=false&#038;displayiseeBadge=false&#038;displayShareThisNetSim=false&#038;swfURL=null&#038;embed=true'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='http://forio.com/simulate/resources/swf/sim-frame.swf?userPath=jeremyx&#038;simPath=h1n1-embedded-version&#038;simID=jeremyx/h1n1_embedded_version&#038;netSimColor=0xC1E0FF&#038;serviceRoot=http://forio.com/service2/&#038;initialPage=Page 1&#038;displayForioBadge=false&#038;displayiseeBadge=false&#038;displayShareThisNetSim=false&#038;swfURL=null&#038;embed=true' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='600' height='542'></embed></object></object>
</p>
<p>Click the ‘Simulate’ link on the home screen above and try some different scenarios.  Be sure to click the ‘How does this simulation work?’ link for a guided tour of the model behind the simulation.</p>
<p>As you experiment with the simulation, consider the following:</p>
<ul>
<li>How does varying &#8220;% vaccinated&#8221; effect the number of sick students?</li>
<li>How many days do infected students need to stay home to have a significant impact on the spread of the virus within the school? </li>
<li>What impact does the &#8220;% effectiveness of vaccine&#8221; have on the flu outbreak? </li>
<li>What combination of decisions results in the lowest number of sick students?  Are these decisions realistic in a real-world setting? </li>
</ul>
<p><em>Note: Each time you dial in parameters and press run, a new plot will be added to the graph so you can compare the effectiveness of the different decisions.  Clicking on the blue reset button will clear the graph and reset all Knobs to their default value.</em></p>
<p>If you think this simple model is useful, feel free to share it or embed it on your own website; just click the sharing icon in the lower right corner.  If you want to dig deeper into the STELLA model you can download the model by <a href="http://blog.iseesystems.com/wp-content/uploads/2009/11/H1N1_Embedded.zip">clicking here</a>.  You can open the model with <a href="http://www.iseesystems.com/softwares/Education/StellaSoftware.aspx" target="_blank">STELLA 9.1</a>, or the free <a href="http://www.iseesystems.com/softwares/player/iseeplayer.aspx" target="_blank">isee Player</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/modeling-h1n1-flu-outbreak/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Success to the Successful</title>
		<link>http://blog.iseesystems.com/stella-ithink/success-to-the-successful/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/success-to-the-successful/#disqus_thread</comments>
		<pubDate>Wed, 15 Jul 2009 13:21:41 +0000</pubDate>
		<dc:creator>Joanne Egner</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[archetypes]]></category>
		<category><![CDATA[Causal Loop]]></category>
		<category><![CDATA[CLD]]></category>
		<category><![CDATA[modules]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=1883</guid>
		<description><![CDATA[My first introduction to the Systems Archetypes was years ago when I read Peter Senge&#8217;s book, The Fifth Discipline.  I remember relating these classic Systems Thinking stories to my own experience in business and thinking how useful it was to understand some of the problems we faced and why solutions didn&#8217;t always work out as intended.
What I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://books.google.com/books?id=uPAMkK118OcC&amp;lpg=PP1&amp;dq=the%20fifth%20discipline&amp;pg=PA396" target="_blank"><img class="alignright size-full wp-image-1886" style="margin-left: 10px; margin-right: 40px;" title="Fifth Discipline" src="http://blog.iseesystems.com/wp-content/uploads/2009/07/fifth_discipline.jpg" alt="fifth_discipline" width="88" height="128" /></a>My first introduction to the Systems Archetypes was years ago when I read Peter Senge&#8217;s book, <em>The Fifth Discipline</em>.  I remember relating these classic Systems Thinking stories to my own experience in business and thinking how useful it was to understand some of the problems we faced and why solutions didn&#8217;t always work out as intended.</p>
<p>What I&#8217;ve come to appreciate since then is how the characteristic themes of the Systems Archetypes transform across all sorts of different fields and situations — even our personal lives!</p>
<p>Take, for example, the basic story line of the &#8220;Success to the Successful&#8221; archetype:</p>
<blockquote><p>When given the choice, we invest our resources where we expect them to deliver the best results.  By giving more resources to one option over another, we create a self-fulfilling prophesy whereby the favored option is perpetually more successful.</p>
</blockquote>
<p>The story of the Success to the Successful archetype applies to all sorts of  situations leading to well-known patterns of behavior:</p>
<ul>
<li>rich getting richer and poor getting poorer </li>
<li>winners being rewarded with the means to win again</li>
<li>popular brands attracting more popularity</li>
<li>one species driving another to extinction</li>
<li><a href="http://blog.iseesystems.com/stella-ithink/arrayrank/">top salespeople being paid higher commissions</a></li>
</ul>
<p><strong>Exploring the Model Structure<br />
 </strong></p>
<p>We recently published a model of the <a title="Success to the Successful" href="http://forio.com/service/netsims/netsim/success/index.html" target="_blank">Success to the Successful</a> archetype to the web using isee NetSim. Exploring the model is a great way to understand the underlying structure of the <a href="http://forio.com/service/netsims/netsim/success/index.html" target="_blank"><img class="size-medium wp-image-1960 alignright" title="Success to the Successful" src="http://blog.iseesystems.com/wp-content/uploads/2009/07/successtosuccessful1-280x117.png" alt="Causal Loop Diagram" width="280" height="117" /></a>system and think about ways to avoid the problems it creates.</p>
<p>You&#8217;ll also get an appreciation of how the decision policy for allocating resources can determine success rather than competence.</p>
<p><strong>Running the Simulation</strong></p>
<p>After you&#8217;ve explored the model, try running a simulation.  The base case scenario assumes no one has an advantage over the other.  As you can imagine, everyone is equally successful and it&#8217;s a win-win situation.  Try turning on the &#8220;Advantage A Switch&#8221;  to see how even a modest advantage for A can snowball into a disadvantage for B.  It&#8217;s surprising how quickly the gap can widen.</p>
<p><strong>Using Modules to Create Models</strong></p>
<p>In STELLA and <em>iThink</em> version 9.1, we added the ability to <a href="http://blog.iseesystems.com/modeling-tips/module-faqs/">build models by linking together modules</a>.  The Success to the Successful model is an example of how you can use modules to create a higher level map of your model.  This map can easily be presented as a causal loop diagram.</p>
<p>The beauty of modules is they simplify the process of transitioning from a CLD to a model that actually simulates.  If you&#8217;ve ever tried to convert a causal loop diagram into a stock and flow model, you can appreciate what I&#8217;m talking about!  By architecting your model into modules, you&#8217;ve got a built-in mechanism for developing your model in manageable chunks and communicating the high level causal relationships.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/success-to-the-successful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Version 9.1.3 Updates Key Features</title>
		<link>http://blog.iseesystems.com/stella-ithink/version-9-1-3-now-available/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/version-9-1-3-now-available/#disqus_thread</comments>
		<pubDate>Tue, 16 Jun 2009 17:51:08 +0000</pubDate>
		<dc:creator>Joanne Egner</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[iThink/STELLA]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[spatial]]></category>
		<category><![CDATA[Version 9.1.3]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=1756</guid>
		<description><![CDATA[We just released another update to STELLA and iThink — Version 9.1.3.  This particular release has a number of updates specific to key features.  For example, if you&#8217;re a Macintosh user and rely on the data import/export functionality, you&#8217;ll definitely appreciate the updates we made to make sure the software is compatible with the latest [...]]]></description>
			<content:encoded><![CDATA[<p>We just released another update to STELLA and <em>iThink</em> — Version 9.1.3.  This particular release has a number of updates specific to key features.  For example, if you&#8217;re a Macintosh user and rely on the data import/export functionality, you&#8217;ll definitely appreciate the updates we made to make sure the software is compatible with the latest versions of Excel for Mac.</p>
<p>Updates to the <a href="http://blog.iseesystems.com/stella-ithink/arrayrank/">ARRAYRANK</a> builtin include an optional parameter to specify a secondary sort field for variables with the same value.  You can now also use the ARRAYRANK builtin  in a non-arrayed variable.</p>
<p>My personal favorite in this release, though, is an enhancement we made to the Spatial Map utility. In addition to color configurations, you can now assign an image to a range of values.  This really expands your ability to create  interesting visual representations of spatial data.</p>
<p><strong><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="forest and model" src="http://blog.iseesystems.com/wp-content/uploads/2009/06/forestandmodel.png" border="0" alt="forest and model" width="279" height="530" align="right" />Using images to visualize simulations</strong></p>
<p>This simple model of trees burning in a forest illustrates how images can be used in a spatial map configuration.</p>
<p>The model is set up so that initially there is one tree in the middle of the forest that is burning.  All of the other trees in the forest are healthy living trees.</p>
<p>When you run the simulation, the images in Spatial Map allow you to see the fire spreading to adjacent trees. It really adds to the visual effect of what&#8217;s happening in the model. Eventually the burning trees die out and you&#8217;re left with a forest mostly full of dead trees — now that&#8217;s a visual!</p>
<p>If you want to learn more about Spatial Map, check out Karim Chichakly&#8217;s <a href="http://blog.iseesystems.com/modeling-tips/spatial-modeling-map/">series on spatial modeling in <em>iThink</em> and STELLA </a>.</p>
<p>A full list of the <a href="http://www.iseesystems.com/softwares/Version913Features.aspx" target="_blank">features and fixes in Version 9.1.3</a> is available on our web site.  If your Technical Support Contract is current, you can go ahead and download the update now from your <a href="http://www.iseesystems.com/community/DownloadMySoftware.aspx" target="_blank">My Software</a> page.</p>
<p>Hope you have as much fun with the spatial mapping as I did!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/version-9-1-3-now-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Insight-based Model Investigates the Housing Crisis</title>
		<link>http://blog.iseesystems.com/stella-ithink/insight-based-model-investigates-the-housing-crisis/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/insight-based-model-investigates-the-housing-crisis/#disqus_thread</comments>
		<pubDate>Tue, 05 May 2009 15:00:45 +0000</pubDate>
		<dc:creator>Joanne Egner</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[Causal Loop]]></category>
		<category><![CDATA[CLD]]></category>
		<category><![CDATA[housing]]></category>
		<category><![CDATA[mortgage]]></category>
		<category><![CDATA[netsim]]></category>
		<category><![CDATA[price]]></category>
		<category><![CDATA[supply and demand]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=1305</guid>
		<description><![CDATA[For the past few months I&#8217;ve been taking a distance learning course at WPI called &#8220;System Dynamics Foundations: Managing Complexity&#8221;. The course covers a broad range of topics about the system dynamics methodology and how it has been applied in the real world.
One of the things I really like about the course is the different perspective [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1308" style="margin-left: 0px; margin-right: 15px;" title="wpi-logo" src="http://blog.iseesystems.com/wp-content/uploads/2009/04/wpi-logo.gif" alt="wpi-logo" width="200" height="73" />For the past few months I&#8217;ve been taking a distance learning course at <a href="http://cpe.wpi.edu/Individual/Distance/" target="_blank">WPI</a> called &#8220;System Dynamics Foundations: Managing Complexity&#8221;. The course covers a broad range of topics about the system dynamics methodology and how it has been applied in the real world.</p>
<p>One of the things I really like about the course is the different perspective the instructors bring to the table (or in this case my computer screen.) Last week&#8217;s lecture focused on three different styles of system dynamics modeling &#8211; Causal Loop Diagrams (CLDs), insight-based models and calibrated models.  While both instructors agreed there is value in all three approaches to dynamic modeling, there was clearly a difference of opinion about what is required to actually DO something with a proposed solution to a problem.</p>
<p>The topic got me to thinking about the types of STELLA and <em>iThink</em> models that are being built and how they are being used to DO something about real world problems. I would guess that the majority of the models fall into the insight-based category.   One of the reasons we put so much effort into creating communication features in our software is so that those insights can be shared and discovered by others.  The &#8220;ah-ha&#8221; moments that come from experimenting with simulations are often a great vehicle for getting conversations going about a particular issue and discussing possible solutions.</p>
<p><span id="more-1305"></span></p>
<p><strong>Investigating the Housing Crisis</strong></p>
<p><img class="alignright size-full wp-image-1317" title="Housing Crisis" src="http://blog.iseesystems.com/wp-content/uploads/2009/04/picture7.png" alt="Housing Crisis" width="307" height="207" />A great example of an insight-based model is the <a href="http://forio.com/service/netsims/netsim/housing_supply_and_demand/index.html" target="_blank">housing supply and demand model</a> that we recently published to the web using isee NetSim. The model was created by our Director of Product Development, Karim Chichakly, to demonstrate how some of the new capabilities in Version 9.1 can be used to understand the dynamics behind the 2008 collapse in the US housing market.</p>
<p>The model provides some background information about the factors leading up to the collapse, including subprime mortgages and the government practice of using interest rates to control inflation.</p>
<blockquote><p>2008 saw the biggest collapse in the financial system since the Great Depression. The trigger for this collapse was a large number of defaults on so-called subprime mortgages. Could this crisis have been predicted and perhaps averted by examining the combination of the government&#8217;s manipulation of interest rates and the rise in subprime mortgages by banks allowed by deregulation?</p>
</blockquote>
<p><strong>Tracing the Causal Relationships</strong></p>
<p>Before you delve into the simulation, I recommend tracing through the causal loop diagram.  Click the link on the <a href="http://forio.com/service/netsims/netsim/housing_supply_and_demand/index.html" target="_blank">first screen </a>of the online model.  Tracing the CLD will give you a high-level understanding of the relationships between the key components of the underlying model - housing supply, housing prices and demand for both housing and mortgages.</p>
<p><a href="http://forio.com/service/netsims/netsim/housing_supply_and_demand/index.html" target="_blank"><img class="alignleft size-full wp-image-1320" title="Housing CLD" src="http://blog.iseesystems.com/wp-content/uploads/2009/04/picture10.png" alt="Housing CLD" width="296" height="198" /></a>Stepping through the feedback loops really helps to explain the situation in very operational terms.  And it&#8217;s much easier to understand what&#8217;s happening when you&#8217;re dealing with one loop at a time.</p>
<p>It can get pretty complicated if you try to digest all that is going on at once.  That&#8217;s why building a story of the model before you simulate is so helpful! You can also view the stock and flow diagrams for each model component or module.</p>
<p><br class="spacer_" /></p>
<p><strong>Experimenting with the Simulation</strong></p>
<p><a href="http://blog.iseesystems.com/wp-content/uploads/2009/04/housing-simulation-sm.png"></a>The simulation allows you to play with interest rates, just as if you are the Chairman of the Federal Reserve.  It also provides a &#8220;Mortgage Deregulation Switch&#8221; so that you can see the impact of banks relaxing requirements and allowing more people to qualify for mortgages.  I was surprised by the affect relaxing mortgage requirements had on prices and had one of those &#8220;ah-ha&#8221; moments when I tried to raise interest rates to control inflation.  Try it yourself and see what happens to mortgage defaults!</p>
<p><strong>Sharing Insights</strong></p>
<p>The learning that comes from experimenting with insight-based models can be pretty infectious.   When you&#8217;ve discovered how something really works, don&#8217;t you want to share it with a friend?  <a href="http://www.iseesystems.com/softwares/NetSimWizard.aspx" target="_blank">isee NetSim</a> makes it possible to share your discoveries with just about anyone.   The housing supply and demand model is an example of  sharing insights about the dynamics of the housing crisis.   After you run a few simulations, let&#8217;s get the conversation going about potential solutions.  What do you think of the government bailout policies or the millions of people defaulting on their home mortgages?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/insight-based-model-investigates-the-housing-crisis/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Better Chained Slider</title>
		<link>http://blog.iseesystems.com/stella-ithink/a-better-chained-slider/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/a-better-chained-slider/#disqus_thread</comments>
		<pubDate>Wed, 18 Feb 2009 05:32:44 +0000</pubDate>
		<dc:creator>Jeremy Merritt</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[chained sliders]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Version 9.1.2]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=36</guid>
		<description><![CDATA[The chained slider has always been a useful interface object in iThink and STELLA for allocating 100% of something to different variables within a model.  For example, you may want to build a dashboard where someone could play around with allocating funds to various programs within the Obama Administration&#8217;s economic stimulus package.
In iThink and STELLA [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_38" class="wp-caption alignright" style="width: 350px"><a href="http://forio.com/broadcast/netsim/netsims/iseesystems/new_chained_slider/index.html" target="_blank"><img class="size-full wp-image-38" title="Chained Slider" src="http://blog.iseesystems.com/wp-content/uploads/2009/01/chained_slider.png" alt="Chained slider in iThink 9.1.2" width="340" height="385" /></a><p class="wp-caption-text">Chained slider in iThink 9.1.2</p></div>
<p>The chained slider has always been a useful interface object in <em>iThink</em> and STELLA for allocating 100% of something to different variables within a model.  For example, you may want to build a dashboard where someone could play around with allocating funds to various programs within the Obama Administration&#8217;s economic stimulus package.</p>
<p>In <em>iThink</em> and STELLA version 9.1.2, we decided to improve the behavior of the chained slider in response to feedback we&#8217;ve received from customers.  We also wanted to nail down the behavior before we added support for it in models published to the web with <a href="http://www.iseesystems.com/softwares/NetSimWizard.aspx" target="_blank">isee NetSim</a>.</p>
<p><span id="more-36"></span></p>
<p>Prior to version 9.1.2, the chained slider would allow the user to leave some percentage unallocated.  The model author could not easily force 100% allocation.  If an amount was left unallocated, it required the author to build model structure to capture the unallocated amount.</p>
<p>Also, if the user allocated over 100%, the chained slider would take away the excess over the remaining sliders automatically.  This sometimes ended up inadvertently changing the allocations to something the user did not desire.</p>
<p>Now in version 9.1.2 the chained slider can force the user to allocate 100% before running.  If the total does not equal 100% the slider no longer automatically re-apportions the values.  It displays the allocated amount in red if it is not equal to 100% and green if it is.  If the chained slider does not have 100% allocated, the user can press a new &#8220;Distribute&#8221; button to have the slider proportionally distribute the correct amounts.  The distribute button is great for those cases where you’re close to the values you want but you can’t quite dial in the <em>exact </em>number. Since the distribute action does so proportionally, it really helps.</p>
<p>Additionally, the chained slider now has the option to capture the unallocated amount into a model variable.  In this mode, the slider is only invalid if you exceed 100%.</p>
<div id="attachment_309" class="wp-caption alignright" style="width: 353px"><a href="http://blog.iseesystems.com/wp-content/uploads/2009/01/croppercapture38.png"><img class="size-full wp-image-309" title="Chained slider(s) are invalid" src="http://blog.iseesystems.com/wp-content/uploads/2009/01/croppercapture38.png" alt="The model won't run if sliders do not total 100%" width="343" height="183" /></a><p class="wp-caption-text">The model won&#39;t run if sliders do not total 100%</p></div>
<p>The model cannot run if there are any chained sliders that do not add up to exactly 100%.  In this event, when the user tries to run the model, they will be informed of this fact and given three options:  Distribute the allocation, Navigate to the slider (so they can fix it), and Cancel (the run).</p>
<p>The chained slider now has a precision option so users can use tenths or hundredths in their allocations</p>
<h2><a href="http://forio.com/broadcast/netsim/netsims/iseesystems/new_chained_slider/index.html" target="_blank">Click here to try out the new chained slider in your browser now</a></h2>
<p>We hope these changes will lead to increased use of this useful interface object.  All of these changes are available in models published to the web with <a title="isee Netsim" href="http://www.iseesystems.com/softwares/NetSimWizard.aspx" target="_blank">isee NetSim</a> too!</p>
<h2><a href="http://forio.com/broadcast/netsim/netsims/iseesystems/new_chained_slider/index.html" target="_blank"><br />
</a></h2>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/a-better-chained-slider/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New ARRAYRANK Builtin Sorts Array Values</title>
		<link>http://blog.iseesystems.com/stella-ithink/arrayrank/</link>
		<comments>http://blog.iseesystems.com/stella-ithink/arrayrank/#disqus_thread</comments>
		<pubDate>Tue, 17 Feb 2009 21:25:55 +0000</pubDate>
		<dc:creator>Karim Chichakly</dc:creator>
				<category><![CDATA[STELLA & iThink]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[builtins]]></category>
		<category><![CDATA[Version 9.1.2]]></category>

		<guid isPermaLink="false">http://blog.iseesystems.com/?p=345</guid>
		<description><![CDATA[Version 9.1.2 will introduce the ARRAYRANK feature.  Here is a preview of its capabilities.
The ARRAYRANK built-in can be very powerful for some applications.  It allows you to order the values in an array from smallest to largest or vice-versa.  In this sense, it expands upon what ARRAYMINIDX (find the index of the smallest value) and [...]]]></description>
			<content:encoded><![CDATA[<p>Version 9.1.2 will introduce the ARRAYRANK feature.  Here is a preview of its capabilities.</p>
<p>The ARRAYRANK built-in can be very powerful for some applications.  It allows you to order the values in an array from smallest to largest or vice-versa.  In this sense, it expands upon what ARRAYMINIDX (find the index of the smallest value) and ARRAYMAXIDX (find the index of the largest value) already do.</p>
<p>To introduce ARRAYRANK, let&#8217;s look at a simple model that uses it.  In this model, we explore the efficacy of applying tiered commissions for salespeople in an effort to encourage them to sell more.  Each tier is designed as a reward so the top seller in any given week gets the highest percentage, while those who do not perform will get the lowest.  The tiers are:</p>
<p style="padding-left: 60px;">Top seller:                    20%<br />
2<sup>nd</sup> best seller:            15%<br />
3<sup>rd</sup> best seller:             10%<br />
Everyone else:               5%</p>
<p>Note that the non-tiered system gave everyone 10%.  The model is very simple:</p>
<p style="text-align: center;" align="center"><img class="aligncenter size-full wp-image-351" title="arrayrank-model" src="http://blog.iseesystems.com/wp-content/uploads/2009/02/arrayrank-model.png" alt="arrayrank-model" width="411" height="302" /></p>
<p><span id="more-345"></span></p>
<p>As a person&#8217;s sales go up, they are paid a higher commission, their morale gets a boost, and they then sell more.  This is a virtuous cycle.  However, as a person&#8217;s sales go down, their morale falters, and they sell less.  This is a vicious cycle.  Note that all salespeople start at exactly the same level of morale and, hence, sales.  Observe what happens under the new policy:</p>
<p style="text-align: center;" align="center"><img class="aligncenter size-full wp-image-354" title="arrayrank-graph" src="http://blog.iseesystems.com/wp-content/uploads/2009/02/arrayrank-graph.png" alt="arrayrank-graph" width="461" height="255" /></p>
<p>It is interesting that within a very short period of time (the simulation runs for one quarter), two people dominate both sales and therefore commissions.  Will this really improve overall sales?  Open the attached model to explore the behavior further (<a href="http://blog.iseesystems.com/wp-content/uploads/2009/02/arrayrank-example.zip">arrayrank-example</a>)</p>
<p>The key variables that make this work are<em> sales ranks</em>, <em>salesperson ranks</em>, and <em>commission</em>.  Their equations, which are applied to all array elements, are:</p>
<p style="padding-left: 30px;"><code><em>sales_ranks</em> = ARRAYRANK(<em>sales</em>[*], ARRAYIDX())<em><br />
salesperson_ranks</em> = ARRAYRANK(<em>sales_ranks</em>[*], DIMSIZE() - ARRAYIDX() + 1)<em><br />
commission</em> = ARRAYVALUE(<em>commissions</em>[*], <em>salesperson_ranks</em>[Salesperson])</code></p>
<p>ARRAYRANK takes two parameters, the array to rank and which rank is desired.  It evaluates to the index of the element with that ordinal rank from smallest to largest (i.e, in ascending order).  The rank must be between one and the size of the array.  For example,</p>
<p style="padding-left: 30px;"><code>ARRAYRANK(<em>sales</em>[*], 2)</code></p>
<p>gives the index of the 2<sup>nd</sup> smallest element of array <em>sales</em>.  Thus, the formula for <em>sales ranks</em> places the index of the lowest <em>sales</em> figure into its first element, the index of the second lowest <em>sales</em> figure into its second element, and so on up to the index of the highest <em>sales</em> figures in element DIMSIZE().  [Note that ARRAYIDX() in an apply-to-all equation is equal to the numerical index of a given element running from one to DIMSIZE().]</p>
<p>Note, however, that <em>sales ranks</em> does not contain the desired salesperson ranks themselves, which we need to calculate the commissions.  E.g., it does not tell us that the first salesperson is ranked 3<sup>rd</sup>.  Rather, it contains the indices of the ranked <em>sales</em> figures.  If we examine ARRAYVALUE(<em>sales</em>[*], <em>sales_ranks</em>[1]), we will get the smallest sales figure.  How can we get the salesperson ranks?  Let&#8217;s examine this in more detail.</p>
<p>Imagine the sales figures are 2000, 4000, 5000, 3000.  ARRAYRANK on this dataset will return 1, 4, 2, 3.  Using these numbers, we can easily extract the sales figures in ranked order.  But what we really want is the sequence 4, 2, 1, 3.  This sequence tells us that salesperson one had the 4<sup>th</sup> highest sales, salesperson two had the 2<sup>nd</sup> highest sales, salesperson three had the highest sales, and salesperson four had the 3<sup>rd</sup> highest sales.  This allows us to directly extract the commission percentage.  To convert the rankings of sales back to the rankings of the salespersons, we only have to sort the sales rankings.  That is what the equation for <em>salesperson ranks</em> does.</p>
<p>Since we also want the highest, rather than the lowest, sales figure to be ranked one, we do the sort in descending order.  Instead of using ARRAYIDX() for the desired rank, this equation uses DIMSIZE() &#8211; ARRAYIDX() + 1, which reverses the rankings.  While ARRAYIDX() counts from one to DIMSIZE() as the array index increases, DIMSIZE() &#8211; ARRAYIDX() + 1 counts down from DIMSIZE() to one, reversing the ranks.</p>
<p>Finally, the <em>commission</em> is directly extracted from a table of <em>commissions</em> (stored in an array) using ARRAYVALUE and the salesperson rank.  Note that the array <em>commissions</em> has as many entries as there are salespersons, starts with the highest commission (0.20), and ends with the lowest (0.05).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iseesystems.com/stella-ithink/arrayrank/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>



