edu.bonn.xulu.plugin.model.ca
Class MultiCellularAutomaton

java.lang.Object
  extended by AbstractNamedObject
      extended by edu.bonn.xulu.model.AbstractXuluModel
          extended by edu.bonn.xulu.model.AbstractStepModel
              extended by edu.bonn.xulu.plugin.model.ca.MultiCellularAutomaton
All Implemented Interfaces:
StepModel, XuluModel
Direct Known Subclasses:
ImpetusCellularAutomaton

public abstract class MultiCellularAutomaton
extends AbstractStepModel

Dieses Modell stellt einen abstrakten zellularen Automaten (CA) dar, der auf Basis einer Bewertungsfunktion die Expansion eines LUC-Typs simuliert. Es basiert auf folgenden Ressourcen:

In jedem Zeitschritt wird iteriert bis Bedarf fuer alle Regionen gedeckt ist. In jeder Iteration wird jede Zelle des Regionen-Rand (initial die 8 Zellen um die jeweilige Start-Zelle) betrachtet und bewertet (durch die Methode getPreferenceValue(Point,int,CAArea,int)). Alle fuer U in Frage kommenden Zellen werden (samt dem Bewertungswert) in einer (sortierten) Liste gespeichert. Nachdem alle Zellen im Rand betrachtet wurden, werden (reihum) solange die geeignetsten umgewandelt, bis der Bedarf gedeckt ist.
Fuer jede umgewandelte Zelle werden die 8 umgebenden Zellen in den Rand aufgenommen, sofern sie noch nicht durch das Modell umgewandelt wurden.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)

Nested Class Summary
static class MultiCellularAutomaton.CAContentManager
          Diese Klasse definiert einen ModelContentManager fuer einen Multi-Zellularen-Automat mit folgenden Ressourcen: StepCount (int)
Spezifiziert die Anzahl zu modellierender Schritte.
 
Field Summary
protected  int areaCount
          Anzahl der modellierten Gebiete/Siedlungen.
protected  WritableGrid areaMapping
          Speichert die Zuordnung, welche Zelle welcher Area zugeordnet wurde.
protected  ListPropertyWriteAccess areas
          Die modellierten Gebiete/Siedlungen (@linkplain CAArea Areas).
static int BASE_RESCOUNT
          Anzahl an Ressourcen, die durch diese Modell-Oberklasse definiert sind.
protected  WritableGrid baseLUC
          Ausgangs-Szenario.
protected  double cellSize
          Speichert die Groesse (in qm) eine Zelle des Untersuchungsgebiets.
protected  double luccThreshold
          Schwellwert der Praeferenzfunktion ab dem eine Zelle fuer einen potentiellen LUC-Wechsel in Betracht gezogen wird.
protected  int luccType
          LUC-Typ fuer den die Wechsel modelliert werden.
protected  int[][] NEIGHBORHOOD_AREA
          Definiert die Nachbarschaftsumgebung, ueber die der zellulare Automat expandiert.
protected  WritableGrid outLUC
          Ausgabe-Raster.
 
Fields inherited from class edu.bonn.xulu.model.AbstractStepModel
stepCount
 
Fields inherited from class edu.bonn.xulu.model.AbstractXuluModel
contManager, disposed, events, initialised, listeners, modelResourceProvider, running, statusOut, stopped
 
Constructor Summary
MultiCellularAutomaton(MultiCellularAutomaton.CAContentManager cm)
          Erzeugt einen neuen zellularen Automaten (CA).
 
Method Summary
protected  void cellChanged(Point p, CAArea area, int newLUC, int prevLUC)
          Macht nichts.
abstract  double getPreferenceValue(Point p, int luc, CAArea area, int areaNo)
          Bewertet eine Zelle des Untersuchungsgebiets hinsichtlich eines bestimmten LUC-Typs.
 void performModelDispose()
          Zerstoert das Modell.
 void performModelInit()
          Initialisiert das Modell.
 void performModelStep(int stepNo)
          Modelliert genau einen Zeitschritt.
 
Methods inherited from class edu.bonn.xulu.model.AbstractStepModel
fireModelStepFinished, fireModelStepStarted, getStepCount, performModelStart
 
Methods inherited from class edu.bonn.xulu.model.AbstractXuluModel
addModelListener, checkBreakingCommands, determineCaption, disposeModel, fireModelDisposed, fireModelEvent, fireModelInitialised, fireModelStarted, fireModelStopped, getContentManager, getEvents, getModelSpecificGUI, getResourceProvider, getStatusOut, initModel, isDisposed, isInitialised, isRunning, isStopped, performError, releaseAccess, removeModelListener, resetCaptions, setStatusOut, startModelling, stopModelling
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface edu.bonn.xulu.model.XuluModel
addModelListener, disposeModel, getContentManager, getEvents, getModelSpecificGUI, getResourceProvider, getStatusOut, initModel, isDisposed, isInitialised, isRunning, isStopped, performError, removeModelListener, setStatusOut, startModelling, stopModelling
 

