<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://seles.info/index.php?action=history&amp;feed=atom&amp;title=The_IBM2_model</id>
	<title>The IBM2 model - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://seles.info/index.php?action=history&amp;feed=atom&amp;title=The_IBM2_model"/>
	<link rel="alternate" type="text/html" href="https://seles.info/index.php?title=The_IBM2_model&amp;action=history"/>
	<updated>2026-05-30T03:37:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://seles.info/index.php?title=The_IBM2_model&amp;diff=3186&amp;oldid=prev</id>
		<title>Fei at 21:20, 15 November 2006</title>
		<link rel="alternate" type="text/html" href="https://seles.info/index.php?title=The_IBM2_model&amp;diff=3186&amp;oldid=prev"/>
		<updated>2006-11-15T21:20:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://seles.info/index.php?title=The_IBM2_model&amp;amp;diff=3186&amp;amp;oldid=3177&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Fei</name></author>
	</entry>
	<entry>
		<id>https://seles.info/index.php?title=The_IBM2_model&amp;diff=3177&amp;oldid=prev</id>
		<title>Fei at 21:04, 15 November 2006</title>
		<link rel="alternate" type="text/html" href="https://seles.info/index.php?title=The_IBM2_model&amp;diff=3177&amp;oldid=prev"/>
		<updated>2006-11-15T21:04:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Summary==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Screenshot==&lt;br /&gt;
&lt;br /&gt;
[[Image:Consumer.gif]]&lt;br /&gt;
&lt;br /&gt;
==Download Model==&lt;br /&gt;
&lt;br /&gt;
Download the .scn, .sel and .lse files by clicking on the following link: [[Image:ProducerConsumer.zip]]&lt;br /&gt;
&lt;br /&gt;
==Model Code Exploration==&lt;br /&gt;
&lt;br /&gt;
In the following sections we will examine all of the model files for this model. Note that instead of downloading the zip file above, you could just copy the text in the boxes below into a text editor and save it with the appropriate name (Section title). Opening the resulting .scn file in the SELES simulator would run this model.&lt;br /&gt;
&lt;br /&gt;
===Consume.scn===&lt;br /&gt;
 Seles Scenario&lt;br /&gt;
 Model.sel&lt;br /&gt;
 SimPriority Low Priority&lt;br /&gt;
&lt;br /&gt;
===Model.sel===&lt;br /&gt;
 Seles Model&lt;br /&gt;
 Time Units: Step kiloStep 1000 1000&lt;br /&gt;
 Landscape Events:&lt;br /&gt;
  Producer.lse DEBUG&lt;br /&gt;
  Consumer.lse DEBUG&lt;br /&gt;
  Update.lse DEBUG&lt;br /&gt;
 Spatial Variables:&lt;br /&gt;
  LSState[3]&lt;br /&gt;
  PrevLSState[3]&lt;br /&gt;
 Legends:&lt;br /&gt;
  LSStateTypes = {0:Uncolonised,    1:Producer, 2:Consumer}&lt;br /&gt;
 Global Variables:&lt;br /&gt;
  pInitialProducer = 0.01&lt;br /&gt;
  pInitialConsumer = 0.01&lt;br /&gt;
  pSpreadProducer = 0.1&lt;br /&gt;
  pSpreadConsumer = 0.2&lt;br /&gt;
  pDeathProducer = 0.01&lt;br /&gt;
  pDeathConsumer = 0.05&lt;br /&gt;
 //  SpreadRateProducer = 1&lt;br /&gt;
 //  SpreadRateConsumer = 1&lt;br /&gt;
 Output Frequency: 1&lt;br /&gt;
