Deutscher Verband Forstlicher Forschungsanstalten, Sektion Forstliche Biometrie und Informatik: 12. Jahrestagung, Göttingen, 29.9.1.10.1999 / Herbstkolloquium der AG Ökologie der Internationalen Biometrischen Gesellschaft, Deutsche Region Winfried Kurth Spezifikation räumlicher Bestandes- und Populationsmodelle mit sensitiven Grammatiken Institut für Forstliche Biometrie und Informatik Universität Göttingen Büsgenweg 4, 37077 Göttingen [email protected] Zusammenfassung: In der individuenbasierten Simulation von Pflanzen- und Tierpopulationen wurden bisher häufig die Wachstumsund Interaktionsregeln unmittelbar im Quellcode des Simulationsprogramms in einer prozeduralen oder objektorientierten Allzwecksprache implementiert — mit dem Nachteil einer relativ geringen Flexibilität, wenn die Regeln geändert werden sollen. Im Quellcode wird häufig noch das abstrakte, biologische Modell mit technischen Aspekten der Datenverwaltung verquickt. Modelle, die auf "zellulären Automaten" beruhen, bieten zwar einen höheren Grad an Abstraktion und eine striktere Trennung von Software und Regelsystem (Transitionsfunktionen der Gitterzellen). Häufig ist aber ihre inhärente Auszeichnung bestimmter räumlicher Richtungen und Skalenbereiche unerwünscht. Eine Alternative stellen erweiterte Lindenmayer-Systeme (Wachstumsgrammatiken) dar: Parallele string-rewriting-Systeme, die mit topologischen und geometrischen Semantiken ausgestattet werden und bisher vor allem zur Modellierung der zeitlichen Entwicklung der Architektur pflanzlicher Verzweigungssysteme herangezogen wurden. Durch die Hinzufügung sogenannter sensitiver Funktionen, die eine Rückkopplung zwischen erzeugter geometrischer Struktur und Regelanwendungsprozeß herstellen, können Interaktionen zwischen Individuen derselben oder unterschiedlicher Arten im Modell realisiert werden. Erste, einfache Beispiele behandeln Pflanzen und tierische Pflanzenfresser als kreis- bzw. punktförmige Objekte. Sensitive Funktionen fragen geometrische Lagebeziehungen ab (gegenseitige Überschattung von Pflanzen) und steuern einen Transfer von Kohlenstoff von den Primärproduzenten auf die Phytophagen, sofern die Lagerelationen dies erlauben. Einfach manipulierbare und austauschbare Regeln beschreiben die Mobilität der Tiere (Zufallsbewegungen / gezielte Nahrungssuche) und das Vermehrungsverhalten. Das globale Langzeitverhalten solcher einfacher Modellsysteme zeigt bereits grobskalige räumliche Musterbildungsvorgänge, Fluktuationen der Populationsstärken und (bei bestimmten Parameterkombinationen) das Aussterben von Arten. Die Software GROGRA liest die in Textdateien niedergelegten Regelsysteme ein, setzt sie in Zeitreihen von Grafiken der Bestandesstruktur um und stellt Analysewerkzeuge zur Verfügung. Damit ist bereits eine weitgehende Trennung von Modellspezifikation und Software-Quellcode vollzogen. Lediglich bei tiefergehenden Änderungen an den sensitiven Funktionen muß ein Teil der Simulationssoftware neu kompiliert werden. Es wird angestrebt, auch diese Interaktionsmechanismen in einer stärker abstrahierenden Form zu beschreiben und voll in den Formalismus der Grammatiken zu integrieren. Einleitung Individuenbasierte Modelle haben in der Ökologie in vielen Bereichen Verbreitung gefunden (DeAngelis & Gross 1992). Insbesondere im Gebiet der Forstwirtschaft und Waldökologie verspricht man sich von ihnen die Erfüllung folgender Anforderungen: Die Wiedergabe räumlicher Strukturen von Waldbeständen, eine lokale (und damit an den realen Verhältnissen orientierte) Informationsweitergabe zwischen den Objekten im Modell, die Berücksichtigung von Strukturen, Stoffflüssen, Prozessen sowie verschiedener Organismen-Typen und ihrer vielfältigen Interaktions-Möglichkeiten in einem einheitlichen Modell-Rahmen. Zwei zusätzliche Anforderungen sollen hier noch postuliert werden, die bisher auch bei den fortgeschritteneren Individuen-Modellen nicht notwendig erfüllt sind, die aber aus praktischen und konzeptionellen Gründen wünschenswert erscheinen: sowohl stochastische, als auch deterministische Submodelle sollen einfügbar und ggf. miteinander austauschbar sein, es sollte eine weitestmögliche Trennung des (mathematisch-abstrakten) "Modell-Kerns" von softwaretechnischen Hilfskonstrukten, die lediglich der Umsetzung des Modells und dem Datenmanagement dienen, durchgehalten werden. Diese beiden Zusatzanforderungen werden u.a. im Hinblick auf eine bessere Modularisierbarkeit und "genericness" (Acock & Reynolds 1997) von Modellen erhoben. Die klassischen populationsdynamischen Modelle (für Beispiele siehe etwa Bartlett & Hiorns 1973) beruhen meist auf Differenzen- oder Differentialgleichungen und sind nicht individuenbasiert. Populationsgrößen gehen als diskrete oder kontinuierliche Variablen in die Modellgleichungen ein. Der Differentialgleichungs-Formalismus bringt viele Vorteile: mathematische Eleganz und Kürze der Modellspezifikation, Analogien zur Physik und zu anderen Fachdisziplinen, wo mitunter schon Lösungsverfahren für diverse Gleichungstypen etabliert sind, und die oben geforderte Trennung von Modell-Kern (Gleichungssystem) und Lösungsalgorithmus. Von Nachteil ist jedoch, daß sich räumliche Strukturen im Rahmen dieser Modelle nur mit erheblichem Zusatzaufwand wiedergeben lassen: Man gelangt dann entweder auf partielle Differentialgleichungen oder auf ergänzende ad hoc-Modellkonstruktionen (Hybridmodelle), wodurch die Lösbarkeit und / oder die Geschlossenheit des mathematischen Formalismus Einschränkungen erfährt, d.h. man büßt von den Vorteilen des Ansatzes dann wieder vieles ein (zur Diskussion siehe auch Breckling 1990). Individuenbasierte Modelle wurden häufig als objektorientierte Simulationsprogramme realisiert: Die für Individuen (und auch für abiotische Komponenten) stehenden Objekte werden während des Programmlaufs erzeugt, können untereinander Informationen austauschen und werden wieder gelöscht. Es resultiert eine Systemdynamik, die nicht, wie beim Differentialgleichungsansatz, von vornherein in das Modell hineingesteckt wurde, sondern die sich als globales Gesamtergebnis zahlreicher lokaler und individuengebundener Prozesse ergibt (siehe Breckling 1996 für ein Beispiel aus der Pflanzenmodellierung). Von den oben gestellten Anforderungen ist bei diesem Modelltyp die realitätsnahe, lokale Informationsweitergabe gut verwirklicht. Räumliche Strukturen lassen sich darstellen, und ein einheitlicher Modellrahmen für Submodelle unterschiedlichen Typs ist gewährleistet. Was in den bisherigen objektorientierten Modellen noch nicht erfüllt ist, ist die Trennung von Modell und Software. Änderungen am Modell-Kern müssen, ganz ähnlich wie bei klassischen prozeduralen Simulationsmodellen, durch Änderungen am Quellcode der Software, die in der Regel in einer objektorientierten Allzweck-Programmiersprache (Simula, Smalltalk, C++, Java oder andere) geschrieben ist, realisiert werden. Zwar ist durch besondere Eigenschaften des objektorientierten Programmier-Paradigmas (Kapselung, Vererbung; siehe z.B. Lippman & Lajoie 1998) ein besonders hoher Modularisierungsgrad der Software erreichbar, der für die Modifikation und den Austausch von Submodellen natürlich günstig ist. Um die Einarbeitung in Details der softwaretechnischen Umsetzung kommt man aber in der Regel nicht herum, wenn man wesentliche Teile des Modells verändern will. Ein Ansatz, bei dem die Trennung von Modell und Software dagegen realisiert ist, ist gegeben durch die zellulären Automaten. Das Grundprinzip ist einfach: Der Raum wird in ein Gitter aus prinzipiell gleichartigen Zellen zerlegt, von denen jede einen von endlich vielen möglichen Zuständen annimmt. In jedem Zeitschritt wird der neue Zustand jeder Zelle mittels einer Transitionsfunktion aus dem eigenen Zustand und den Zuständen der Nachbarzellen berechnet. Die linke Seite von Abbildung 1 zeigt dieses Prinzip an einem eindimensionalen zellulären Automaten, wo also der Modell-Raum nur aus einer linearen Aneinanderreihung von Zellen besteht. Die Nachbarschaftsrelation zwischen den Zellen ist hier sofort klar. Im zweidimensionalen Fall gibt es mehrere mögliche Nachbarschaftsdefinitionen (Abb. 1 rechts). Abb. 1. Links: Anwendung der Transitionsfunktion eines eindimensionalen zellulären Automaten zur Berechnung des Zustandes der Zelle z aus ihrem vorherigen Zustand und dem vorherigen Zustand der beiden Nachbarzellen. Rechts: Zwei Varianten von Nachbarschaft bei zweidimensionalen zellulären Automaten. Aus Kurth (1998). Mathematisch läßt sich jede Zelle als ein endlicher Automat im Sinne der theoretischen Informatik auffassen, in dessen Transitionsfunktion die Zustände der Nachbarzellen als Argumente eingehen — daher die Bezeichnung "zellulärer Automat". Dieser Modellansatz hat zahlreiche Anwendungen gefunden, z.B. für chemische Systeme mit räumlicher Diffusion, für das Kristallwachstum, die Bildung von Pigmentmustern, für Walddynamik und Veränderung von Landschaftsmustern. Abb. 2. Beispiele für zelluläre Automaten aus der Literatur. Links: Modell eines Wirt-Parasit-Systems, die Schattierung der Zellen steht für die Stärke des Parasitenbefalls (aus Ermentrout & Edelstein-Keshet 1993). Rechts: Modell der Nährstoffdynamik in Bodenzellen bei Durchwurzelung durch flachwurzelnde Bäume (aus Middelhoff & Breckling 1997). Die Schattierung der Zellen gibt die Phosphatkonzentration wieder, die Linienstücke stehen für die Grobmorphologie der Wurzelsysteme, die Kreise für die oberirdischen Kronenradien der Bäume. Abbildung 2 zeigt exemplarisch zwei Anwendungen aus der Literatur: Links sieht man einen Ausschnitt aus einer Simulation der räumlichen Dynamik eines Wirt-Parasit-Systems in einem zweidimensionalen zellulären Automaten mit quadratischen Gitterzellen, bei der sich "Wellenmuster" des Parasitenbefalls herausbilden, rechts eine Momentaufnahme aus einer Simulation der Nährstoffdynamik im Boden bei Durchwurzelung durch die Schwarzerle (vgl. Beitrag von U. Middelhoff in diesem Band), wo das Boden-Kompartiment in sechseckige Zellen zerlegt ist. Aufgrund der Beteiligung weiterer, nicht zellengebundener Komponenten wird man im letztgenannten Beispiel von einem Hybridmodell sprechen. Ein Vorteil dieses Ansatzes ist, daß die Entwicklungsregeln (in Form der Transitionsfunktion) von vornherein lokal wirken. Auch die Einfachheit des Konzepts ist ein Pluspunkt; schon mit relativ geringem Aufwand an Modellierungsarbeit lassen sich in vielen Beispielen wesentliche Grundzüge der räumlichen Systemdynamik erfassen und analysieren. Durch generische Software-Werkzeuge, die z.T. im Internet verfügbar sind und wo nur noch die Transitionsfunktion an das jeweilige konkrete System angepaßt werden muß, wird der Aufwand weiter gesenkt. Ein Nachteil ist allerdings, daß durch die vorgegebene, einheitliche Diskretisierung des ganzen Raumes in gleichförmige Zellen bestimmte Richtungen sowie Längen- und Zeitskalen von vornherein besonders ausgezeichnet sind (die Richtungen der Gitterachsen; die Seitenlänge einer Gitterzelle als Minimal-Länge; die Bewegung um eine Zelle pro Zeitschritt als Maximal-Geschwindigkeit). Beim Wachstum der Struktur von Bäumen und Waldbeständen haben wir zudem die Situation, daß die Topologie des Systems (Verzweigungen, Kronenkontakte, Nachbarschaftsbeziehungen von Bäumen, Vegetationsmuster) sich erst im Laufe des Wachstums entwickelt. Ein Modellansatz wie derjenige der zellulären Automaten, bei dem die Topologie von vornherein durch das Gitter fest vorgegeben und starr ist, wird diesem Umstand kaum gerecht. Es liegt daher nahe, verwandte Ansätze heranzuziehen, bei denen die topologischen Beziehungen der Elemente selbst Gegenstand des Modells sind und sich beim Simulationslauf mitverändern. Dies ist der Fall bei Regelsystemen aus der theoretischen Informatik, die schon frühzeitig zur Modellierung der Verzweigungsarchitektur einzelner Pflanzen herangezogen worden sind (Lindenmayer 1968): Sogenannte L-Systeme (Lindenmayer-Systeme), oder ihre erweiterte Version, "Wachstumsgrammatiken" (Kurth 1994). Sensitive Wachstumsgrammatiken Sensitive Wachstumsgrammatiken sind Mengen von Ersetzungsregeln, die vom Standpunkt der theoretischen Informatik unter das "Fallregel-Paradigma" einzuordnen sind, d.h. es wird in einer gegebenen Situation geprüft, ob sich eine Regel anwenden läßt; im positiven Fall wird diese angewandt, und das Ergebnis wird wieder auf Anwendbarkeit von Regeln überprüft, und so fort. Im Gegensatz zur prozeduralen Programmierung mit ihren expliziten Konstrukten zur Kontrollfluß-Festlegung (if-Bedingungen, Schleifen...) wird der Programm- oder Simulationsablauf also "von Fall zu Fall" entschieden, durch die Anwendbarkeit von Regeln aus einer u.U. sehr umfangreichen Menge. Es ist bekannt, daß formale Systeme dieser Art dieselbe potentielle "Berechnungs-Mächtigkeit" haben wie klassische, prozedurale Programmiersprachen (Chien & Jürgensen 1992). Alle Berechnungen, die sich in gängigen Programmiersprachen (oder mit dem abstrakten Modell der "Turing-Maschine") erledigen lassen, sind also auch mit solchen Grammatiken möglich. Im Gegensatz zu den üblichen, universalen Programmiersprachen sind Wachstumsgrammatiken aber an botanische Anwendungen besser an- gepaßt, was dazu führt, daß Modelle in kürzerer und übersichtlicherer Form spezifiziert werden können. Regeln und Gleichungen, die ein Modell festlegen, können leichter ausgetauscht werden. Im Gegensatz zu den zellulären Automaten werden im Formalismus der Wachstumsgrammatiken keine bestimmten Richtungen und Längenskalen ausgezeichnet. Lediglich die Zeitskala ist, wie bei den zellulären Automaten, in Schritte fester Länge diskretisiert — eine Einschränkung, die aber durch die Erweiterung auf "zeitverstetigte L-Systeme" (Prusinkiewicz & Lindenmayer 1990, Kap. 6) ebenfalls beseitigt werden kann. Es sind lokale und globale Interaktionsregeln im selben Modell möglich — jedenfalls dann, wenn man die bei Kurth (1994) oder unabhänging bei Prusinkiewicz et al. (1994) eingeführte "globale Sensitivität" (bzw. "environmental sensitivity") zuläßt. Die Trennung von Modell (Regelsystem) und Software läßt sich weitgehend durchhalten. (Eine Ausnahme bilden allerdings, wie wir noch sehen werden, die "sensitiven Funktionen", welche für die globalen Interaktionen zuständig sind und bisher eine "Insel der Prozeduralität" im Konzept der Wachstumsgrammatiken darstellen. Hier sind noch zukünftige Arbeiten vonnöten, um das Fallregelparadigma konsequenter auch auf diesen Bereich auszudehnen.) Wie sieht nun so ein Regelsystem aus? Bei jedem Programmier-Paradigma (prozedural, funktional, logikbasiert, objektorientiert...) erfolgt die Realisierung in verschiedenen Programmiersprachen, die die Grundidee auf unterschiedliche Weise und mal mehr, mal weniger konsequent umsetzen. So ist es auch bei der regelorientierten Programmierung botanischer Modelle. Wir stützen uns hier auf diejenige Regelsprache, die von der Software GROGRA umgesetzt werden kann (Kurth 1994, 1998); diese beruht auf den von Prusinkiewicz & Lindenmayer (1990) vorgestellten Symbolen und Konstrukten, systematisiert und erweitert diese aber noch in manchen Punkten. (Siehe Chien & Jürgensen (1992) und Goel & Rozehnal (1992) für alternative Ausprägungen desselben Paradigmas.) Ein L-System (Lindenmayer-System; nach Aristid Lindenmayer, Botaniker, 1925-1989) in seiner Grundform besteht aus einem Symbolvorrat oder Alphabet, einem Startwort und dem eigentlichen Regelsystem, einer Menge von Ersetzungsregeln der Form "Symbol Kette von Symbolen". Beginnend mit dem Startwort, werden die Regeln auf die einzelnen Symbole, aus denen die jeweils vorhandene Symbolkette besteht, angewandt, wobei alle ersetzbaren Symbole parallel gegen ihre entsprechenden rechten Regelseiten ausgetauscht werden. (Nicht ersetzbare Symbole, auf die also keine der Regeln angewandt werden kann, werden für den nächsten Zeitschritt unverändert übernommen.) Dieser Vorgang wird dann iteriert, so daß sich eine Zeichenkette über mehrere Zeitschritte ("Generationen") immer weiter verändert ("generative Regelanwendung"). Diese Veränderung von Zeichenketten (strings) ist zunächst ein rein abstrakter, syntaktischer Umformungsprozeß, der zu seiner Nutzbarmachung für räumliche Modelle noch einer weiteren Komponente bedarf: einer geometrischen Interpretation oder Semantik. Hierfür wird seit Prusinkiewicz et al. (1988) meist die turtle geometry ("Schildkrötengeometrie") verwendet, ein Code, der bestimmte Buchstaben und Buchstabenkombinationen als "Befehle" für ein dreidimensionales Zeichen- oder Konstruktionsgerät (die "Turtle") festlegt. Durch eine Abfolge von Konstruktions-, Rotations- und Zustandsänderungsbefehlen kann eine Kette geometrischer Objekte erzeugt werden; durch eine zusätzliche, durch eckige Klammern gesteuerte Verwendung eines Kellerspeichers (stack) für Turtle-Zustände können auch Verzweigungen angelegt werden. Genauere Beschreibungen der einzelnen Turtle-Befehle und der L-SystemSyntax und Semantik findet man bei Kurth (1994, 1998). Ein einfaches Beispiel verdeutlicht das Prinzip der Umformung nach Regeln: Das Alphabet des Regelsystems enthalte zwei Zeichen a und b, die morphologisch für verschiedene Knospentypen oder -zustände stehen, und die "Standardzeichen" (Turtle-Kommandos) F, RU45, [ und ]. Das Regelsystem selber bestehe nur aus den zwei Regeln a F [ RU45 b ] a, bFb. Durch die sukzessive Anwendung dieses Regelsystems auf das Startwort a erhält man die Abfolge von Zeichenketten, deren erste drei Glieder in Abbildung 3 oben dargestellt sind. Dies ist "reine Syntax", reiner Formalismus. Die geometrische Umsetzung, entsprechend der Turtle-Geometrie, erfolgt für jeden Zeitschritt einzeln (nach unten gehende Pfeile in Abb. 3) und liefert geometrische (in diesem Beispiel zweidimensionale) Strukturen. F erzeugt ein zylindrisches Segment. Symbole wie a und b, die nicht dem Turtle-Befehlsvorrat angehören, werden normalerweise nicht interpretiert; in diesem Beispiel wurden zum besseren Verständnis ovale Knospen-Schemata für diese Symbole eingesetzt. Abb. 3. Strukturerzeugung aus der Wachstumsgrammatik a F [ RU45 b ] a, b F b . (Aus Kurth 1998.) Dieses Beispiel bleibt im Bereich der "klassischen" L-Systeme. Wichtige Erweiterungen, die den Einsatzbereich solcher Regelsysteme deutlich vergrößert haben und zum zusammenfassenden Konzept der "Wachstumsgrammatiken" führen, sind: die Verwendung von Interpretationsregeln (interpretive rules), globale Sensitivität bei der Regelanwendung, die Verfügbarmachung lokaler Variablen und der Zugriff auf sie mittels arithmetisch-struktureller Operatoren, die Verwendung eines expand-Operators zur beschleunigten Abarbeitung von Subsystemen, die Möglichkeit des object instancing (einmalige Definition von Substrukturen, die mehrfach und in verschiedenen Skalierungen innerhalb ein- und desselben Modells verwendet werden können). Es würde hier zu weit führen, alle diese Erweiterungen im Detail und an Beispielen zu erläutern; es wird dazu auf Kurth (1998) verwiesen. Lediglich die ersten drei Punkte sollen etwas näher erörtert werden, da sie für das anschließende populationsdynamische Beispiel wichtig sind. Interpretationsregeln sind gesonderte Regeln, die nicht in den generativen Prozeß der Zeichenketten-Umformung zur Entwicklung neuer Strukturen (obere Zeile in Abb. 3) eingreifen, sondern deren (potentielle) Anwendung der geometrischen Interpretation unmittelbar vorgeschaltet wird. Durch die Anwendung einer solchen Regel wird also ein Zeichen "interpretiert", aber nicht für alle Zeiten umgeformt und weitertransformiert. In Abb. 3 wären die senkrechten Pfeile dementsprechend noch einmal zu unterteilen: Anwendung von Interpretationsregeln, anschließend geometrische Interpretation durch die Turtle. Beispielsweise könnten die Knospen-Ovale durch entsprechende, auf a und b anwendbare Interpretationsregeln beschrieben worden sein. In den Beispiel-Grammatiken werden wir diesen Regeltyp dadurch von den generativen Regeln unterscheiden, daß wir als Transformationssymbol einen Doppelpfeil () anstelle des einfachen Pfeils () verwenden. (GROGRA verwendet statt der Pfeile die Symbole ## für Interpretationsregeln und # für generative Regeln.) Sensitive Grammatiken beinhalten die Möglichkeit, bei der Regelanwendung Informationen aus der Umgebung oder aus der bereits erzeugten dreidimensionalen Struktur "sensitiv" aufzunehmen. Je nachdem, ob bestimmte Bedingungen erfüllt sind, wird die Regel angewandt oder nicht. Dieser Informationsfluß wird in Abbildung 4 durch die gestrichelten Pfeile von den geometrischen Strukturen S1, S2... zu den Transformationspfeilen zwischen den Zeichenketten 1, 2, ... angedeutet. Die Umgebungsinformation kann durch bestimmte Variablentypen (z.B. für Positionsinformationen) oder durch sensitive Funktionen bereitgestellt werden. Abb. 4. Schema der Strukturerzeugung durch eine sensitive Wachstumsgrammatik. Durchgezogene Pfeile: Regelanwendungen und Interpretationen. Gestrichelte Pfeile: Einfluß der erzeugten Strukturen auf die Regelanwendung (Sensitivität). Aus Kurth (1998). Beispielsweise zeigt Abbildung 5 das Austriebsverhalten eines simulierten Laubbaum-Jahrestriebes, bei dem eine sensitive Funktion die Neigung des Triebes im Verhältnis zur Vertikalen bestimmt hat. In Abhängigkeit von dieser Information werden die Tochtersprossen ausgerichtet. Andere Sensitivitäten können beispielsweise die verfügbare Lichtmenge abschätzen oder helfen, durch räumliche Nachbarschaftstests Kollisionen zwischen Objekten zu vermeiden oder Mindestabstände einzuhalten. Beispiele werden bei Kurth (1998) und bei Kurth & Sloboda (1999) beschrieben. Abb. 5: Nachbildung eines winkelsensitiven Austriebsverhaltens eines pflanzlichen Sprosses mittels einer Wachstumsgrammatik mit 4 Regeln, die auf eine sensitive Funktion zurückgreift (komplette Dokumentation der Grammatik in Kurth (1998)). Von links nach rechts variiert der über das Austriebsverhalten entscheidende Winkel des Muttertriebes zur Vertikalen von 0° über 30° bis 90°. Es sind auch die Knospen sichtbar, die die Positionen (noch nicht die Richtungen) der nächstjährigen Tochtertriebe andeuten. Simulation mit GROGRA. Die Verwendung von lokalen Variablen innerhalb eines Regelsystems eröffnet eine Brücke zum objektorientierten Paradigma. Eine lokale Variable mit dem Namen x kann mit dem Befehl K(x) an jeder Stelle in einer bereits erzeugten Struktur angelegt werden und kann eine Information über den lokal gültigen Zustand an dieser Stelle aufnehmen, z.B. einen Kohlenstoffgehalt, ein Wachstumspotential oder eine Bilanzgröße für das von dem jeweiligen Element ausgehende System. Natürlich können auch mehrere solche Variablen (mit verschiedenen Bezeichnern) dasselbe Element charakterisieren (Abbildung 6). Abb. 6. Drei sehr einfache Bäume, von denen jeder seinen eigenen Satz von drei lokalen Variablen mit den Namen x, nt und nl hat (aus Kurth 1998). Auf die Inhalte dieser Variablen kann u.a. mit Hilfe von arithmetisch-strukturellen Operatoren während der Wachstumssimulation zugegriffen werden (Summationen über bestimmte Bereiche einer räumlichen Struktur; Vergleichsoperationen). Eine Zuweisung eines neuen Wertes erfolgt während der Laufzeit der Simulation mittels des Assignment-Kommandos A(x, arithmetischer Ausdruck), wobei diejenige Instanz der Variablen x referenziert wird, die gerade "in der Nähe" der aktuell bearbeiteten Position in der virtuellen Struktur vorhanden ist (genaueres bei Kurth 1998). Eine Variante hiervon bietet der Operator KL(x), der eine neue lokale Variable mit Namen x erzeugt und ihr sofort den aktuellen "Schrittweite"-Wert (Länge) der Turtle zuweist. Die Regelsysteme für botanische, forstliche oder populationsdynamische Anwendungen erzeugen im allgemeinen so viele und auf scheinbar komplizierte Art verbundene Grundelemente, daß es nicht möglich ist, sie "per Hand" abzuarbeiten. Daher wurden verschiedene Software-Werkzeuge entwickelt, die diese Aufgabe übernehmen. Aus der Arbeitsgruppe von Przemyslaw Prusinkiewicz aus Kanada stammt die Software vlab (virtual laboratory)* mit einer Anzahl von Möglichkeiten, L-Systeme zu verarbeiten. Vom Autor wurde an der Forstlichen Fakultät der Universität Göttingen das System GROGRA entwickelt (Growth Grammar Interpreter; Kurth 1994)**. GROGRA enthält neben der Möglichkeit, Regelsysteme zu lesen und in Zeitreihen von virtuellen dreidimensionalen Strukturen umzusetzen, auch Analysewerkzeuge zur quantitativen Untersuchung dieser virtuellen Strukturen. Damit ist es möglich, regelbasiert erzeugte und reale Strukturen mit denselben Methoden zu analysieren und zu vergleichen (Abbildung 7). StrukturDaten statistische Datenanalyse (StandardSoftware) RegelsystemAufstellung theoretische Konzepte des Biologen Regeldatei GROGRA Zeitreihe von virtuellen Strukturen Abb. 7. Zur doppelten Funktion der Software GROGRA: Erzeugung virtueller Strukturen aus Wachstumsgrammatiken (Mitte) und Analyse (links), dadurch werden auch Vergleiche möglich mit realen, in GROGRA rekonstruierten Strukturen (rechter Pfad). Für die Aufstellung von Regelsystemen für bestimmte Arten oder Biozönosen ist bislang jeweils ein Einbringen theoretischer Konzepte und von Vorstrukturierungen erforderlich, so daß dieser Teil bisher noch nicht vollständig automatisiert werden kann (oben rechts). * siehe http://www.cpsc.ucalgary.ca/projects/bmv/index.html. Eine Beispiel-Anwendung von vlab im Bereich der Agrarpflanzen-Genetik stellt G. Buck-Sorlin vor unter http://mansfeld.ipk-gatersleben.de/bucksorlin. ** Die Software ist auf Anfrage vom Autor erhältlich, Dokumentationen sind im Internet verfügbar unter http://www.uni-forst.gwdg.de/uni-forst/fbi/public.html. GROGRA existiert als lauffähiges Programm auf verschiedenen Plattformen (SGI, XWindows unter Unix auf DEC, Sun, IBM Workstations, Windows95-PC, Demo-Version unter MS-DOS). Auf bestimmten Plattformen sind ergänzende Software-Werkzeuge verfügbar, z.B. ein Editor und Parser für die Erstellung und Überprüfung der Regelsysteme (GROPARS), ein Modul für die fraktale Dimensionsbestimmung (GROFANT, Grogra fractal analysis tool) und eine Darstellungssoftware für Baumschaftformen (GROBOL, Growth of boles display). Es soll nun schrittweise eine Beispiel-Wachstumsgrammatik entwickelt werden, um die Möglichkeiten der Modellierung von populationsdynamischen Modellen vorzustellen. Die einzelnen Symbole und Turtle-Kommandos, die hierfür gebraucht werden, werden gleich an Ort und Stelle erläutert. Systematischere Darstellungen der Regelsystem-Syntax und –Semantik findet man bei Kurth (1994, 1998). Das verwendete Submodell für die Pflanzen wurde in einer ähnlichen Variante bereits bei Kurth (1998, S. 253 f.) kurz vorgestellt. Es handelt sich — der Einfachheit halber — um ein zweidimensionales Modell, d.h. die Höhe wird vernachlässigt, es wird nur die Ausbreitung der Organismen in einer Ebene modelliert. Dies ist aber keinesfalls eine prinzipielle Einschränkung. Ein einfaches Pflanzenmodell Die Pflanzen (Primärproduzenten) werden in unserem Beispielmodell durch das Symbol b repräsentiert. Zu b gehören zwei Parameter: Das Alter t und eine Größe r, die den Energieoder Kohlenstoffgehalt der Pflanze quantifiziert und zugleich zu ihrem (Kronen-) Radius proportional sein soll. Wir haben somit für jede Pflanze in unserem Modell ein parametrisiertes Symbol b(t, r). Graphisch wird diese Pflanze durch einen Kreis mit Radius r dargestellt. Wie sehen nun die Regeln aus, die das Verhalten der Pflanzen bestimmen? Zunächst einmal gibt es verschiedene Regeln für die Mortalität. In einem weiterentwickelten Modell wäre es möglich, diese alle zusammenzufassen zu einer einzigen Regel, die auf einem Bilanzkriterium (Kohlenstoffmangel) beruht. Da unser Modell aber so einfach gebaut ist, daß die Photosynthese der Pflanzen mit ihrer Abhängigkeit von Licht und Konkurrenzeinflüssen darin nicht als Prozeß auftaucht, sind wir auf mehrere, unabhängige Regeln für das Absterben angewiesen: (t > bmaxage) b(t, r) , Diese Regel tritt in Kraft, wenn die Pflanze ein vorgegebenes Maximalalter (bmaxage) erreicht hat. Auf der rechten Regelseite steht "nichts", das heißt, die Pflanze verschwindet, ohne Spuren zu hinterlassen (eine Mineralisation und ein Nährstoffkreislauf werden in diesem einfachen Modell ebenfalls nicht berücksichtigt). (r < 0) b(t, r) , Dies bedeutet: Die Pflanze stirbt an Kohlenstoffmangel. r ist ja der C-Gehalt; als unterer Schwellenwert wird hier vereinfachend 0 angenommen. (sh > 0) b(t, r) , Diese Regel hat zur Folge, daß eine Pflanze an Konkurrenzwirkung (Überschattung) eingehen kann. Die Variable sh ist als sensitive Funktion definiert (Funktion Nr. 4, siehe Kurth 1998, S. 100 für Details) und liefert einen Wert > 0 zurück, wenn sich die Pflanze innerhalb des Kronenradius einer größeren Pflanze befindet. b(t, r) b(t+1, rad+bgrow) Wenn keine der Absterbe-Regeln greift, wird die Pflanze gemäß dieser Regel um eine Zeiteinheit älter, und ihr Radius wird aktualisiert. Der Wachstumsbetrag bgrow ist einfach eine Konstante. Ein Detail ist hier noch wichtig: Auf der rechten Regelseite steht nicht einfach der in der linken Regelseite verwendete Radius r, sondern eine neue Variable rad, die der Pflanze als lokale Variable zugeordnet ist und ebenfalls den Kohlenstoff-Gehalt repräsentiert. Der Grund dafür ist, daß auf diese lokale Variable extern (von Phytophagen) zugegriffen werden kann. Bei der Aktualisierung des Radius werden somit eventuelle Verluste durch Fraß bereits berücksichtigt (die Berechnung dieser Verluste erfolgt allerdings in einer anderen Regel, siehe unten). Die Initialisierung von rad mit dem Radiuswert r erfolgt in einer Interpretationsregel, die zugleich die graphische Darstellung der Pflanze spezifiziert (als Kreis; hier nicht im Detail ausgeführt): b(t, r) L(r) [ ... graphische Darstellung (Kreis) ... ] ... F KL(rad), darin ist L ein Turtle-Kommando, das die Schrittweite bzw. Länge des nächsten, zu konstruierenden Elements festlegt. F bewirkt die Erzeugung eines "Referenz-Stammes" der Pflanze (unabhängig von ihrer kreisförmigen Darstellung und in der Draufsicht nicht sichtbar), an den mit dem KL-Kommando eine neu instantiierte lokale Variable mit dem Bezeichner rad angefügt wird. Als Anfangswert erhält diese den Wert der Schrittweite, also r. Schließlich gibt es eine Reproduktionsregel, die aktiviert wird, wenn eine von zwei festen Altersstufen erreicht ist ("Mastjahre") und zugleich r einen vorgegebenen Schwellenwert überschritten hat. Diese Bedingung geht der Regel in runden Klammern voran, und in ihr werden die in der Programmiersprache C üblichen logischen Operatoren || (oder) und && (und) verwendet (vgl. Kernighan & Ritchie 1990): (((t=bgenage1) || (t = bgenage2)) && (r >= bminrad)) b(t, r) &(bgenfac*rad) [ RH(ro) + f(dist) – b(0,0) ] b(t+1, rad), Diese Regel enthält einen Wiederholungsoperator (&), der angibt, wieviele Samen ausgestreut werden. Die Anzahl (in Klammern hinter &) ist proportional zum Kronenradius. Der Wiederholungsfaktor bezieht sich auf die gesamte Zeichenkette, die in spitze Klammern eingeschlossen ist. Jeder dieser Samen wird in eine zufällige Richtung (ro: Zufallsvariable zwischen 0 und 360°) und um eine ebenfalls zufällig bestimmte Distanz (dist) fortgeschleudert. (Die Symbole + und – stellen sicher, daß die Ausbreitung in der horizontalen Ebene erfolgt.) Der Pflanzensame selbst wird durch b(0,0) symbolisiert — eine Pflanze mit Radius 0 und noch ohne erworbenen Energievorrat. Die Pflanze selbst (b ganz rechts in der Regel) altert bei diesem Vorgang (erster Parameter t+1), stellt aber ihr Wachstum vorübergehend ein (Fortfall des Inkrements bgrow im zweiten Parameter, vgl. die Wachstumsregel oben). Die Pflanzen bleiben natürlich ortsfest. Das Bewegungssymbol f (für "forward") ist nur den Samen vorangestellt, und durch die eckigen Klammern [ ] bleibt seine Wirkung auf den mittleren, wiederholten Teil der rechten Regelseite beschränkt. Bereits mit diesem einfachen Modell (5 generative Regeln, eine Interpretationsregel; die Variablen- und Konstantendeklarationen haben wir vorerst fortgelassen), das nur Pflanzen simuliert, erhält man reichhaltige räumliche Muster. Es bilden sich mit der Zeit Klumpungen kleinerer Pflanzen sowie größere Bestandeslücken, die später wiederbesiedelt werden. Abbildung 8 zeigt eine Momentaufnahme: Die Draufsicht auf den Bestand, wie er sich nach 54 Zeitschritten darstellt. Begonnen worden war diese Simulation im ersten Zeitschritt mit einer einzigen Pflanze in der Mitte. Abb. 8. Pflanzenbestand nach 54 Zeitschritten, wie er sich aus der oben angegebenen Wachstumsgrammatik ergibt. Die Interaktion der Pflanzen erfolgt über die Beschattungsregel. Die Punkte ohne umgebenden Kreis stellen Pflanzensamen dar, die im nächsten Zeitschritt austreiben werden. Simulation mit GROGRA. Ein einfaches Tiermodell Die Tiere werden in der Wachstumsgrammatik durch das Symbol a ("animal") repräsentiert. Wie bei den Pflanzen beschränken wir uns auf eine einzige Art und somit auch auf eine einzige trophische Ebene (Phytophagen). Wieder gibt es zwei Parameter: Alter t und Energieoder Kohlenstoffgehalt e. Die Darstellung der Tiere erfolgt duch einen kleinen Kreis. Um das Reproduktionsverhalten so einfach wie möglich zu halten, nehmen wir an, daß sich die Tiere durch Teilung vermehren. Wir könnten uns darunter also Mikroorganismen vorstellen. Es genügt diesmal eine einzige Sterblichkeitsregel: (e 0) a(t, e) , (auch hier ist die rechte Seite leer, die organische Materie wird also nicht in das System zurückgeführt). Im Unterschied zu den Pflanzen haben wir es bei den Tieren mit mobilen Organismen zu tun, in jedem Zeitschritt bewegen sie sich in eine zufällige Richtung. Wenn ein Tier nicht in Kontakt mit einer Pflanze ist, befindet es sich auf Nahrungssuche und macht weitere Bewegungen (Distanz long). Dabei ist ein Energieverlust (respi) zu verkraften: a(t, e) RH(ro) + f(long) – a(t+1, e–respi), Dieser Regel wird eine Regel vorangestellt, die dann angewandt wird, wenn das Tier in Kontakt mit einer Pflanze gekommen ist. Der Kontakt mit der Pflanze wird wieder durch eine sensitive Funktion (f) festgestellt: (f > 0) a(t, e) RH(ro) + f(short) – a(t+1, e+eat–respi) Ar+(rad, –eat), hier ist die Bewegungsdistanz (short) kürzer als bei der Nahrungssuche. Der Energievorrat wird zwar auch um den Betrag respi vermindert, es erfolgt aber zusätzlich eine Aufstockung durch den von der Pflanze aufgenommenen Betrag eat. Diese Kohlenstoff-Menge wird der Wirtspflanze zugleich abgezogen durch die Assignment-Anweisung Ar+(rad, –eat), die auf die der Pflanze zugeordnete lokale Variable mit dem Namen rad zugreift. An dieser Stelle erfolgt also die externe Veränderung des Radius (bzw. des Energiegehalts) der Pflanze. — Die Vermehrung der Tiere erfolgt dann, wenn ihr Energiegehalt einen Schwellenwert überschritten hat (sie also genug "gewachsen" sind): (e > thr) a(t, e) [ RH(ro) + f(short) – a(0, e/2 – respi) ] RH(ro) + f(short) – a(0, e/2 – respi), beide "Nachkommen" bewegen sich in zufällige Richtungen davon und erhalten den halben Energiebetrag des Eltern-Tieres, abzüglich eines Respirationsverlustes. Wie für die Pflanzen, gibt es auch für die Tiere eine Interpretationsregel. Jedem Tier entspricht eine durch den Turtle-Befehl F(0) erzeugte elementare Einheit, die die Länge 0 hat und die durch Pl und Dl spezifizierten Farb- und Durchmesser-Werte zugewiesen bekommt: a(t, e) Pl(if(t<0, 5, 2)) Dl(0.2*e) F(0), wobei die Farbe nach einer Fallunterscheidung (if-Konstruktion) vergeben wird. Man sieht, daß sich hier in die Regelsprache auch prozedurale Programmierkonzepte integrieren lassen! — Die Farbgebung dient lediglich der Unterscheidung aktiver Tiere von "schlafenden" Tieren (oder "Sporen"), die aus einem rein technischen Grund eingeführt wurden, nämlich um am Anfang nicht gleich mit aktiven Pflanzenfressern starten zu müssen. Die folgende Zusatzregel, die für das Systemverhalten eigentlich entbehrlich ist, legt fest, daß Tiere, die am Anfang der Simulation mit einem negativen Altersparameter versehen wurden, ohne Energieverbrauch "weiterschlafen", bis ihre "innere Uhr" auf 0 vorgerückt ist: (t<0) a(t, e) a(t+1, e), wobei diese Regel nur am Anfang eines Simulationslaufes Verwendung finden wird. Man kann natürlich mit mehreren Pflanzen und Tieren in unterschiedlichen Anordnungen beginnen; wir geben hier eine Startregel an mit nur je einem Exemplar: * [ RH(ro) + f(random) – a(–15, 4) ] P3 b(0,0), womit die für die Entwicklung des Systems wesentlichen Regeln vollständig aufgezählt sind. Wir haben insgesamt 16 Parameter in dem Modell verwendet, die in Deklarationen spezifiziert und dem Regelsystem vorangestellt werden. Die gesamte Wachstumsgrammatik (mit Deklarationen) wird in der Form, wie die GROGRA-Software sie verarbeiten kann, noch einmal in Tabelle 1 aufgelistet. \const \const \const \const \const bgrow 0.9, respi 0.26, eat 1.2, thr 8, short 0.4, /* /* /* /* /* growth of plants */ respiration of animals */ consumption plant -> animal */ threshold for animal reprod */ movement of eating animal */ \const long 20, /* movement of searching animal */ \const bmaxage 30, /* max age of plant */ \const bgenage1 10, /* age of first plant reprod */ \const bgenage2 18, /* age of second plant reprod */ \const bminrad 8, /* min radius of plant required for reprod */ \const bgenfac 0.28, /* coefficient plant radius -> nb of offspring */ \const ang 45, /* angle of light sensitivity of plants */ \var ran uniform 5 15, /* start movement of animal */ \var ro uniform 0 360, /* random rotation */ \var dist uniform 15 50, /* distance of plant offspring */ \var i index, /* running index in circle approximation */ \var rad local 0, /* energy pool of plant, corresp. to radius */ \var len length, /* equivalent to radius of plant */ \angle 90, \var f function 21 1, /* sensitive function checking adjacent plant */ \var sh function 4 1, /* sensitive function calculating shadow */ \randomseed 1, \axiom circ 1, /* construction of circle representing plant */ \axiom * 1-150, /* number of time steps for simulation */ * # [ RH(ro) + f(ran) – a(–15, 4) ] P3 b(0,0), /* 1 animal, 1 plant (t < 0) a(t,e) # a(t+1, e), (e <= 0) a(t,e) # , /* animal starving */ (e > thr) a(t,e) # [ RH(ro) + f(short) – a(0, e/2 – respi) ] /* animal RH(ro) + f(short) – a(0, e/2 – respi), /* reprod (f(3) > 0) a(t, e) # RH(ro) + f(short) – a(t+1, e + eat – respi) Ar+(rad, –eat), /* animal eating from plant Ar+(x, y) # , a(t,e) # RH(ro) + f(long) – a(t+1, e - respi), /* animal, searching (t > bmaxage) b(t,r) # , /* plant, dying from old age */ (r < 0) b(t,r) # , /* plant, dying from loss of biomass */ (sh(ang) > 0) b(t,r) # , /* plant, dying from lack of light */ (((t=bgenage1) || (t=bgenage2)) && (r >= bminrad)) b(t,r) # &(bgenfac*rad) < [ RH(ro) + f(dist) - b(0,0) ] > b(t+1, rad), /* reprod of plants */ b(t,r) # b(t+1, rad + bgrow), /* plant, growing */ */ */ */ */ */ /* interpretive rules: */ a(t, e) ## Pl(if(t<0,5,2)) Dl(0.2*e) F(0), b(t,r) ## L(r) [ Pl1 Dl1 O(circ, 1) ] f(r) RU180 N(100) Dl(0.1) F KL(rad), circ ## P3 + &(30) < [ f1 S(i) ] RL12 > &(29) < C(i,i+1) > C(29,0) Tabelle 1. Sensitive Wachstumsgrammatik für ein zweidimensionales populationsdynamisches Modell mit Primärproduzenten und Phytophagen, lesbar für GROGRA und mit Kommentaren. Ergebnisse Es sind bisher keine systematischen Modell-Läufe gemacht worden, um den Parameterraum des Modells gründlich zu explorieren. Ziel dieses Artikels ist es aber gar nicht, Detail-Ergebnisse über dieses oder ähnliche Populationsmodelle von Pflanzen und Pflanzenfressern zu präsentieren, sondern es geht darum, die Eignung des Formalismus der sensitiven Wachstumsgrammatiken für die Spezifikation solcher Modelle unter Beweis zu stellen. Wir begnügen uns damit, zu zeigen, daß unser Beispielmodell ein "interessantes Verhalten" an den Tag legt. Das heißt konkret, daß sich sowohl räumlich, als auch zeitlich differenzierte Muster bilden können, die den lokal wirkenden Regeln nicht von vornherein anzusehen waren (Emergenz). Welche Muster sich entfalten, hängt natürlich stark von der Wahl der Parameter ab. Abbildung 9 zeigt eine Momentaufnahme aus einem Simulationslauf, der mit einer einzigen Pflanze und einem einzigen Tier (ungefähr in der Mitte des gezeigten Ausschnitts der ModellEbene) begonnen hat. Gezeigt ist der Zustand nach 100 Zeitschritten. Die Phytophagen sind als kleine, schwarze Punkte vorwiegend in der Mitte und in der linken Bildhälfte vertreten (im Original-Display farbig). Abbildung 10 zeigt dieselbe Simulation nach 160 Zeitschritten. Die Phytophagen wirken deutlich auf die Pflanzenpopulation und erzeugen wesentlich größere Bestandeslücken als diejenigen, die in den Simulationsläufen ohne Tiere (vgl. Abb. 8) auftreten. Abb. 9. Schritt 100 aus einem Simulationslauf mit der vorgestellten Wachstumsgrammatik, Blick von oben auf den Bestand. Die Pflanzen werden durch graue Kreise repräsentiert, die Tiere durch schwarze Punkte. Abb. 10. Schritt 160 aus demselben Simulationslauf wie Abb. 9. Bei einer anderen Parametrisierung des Modells kann es passieren, daß der Bestand durch den Einfluß der Phytophagen völlig in einzelne Inseln zerfällt (Abbildung 11). Abb. 11. Schritt 160 aus einem anderen Simulationslauf mit veränderter Parametrisierung. Abhängig von der Wahl der Parameter können sich auch in der zeitlichen Dynamik des Systems ganz unterschiedliche Verhaltensweisen herausbilden. Abbildung 12 zeigt einen Simulationslauf, bei dem die Individuenzahlen der Pflanzen (durchgezogene Linie) sowie der Tiere (gestrichelt) bis zum 160. Zeitschritt relativ stetig ansteigen. Über das spätere Verhalten des Systems läßt sich aus diesem nach Schritt 160 abgebrochenen Simulationslauf noch nichts aussagen. Abb. 12. Entwicklung der Individuenzahl (durchgezogene Linie: Pflanzen, gestrichelte Linie: Pflanzenfresser) in einem Simulationslauf mit anwachsenden Populationen. Ein gegenteiliges Verhalten sehen wir in Abbildung 13 (mit anderer Parametrisierung gewonnen): Es kommt nach ca. 125 Schritten zu einem völligen Aussterben der Pflanzenpopulation. Von den Tieren sind am Ende des Simulationslaufes (Schritt 160) zwar noch viele vorhanden, diese sind aber auch zum Aussterben verurteilt, da ihnen die Nahrung fehlt. Das System "kollabiert" also. Möglich ist aber bei entsprechend veränderten Parametern auch die in Abbildung 14 dargestellte, wesentlich "interessantere" Dynamik, bei der sich erst ein starkes Überhandnehmen der Phytophagen mit entsprechender Dezimierung des Pflanzenbestandes ergibt, bei der aber danach der Tierbestand wieder zurückgeht und die Pflanzenpopulation sich zu erholen beginnt. Um zu überprüfen, ob es zu weiteren solchen Fluktuationen kommt, müßte man das Modell noch über die ausgeführten 250 Simulationsschritte hinaus laufen lassen. Abb. 13. Entwicklung der Individuenzahl in einem Simulationslauf mit Kollaps des Systems (Aussterben beider Arten). Abb. 14. Entwicklung der Individuenzahl in einem Simulationslauf mit langfristigen Schwankungen in den Populationsstärken. Als Vorteile des Modellansatzes gegenüber anderen Populationsmodellen zeigen sich: Das Modell ist leicht manipulierbar (Parameter und / oder ganze Regeln können leicht verändert werden, ohne daß die Software neu kompiliert werden müßte), die Regeln sind zum großen Teil intuitiv verständlich und beschreiben unmittelbar das Verhalten der Pflanzen und Tiere, es sind auch die "local histories" bestimmter Pflanzen oder bestimmter Regionen in der Modell-Ebene erfaßbar — so wären auch Vergleiche mit realen Bestandesausschnitten möglich, das Zustandekommen von Singularitäten (Katastrophen) im System kann im Detail studiert werden (vgl. Breckling 1990). Einige mögliche Erweiterungen des vorgestellten Beispielmodells liegen auf der Hand: Man kann mehrere trophische Ebenen einführen (Räuber), wie dies z.B. in dem objektorientierten Modell von Breckling (1990), welches allerdings nicht mit Wachstumsgrammatiken spezifiziert war, bereits geschehen ist, es läßt sich durch Erweiterung der Regeln und durch Hinzunahme neuer Regeln ein komplexeres Such- und Reproduktionsverhalten der Phytophagen modellieren, ebenso läßt sich für die Pflanzen ein detaillierteres Wachstums- und Konkurrenzmodell implementieren (für Ansätze der Realisierung eines Kohlenstoffhaushalts in grammatikbasierten Pflanzenmodellen siehe Kurth & Sloboda 1997), eine weiterführende Ergänzung, die in den Bereich "Artificial Life" verweist (siehe z.B. Langton 1989, Wilke et al. 1998), wäre die Weitergabe nicht nur von Kohlenstoff-Quantitäten, sondern auch von genetischer Information bei der Vermehrung. Ein Mechanismus hierfür ließe sich unschwer im Rahmen der Vermehrungs-Regeln für Pflanzen und Tiere durch die Mitführung weiterer formaler Parameter bei den Symbolen b und a realisieren. Wenn zusätzlich Mutationen eingeführt werden, erhalten wir eine künstliche Evolution. So ließe sich zum Beispiel die Suchstrategie der Tiere genetisch steuern und "evolutiv" optimieren. Die Universalität des Ansatzes der Grammatiken zeigt sich auch darin, daß es möglich war, ganz unterschiedliche Pflanzenmodelle aus der Literatur damit "nachzubauen" (Kurth, submitted). Für populationsdynamische Modelle der hier vorgestellten Art mit mehreren Arten wurde dies bisher allerdings noch nicht versucht. Eine Schwäche der bisherigen Wachstumsgrammatiken ist es aber, daß die sensitiven Funktionen und Interaktionsmechanismen darin nicht vollständig spezifiziert werden können. Eine Verbesserung der Mächtigkeit der Regelsprache wäre hier sinnvoll. Beispielsweise greifen die Funktionen f und sh in dem oben vorgestellten Beispiel auf besondere, in der Programmiersprache C geschriebene Routinen zurück, die dem Modellierer, der nur die Regeln manipuliert, nicht unmittelbar zugänglich sind. Ihre Wirkungsweise ist sehr speziell, und wenn sie verändert werden sollen, muß die Software GROGRA neu kompiliert werden. Dadurch geht ein Teil der Unabhängigkeit und Flexibilität, die durch den Formalismus der Wachstumsgrammatiken gewonnen wurde, wieder verloren. Es ist geplant, durch zukünftige Erweiterungen des Formalismus hier Abhilfe zu schaffen. Danksagung Der Verfasser dankt Herrn Prof. Dr. Dr.h.c. Branislav Sloboda für das erwiesene Vertrauen und für die erhaltene Förderung am Institut für Forstliche Biometrie und Informatik der Universität Göttingen, wo die hier vorgestellten Forschungen durchgeführt wurden. Außerdem gilt Herrn PD Dr. Broder Breckling der Dank für motivierende Anregungen. Literatur Acock, B., and Reynolds, J.F. (1997): Introduction: modularity in plant models. Ecological Modelling, 94, 1-6. Bartlett, M.S., and Hiorns, R.W., Eds. (1973): The Mathematical Theory of the Dynamics of Biological Populations. Academic Press, London (347 S.). Breckling, B. (1990): Singularität und Reproduzierbarkeit in der Modellierung ökologischer Systeme. Dissertation, Universität Bremen, Fachber. 2. Breckling, B. (1996): An individual based model for the study of pattern and process in plant ecology: An application of object oriented programming. EcoSys, 4, 241-254. Chien, T.W., and Jürgensen, H. (1992): Parameterized L systems for modelling: Potential and limitations. In: G. Rozenberg, A. Salomaa (eds.), Lindenmayer Systems. Springer, Berlin, 213-229. DeAngelis, D.L., and Gross, L.J. (1992): Individual Based Models and Approaches in Ecology. Populations, Communities and Ecosystems. Chapman & Hall, New York. Ermentrout, G.B., and Edelstein-Keshet, L. (1993): Cellular automata approaches to biological modelling. J. Theor. Biol., 160, 97-133. Goel, N.S., and Rozehnal, I. (1992): A high-level language for L-systems and its applications. In: G. Rozenberg and A. Salomaa (eds.), Lindenmayer Systems. Springer, Berlin, 231-251. Kurth, W. (1994): Growth Grammar Interpreter GROGRA 2.4. Introduction and reference manual. Berichte des FZW Göttingen, Ser. B, Bd. 38. Kurth, W. (1998): Die Simulation der Baumarchitektur mit Wachstumsgrammatiken. Habilitationsschrift, Universität Göttingen (erscheint Anfang 2000 im Wissenschaftlichen Verlag Berlin). Kurth, W. (submitted). The universality of growth grammars: Models of Bell, Pagès, and Takenaka revisited. Ann. For. Sci. Kurth, W., and Sloboda, B. (1997): Growth grammars simulating trees — an extension of L-systems incorporating local variables and sensitivity. Silva Fennica, 31, 285-295. Kurth, W., and Sloboda, B. (1999): Tree and stand architecture and growth described by formal grammars. II. Sensitive trees and competition. Journal of Forest Science, 45, 53-63. Langton, Ch.G., ed. (1989): Artificial Life. Santa Fe Institute Studies in the Sciences of Complexity, Vol. VI. Addison-Wesley, Redwood City. Lindenmayer, A. (1968): Mathematical models for cellular interactions in development. J. Theor. Biol., 18, 280299, 300-315. Lippman, St.B., and Lajoie, J. (1998): C++ Primer. 3rd ed., Addison-Wesley, Reading (1236 S.). Middelhoff, U., and Breckling, B. (1998): Nutrient uptake and growth of an Alnus glutinosa stand: An individual based model on the interaction of plant and soil. Bayreuther Forum Ökologie, 52, 189-203. Prusinkiewicz, P.; Lindenmayer, A., and Hanan, J. (1988): Developmental models of herbaceous plants for computer imagery purposes. Computer Graphics (ACM / SIGGRAPH), 22 (4), 141-150. Prusinkiewicz, P.; James, M., and Mech, R. (1994): Synthetic topiary. Computer Graphics Proceedings, Annual Conference Ser., 1994, 351-358. Wilke, C.; Altmeyer, St., and Martinez, Th., Hg. (1998): Third German Workshop on Artificial Life. Verlag Harri Deutsch, Frankfurt.