Field Detail

BASE_RESCOUNT

public static final int BASE_RESCOUNT
Anzahl an Ressourcen, die durch diese Modell-Oberklasse definiert sind.

See Also:
Constant Field Values

baseLUC

protected WritableGrid baseLUC
Ausgangs-Szenario.


outLUC

protected WritableGrid outLUC
Ausgabe-Raster. Wenn die entsprechende optionale Ressource unbelegt bleibt, ist outLUC = baseLUC.


areaCount

protected int areaCount
Anzahl der modellierten Gebiete/Siedlungen.


areas

protected ListPropertyWriteAccess areas
Die modellierten Gebiete/Siedlungen (@linkplain CAArea Areas).


areaMapping

protected WritableGrid areaMapping
Speichert die Zuordnung, welche Zelle welcher Area zugeordnet wurde.


luccType

protected int luccType
LUC-Typ fuer den die Wechsel modelliert werden.
Bemerke:
Wird in einer zukuenftigen Version ersetzt durch ein Feld in CAArea, so dass pro Gebiet/Siedlung unterschiedliche LUC-Typen expandiert werden koennen.


luccThreshold

protected double luccThreshold
Schwellwert der Praeferenzfunktion ab dem eine Zelle fuer einen potentiellen LUC-Wechsel in Betracht gezogen wird.
Bemerke:
Wird in einer zukuenftigen Version ersetzt durch ein Feld in CAArea, so dass pro Gebiet/Siedlung unterschiedliche Schwellwerte verwendet werden koennen.


cellSize

protected double cellSize
Speichert die Groesse (in qm) eine Zelle des Untersuchungsgebiets.


NEIGHBORHOOD_AREA

protected int[][] NEIGHBORHOOD_AREA
Definiert die Nachbarschaftsumgebung, ueber die der zellulare Automat expandiert. Standardmaessig sind dies die 8 umgebenende Zellen. Kann von Sub-Klassen neu definiert werden: Bemerke:
NEIGHBORHOOD_AREA[i] = (0,0) wuerde die betrachtete Zelle, als einen ihrer eigenen Nachbarn identifizieren! Dies ist nicht sinnvoll und wird vom zellularen Automaten abgefangen!

Constructor Detail

MultiCellularAutomaton

public MultiCellularAutomaton(MultiCellularAutomaton.CAContentManager cm)
Erzeugt einen neuen zellularen Automaten (CA).

Parameters:
cm - ContentManager fuer den CA.
Method Detail

performModelInit

public void performModelInit()
Initialisiert das Modell.

Specified by:
performModelInit in class AbstractXuluModel

performModelDispose

public void performModelDispose()
Zerstoert das Modell. Alle gehaltenen Zugriffsrechte auf Ressourcen werden wieder freigegeben.

Specified by:
performModelDispose in class AbstractXuluModel

performModelStep

public void performModelStep(int stepNo)
Modelliert genau einen Zeitschritt.

Specified by:
performModelStep in interface StepModel
Specified by:
performModelStep in class AbstractStepModel
Parameters:
stepNo - Nummer des Zeitschritts

cellChanged

protected void cellChanged(Point p,
                           CAArea area,
                           int newLUC,
                           int prevLUC)
Macht nichts. Wird aufgerufen, nachdem eine Zelle umgewandelt wurde. Sub-Klassen koennen diese Methode ueberschreiben, um auf die Umwandlung zu reagieren.

Parameters:
p - Raster-Koordinaten der umgewandelten Zelle
area - Gebiet dem die Zelle zugeordnet wurde
newLUC - LUC-Typ, der der Zelle zugeordnet wurde
prevLUC - LUC-Typ, den die Zelle zuvor hatte

getPreferenceValue

public abstract double getPreferenceValue(Point p,
                                          int luc,
                                          CAArea area,
                                          int areaNo)
Bewertet eine Zelle des Untersuchungsgebiets hinsichtlich eines bestimmten LUC-Typs. Je groesser der Wert, desto geeigneter die Zelle fuer den LUC-Typ luc.

Parameters:
p - Zelle des Untersuchungsgebiets
luc - LUC-Typ hinsichtlich dessen die Bewertung durchgefuehrt wird
area - CA-Gebiet fuer das die Bewertung durchgefuehrt wird
areaNo - Nummer des Gebiets