&lt;br /&gt;
===consumer.lse===&lt;br /&gt;
  // Process based definition for  consumber behaviour in producer/consumer  model&lt;br /&gt;
 LSEVENT: Consumder&lt;br /&gt;
 DEFINITIONS&lt;br /&gt;
   LAYER: LSState, PrevLSState&lt;br /&gt;
   GLOBAL CONSTANT: Uncolonised, Producer,  Consumer&lt;br /&gt;
   GLOBAL VARIABLE: pInitialConsumer,   pSpreadConsumer, pDeathConsumer //,  SpreadRateConsumer&lt;br /&gt;
 ENDDEF&lt;br /&gt;
 // Just start once&lt;br /&gt;
 RETURNTIME = 0&lt;br /&gt;
 // Initialize in an empty cell&lt;br /&gt;
 PROBINIT = IF LSState EQ Uncolonised THEN  pInitialConsumer ELSE 0&lt;br /&gt;
 TRANSITIONS&lt;br /&gt;
   // Decide if this cell survives&lt;br /&gt;
   Dies = UNIFORM(0,1) &amp;lt; pDeathConsumer&lt;br /&gt;
   // If the consumer is dying&lt;br /&gt;
   IF Dies&lt;br /&gt;
       LSState = Uncolonised&lt;br /&gt;
   ENDFN&lt;br /&gt;
   TRANSITIONS = !Dies&lt;br /&gt;
   LSState = Consumer&lt;br /&gt;
 ENDTR&lt;br /&gt;
 SPREADTIMESTEP = 1 //SpreadRateConsumer&lt;br /&gt;
 SPREADLOCATION&lt;br /&gt;
   REGION CENTRED(0,1, WRAPPED)&lt;br /&gt;
 ENDSL&lt;br /&gt;
 SPREADPROB&lt;br /&gt;
   // Always spread to the same cell  (self), and spread probabilistical to  neighbouring producer cells&lt;br /&gt;
  SPREADPROB = IF Location EQ (SOURCE  Location) THEN 1&lt;br /&gt;
               ELSE IF PrevLSState EQ   Producer  THEN pSpreadConsumer&lt;br /&gt;
               ELSE 0&lt;br /&gt;
 ENDSP&lt;br /&gt;
&lt;br /&gt;
===producer.lse===&lt;br /&gt;
 // Process based definiton of producer  behaviour in producer/consumer model&lt;br /&gt;
 LSEVENT: Producer&lt;br /&gt;
 DEFINITIONS&lt;br /&gt;
   LAYER: LSState, PrevLSState&lt;br /&gt;
   GLOBAL CONSTANT: Uncolonised, Producer,  Consumer&lt;br /&gt;
   GLOBAL VARIABLE: pInitialProducer,  pSpreadProducer, pDeathProducer //,  SpreadRateProducer&lt;br /&gt;
 ENDDEF&lt;br /&gt;
 // Just start once&lt;br /&gt;
 RETURNTIME = 0&lt;br /&gt;
 // Initialize in an empty cell&lt;br /&gt;
 PROBINIT = IF LSState EQ Uncolonised THEN  pInitialProducer ELSE 0&lt;br /&gt;
 TRANSITIONS&lt;br /&gt;
   // Decide if this cell survives&lt;br /&gt;
   Dies = UNIFORM(0,1) &amp;lt; pDeathProducer&lt;br /&gt;
   // If the producer is dying&lt;br /&gt;
   IF Dies&lt;br /&gt;
      LSState = Uncolonised&lt;br /&gt;
   ENDFN&lt;br /&gt;
   TRANSITIONS = (!Dies)&lt;br /&gt;
   LSState = Producer&lt;br /&gt;
 ENDTR&lt;br /&gt;
 SPREADTIMESTEP = 1 //SpreadRateProducer &lt;br /&gt;
 SPREADLOCATION&lt;br /&gt;
   notEaten = PrevLSState EQ Producer //  check that the producer wasn&amp;#039;t eaten  during the last step&lt;br /&gt;
   REGION CENTRED(0, 1, WRAPPED)&lt;br /&gt;
      DECISION notEaten // don&amp;#039;t spread if  eaten (i.e. stop process)&lt;br /&gt;
 ENDSL&lt;br /&gt;
 SPREADPROB&lt;br /&gt;
   // Always spread to the same cell  (self), and spread probabilistically to  empty neighbouring cells&lt;br /&gt;
  SPREADPROB = IF Location EQ (SOURCE  Location) THEN 1 // spread to same cell&lt;br /&gt;
               ELSE IF PrevLSState EQ  Uncolonised THEN pSpreadProducer&lt;br /&gt;
               ELSE 0&lt;br /&gt;
 ENDSP&lt;br /&gt;
&lt;br /&gt;
===update.lse===&lt;br /&gt;
 // Event to update time step&lt;br /&gt;
 LSEVENT: Update&lt;br /&gt;
 DEFINITIONS&lt;br /&gt;
   LAYER: LSState, PrevLSState&lt;br /&gt;
 ENDDEF&lt;br /&gt;
 RETURNTIME&lt;br /&gt;
   RETURNTIME = 1&lt;br /&gt;
   PrevLSState = LSState&lt;br /&gt;
 ENDRT&lt;br /&gt;
 NUMCLUSTERS = 0&lt;br /&gt;
&lt;br /&gt;
==Suggested Experiments==&lt;br /&gt;
&lt;br /&gt;
To explore this cellular automata model further, try the following:&lt;/div&gt;</summary>
		<author><name>Fei</name></author>
	</entry>
</feed>