Archiv der Kategorie: Parallelprogrammierung

UNIVERSELLE PROZESSE PLANEN – Simulationen mergen (= kombinieren, vereinigen); Parallelprogrammierung als Standard

UNIVERSELLE PROZESSPLANUNG
3.Aug 2021 – 3.Aug2021
URL: oksimo.org
Email: info@oksimo.org

Autor: Gerd Doeben-Henisch (gerd@oksimo.org)

KONTEXT

Dieser Text ist Teil des Themas UNIVERSELLE PROZESSE PLANEN – Wie geht das? im oksimo.org Blog.

SIMULATIOINEN MERGEN (= KOMBINIEREN, VEREINIGEN); Parallelprogrammierung als Standardfall

In einem früheren Post ist schon ein einfaches Beispiel vorgestellt worden, in dem zwei verschiedene Simulationen zu einer einzigen Simulation vereinigt worden sind. Dazu wurden aus dem oksimo Menü

Welcome to Oksimo v0.11.aba5

MAIN MENU
1 is NEW VISION
2 is MANAGE VISIONS
3 is VISION COLLECTIONS
4 is NEW STATE
5 is MANAGE STATES
6 is STATE COLLECTIONS
7 is NEW RULE
8 is MANAGE RULES
9 is RULE DOCUMENT
10 is NEW SIMULATION
11 is MANAGE SIMULATIONS
12 is LOAD SIMULATION
13 is COMBINE SIMULATIONS
14 is SHARE
15 is EXIT SIMULATOR
Enter a Number [1-15] for Menu Option

die Option 13 is COMBINE SIMULATIONS benutzt.

Vorausgesetzt, man hat mindestens zwei Simulationen S1 undS2, dann kann man diese gegebenen Simulationen mit ‚combine‘ (‚kombinieren‘) zu einer Simulation vereinigen und unter einem neuen Namen abspeichern.

Getrennt trotz Vereinigung

In dem zitierten Beispiel war dies einmal die Simulation zeit1-SIM1 gewesen und die Simulation time1-SIM1. Im Prinzip waren diese beiden Simulationen sehr ähnlich. In zeit1-SIM1 ist der Hauptakteur allerdings ein Mann und die Simulation ist in Deutscher Sprache, und in time1-SIM1 ist die Hauptakteurin eine Frau und die Simulation ist in Englisch. Nach der Vereinigung beider Simulationen laufen beide Simulationen als eine Simulation ab. Man erkennt dies nur darin, dass sich der Deutsche und der Englische Text mischen. Die Abläufe der beiden Simulationen ändern sich aber ansonsten inhaltlich nicht.

Echte Interaktion = Parallelprogrammierung als Multithreading

Das Kombinieren von getrennten Simulationen macht allerdings erst richtig Sinn, wenn man mögliche Wechselwirkungen zwischen unterschiedlichen Prozessen sichtbar machen und ausnutzen kann. Wie im Abschnitt Simulatorkern beschrieben wird, bearbeitet der oksimo Simulator Prozesse grundsätzlich parallel, und zwar so, dass sich die Wirkungen überlagern können. Dies hat Vor- und Nachteile. Als nachteilig kann man empfinden, dass man als Drehbuchschreiber unerwünschte Überlagerungseffekte explizit neutralisieren muss. Andererseits ist es ein Vorteil, Überlagerungseffekte zu haben, da diese im realen Alltag den Normalfall bilden. Die bisherigen Experimente sprechen dafür, dieser Überlagerungseffekte als Vorteil zu sehen.

So kann man im folgenden sehr einfachen — Beispiel erkennen, wie zwei individuelle Prozesse jeder für sich eine Art normalen Ablauf haben. Vereinigt man aber beide Prozesse, so können sie unmittelbar eine Interaktion/ Wechselwirkung entfalten, einfach nur, weil sie simultan ausgeführt werden.

STORY für S1

  1. Es ist Mittags 12:00. Gerd ist hungrig.
  2. Gerd beschließt 100% zur Pizzeria zu gehen.
  3. Gerd isst.
  4. Wenn Gerd Chris trifft dann 100% redet er mit Chris.
    1. Wenn Gerd mit Chris redet, dann 100% haben beide neue Ideen.
  5. Gerd ist nicht hungrig.
  6. Es ist Nachmittag
  7. Weiter zu (1)

STORY für S2

  1. Es ist Mittags 12:00. Chris ist hungrig.
  2. Chris beschließt 100% zur Pizzeria zu gehen.
  3. PIZZERIA: Chris isst.
  4. Wenn Chris Gerd trifft dann 100% redet er mit Gerd.
    1. Wenn Christ mit Gerd redet, dann 100% haben beide neue Ideen.
  5. Chris ist nicht hungrig.
  6. Es ist Nachmittag
  7. Weiter zu (1)

Wie man unschwer erkennen kann, sind beide Geschichten nahezu gleich. Es gibt allerdings zwei verschiedenen Akteure (Gerd, Chris), die jeweils individuell, separat ihren Prozess leben können.

SIMULATION Story S1 alleine

dev GERD-PIZZERIA2-SIM1

Enter maximum number of simulation rounds

10

Your vision:
Gerd ist nicht hungrig.
Initial states:
Gerd ist hungrig.,Es ist Mittags 12:00.

Round 1

Rules:
GERDMEETSCHRIS1 not applied (conditions not met)
INPIZZERIA2 not applied (conditions not met)
GERDNACHMITTAG2 not applied (conditions not met)
ZURPIZZERIA2 applied (Prob: 100 Rand: 0/100)
GERDNACHESSEN1 not applied (conditions not met)
Current states: Gerd beschließt zur Pizzeria zu gehen.,Es ist noch Mittags.,Gerd ist hungrig.

0.00 percent of your vision was achieved by reaching the following states:
None

Round 2

Rules:
GERDNACHESSEN1 not applied (conditions not met)
ZURPIZZERIA2 not applied (conditions not met)
INPIZZERIA2 applied (Prob: 100 Rand: 13/100)
GERDMEETSCHRIS1 not applied (conditions not met)
GERDNACHMITTAG2 not applied (conditions not met)
Current states: Gerd ist in der Pizzeria.,Es ist noch Mittags.,Gerd ist hungrig.,Gerd isst.

0.00 percent of your vision was achieved by reaching the following states:
None

Round 3

Rules:
GERDNACHESSEN1 applied (Prob: 100 Rand: 64/100)
GERDNACHMITTAG2 not applied (conditions not met)
ZURPIZZERIA2 not applied (conditions not met)
GERDMEETSCHRIS1 not applied (conditions not met)
INPIZZERIA2 not applied (conditions not met)
Current states: Gerd ist nicht hungrig.,Gerd ist in der Pizzeria.,Es ist noch Mittags.,Gerd isst.

100.00 percent of your vision was achieved by reaching the following states:
Gerd ist nicht hungrig.,

Round 4

Rules:
INPIZZERIA2 not applied (conditions not met)
ZURPIZZERIA2 not applied (conditions not met)
GERDNACHESSEN1 applied (Prob: 100 Rand: 75/100)
GERDNACHMITTAG2 applied (Prob: 100 Rand: 27/100)
GERDMEETSCHRIS1 not applied (conditions not met)
Current states: Es ist Nachmittag.,Gerd ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Gerd ist nicht hungrig.,

Round 5

Rules:
GERDNACHMITTAG2 not applied (conditions not met)
ZURPIZZERIA2 not applied (conditions not met)
GERDNACHESSEN1 not applied (conditions not met)
GERDMEETSCHRIS1 not applied (conditions not met)
INPIZZERIA2 not applied (conditions not met)
Current states: Es ist Nachmittag.,Gerd ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Gerd ist nicht hungrig.,

Round 6

Rules:
ZURPIZZERIA2 not applied (conditions not met)
GERDMEETSCHRIS1 not applied (conditions not met)
GERDNACHMITTAG2 not applied (conditions not met)
GERDNACHESSEN1 not applied (conditions not met)
INPIZZERIA2 not applied (conditions not met)
Current states: Es ist Nachmittag.,Gerd ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Gerd ist nicht hungrig.,

Round 7

Rules:
GERDNACHMITTAG2 not applied (conditions not met)
GERDNACHESSEN1 not applied (conditions not met)
INPIZZERIA2 not applied (conditions not met)
GERDMEETSCHRIS1 not applied (conditions not met)
ZURPIZZERIA2 not applied (conditions not met)
Current states: Es ist Nachmittag.,Gerd ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Gerd ist nicht hungrig.,

Man kann aus den aktuellen Zuständen (‚current states‘) entnehmen, dass Gerd Mittags zur Pizzeria gegangen ist, weil er hungrig ist, dort gegessen hat und er dann nicht mehr hungrig war. Mittlerweile war es Nachmittag. Die andere Geschichte verläuft sehr ähnlich:

SIMULATION Story S2 alleine

Enter the name of the wanted simulation:

dev CHRIS-PIZZERIA2-SIM11

Enter maximum number of simulation rounds

10

Your vision:
Chris ist nicht hungrig.
Initial states:
Chris ist hungrig.,Es ist Mittags 12:00.

Round 1

Rules:
INPIZZERIA2b not applied (conditions not met)
CHRISNACHESSEN1 not applied (conditions not met)
ZURPIZZERIA2b applied (Prob: 100 Rand: 0/100)
CHRISNACHMITTAG2 not applied (conditions not met)
CHRISMEETSGERD1 not applied (conditions not met)
Current states: Chris ist hungrig.,Chris will zur Pizzeria zu gehen.,Es ist noch Mittags.

0.00 percent of your vision was achieved by reaching the following states:
None

Round 2

Rules:
CHRISMEETSGERD1 not applied (conditions not met)
CHRISNACHMITTAG2 not applied (conditions not met)
INPIZZERIA2b applied (Prob: 100 Rand: 20/100)
CHRISNACHESSEN1 not applied (conditions not met)
ZURPIZZERIA2b not applied (conditions not met)
Current states: Chris ist hungrig.,Chris ist in der Pizzeria.,Es ist noch Mittags.,Chris isst.

0.00 percent of your vision was achieved by reaching the following states:
None

Round 3

Rules:
CHRISMEETSGERD1 not applied (conditions not met)
INPIZZERIA2b not applied (conditions not met)
CHRISNACHESSEN1 applied (Prob: 100 Rand: 34/100)
ZURPIZZERIA2b not applied (conditions not met)
CHRISNACHMITTAG2 not applied (conditions not met)
Current states: Chris ist in der Pizzeria.,Es ist noch Mittags.,Chris isst.,Chris ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Chris ist nicht hungrig.,

Round 4

Rules:
CHRISNACHESSEN1 applied (Prob: 100 Rand: 12/100)
CHRISMEETSGERD1 not applied (conditions not met)
INPIZZERIA2b not applied (conditions not met)
ZURPIZZERIA2b not applied (conditions not met)
CHRISNACHMITTAG2 applied (Prob: 100 Rand: 81/100)
Current states: Es ist Nachmittag.,Chris ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Chris ist nicht hungrig.,

Round 5

Rules:
INPIZZERIA2b not applied (conditions not met)
CHRISMEETSGERD1 not applied (conditions not met)
ZURPIZZERIA2b not applied (conditions not met)
CHRISNACHMITTAG2 not applied (conditions not met)
CHRISNACHESSEN1 not applied (conditions not met)
Current states: Es ist Nachmittag.,Chris ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Chris ist nicht hungrig.,

Round 6

Rules:
ZURPIZZERIA2b not applied (conditions not met)
CHRISMEETSGERD1 not applied (conditions not met)
CHRISNACHMITTAG2 not applied (conditions not met)
CHRISNACHESSEN1 not applied (conditions not met)
INPIZZERIA2b not applied (conditions not met)
Current states: Es ist Nachmittag.,Chris ist nicht hungrig.

Round 7

Rules:
INPIZZERIA2b not applied (conditions not met)
CHRISNACHESSEN1 not applied (conditions not met)
CHRISNACHMITTAG2 not applied (conditions not met)
ZURPIZZERIA2b not applied (conditions not met)
CHRISMEETSGERD1 not applied (conditions not met)
Current states: Es ist Nachmittag.,Chris ist nicht hungrig.

100.00 percent of your vision was achieved by reaching the following states:
Chris ist nicht hungrig.,

Kombination von zwei Drehbüchern mit Wechselwirkung

Die Frage ist, ob diese beiden Prozesse, die isoliert ohne besondere Vorkommnisse ablaufen, bei Vereinigung neue (‚emergente‘) Eigenschaften zeigen? [1] – [3] Ein kurzer Test zeigt zunächst, dass dies der Fall ist.

Vereinigte Simulation S12 aus S1 und S2 herstellen

Enter the name of the wanted simulation:

> GERD-PIZZERIA2-SIM1

Enter the name of another simulation or leave empty to save:

> CHRIS-PIZZERIA2-SIM11

Enter the name of another simulation or leave empty to save:

>

Enter name for combined simulation:

> GERD-CHRIS-PIZZARIA-2

Saved!

Testen der neuen vereinigten Simulation S12

Enter the name of the wanted simulation:

> dev GERD-CHRIS-PIZZARIA-2

Enter maximum number of simulation rounds

> 15

Your vision:

Chris ist nicht hungrig.,Gerd ist nicht hungrig.

Initial states:

Es ist Mittags 12:00.,Gerd ist hungrig.,Chris ist hungrig.

Round 1

Rules:

CHRISMEETSGERD1 not applied (conditions not met)

INPIZZERIA2b not applied (conditions not met)

ZURPIZZERIA2 applied (Prob: 100 Rand: 73/100)

CHRISNACHMITTAG2 not applied (conditions not met)

INPIZZERIA2 not applied (conditions not met)

GERDNACHMITTAG2 not applied (conditions not met)

GERDMEETSCHRIS1 not applied (conditions not met)

CHRISNACHESSEN1 not applied (conditions not met)

ZURPIZZERIA2b applied (Prob: 100 Rand: 87/100)

GERDNACHESSEN1 not applied (conditions not met)

Current states: Gerd ist hungrig.,Chris ist hungrig.,Gerd beschließt zur Pizzeria zu gehen.,Chris will zur Pizzeria zu gehen.,Es ist noch Mittags.

0.00 percent of your vision was achieved by reaching the following states:

None

Round 2

Rules:

CHRISNACHMITTAG2 not applied (conditions not met)

GERDNACHESSEN1 not applied (conditions not met)

GERDNACHMITTAG2 not applied (conditions not met)

ZURPIZZERIA2b not applied (conditions not met)

GERDMEETSCHRIS1 not applied (conditions not met)

INPIZZERIA2b applied (Prob: 100 Rand: 73/100)

CHRISMEETSGERD1 not applied (conditions not met)

INPIZZERIA2 applied (Prob: 100 Rand: 20/100)

CHRISNACHESSEN1 not applied (conditions not met)

ZURPIZZERIA2 not applied (conditions not met)

Current states: Gerd ist hungrig.,Chris ist hungrig.,Es ist noch Mittags.,Gerd ist in der Pizzeria.,Chris ist in der Pizzeria.,Chris isst.,Gerd isst.

0.00 percent of your vision was achieved by reaching the following states:

None

Round 3

Rules:

GERDMEETSCHRIS1 applied (Prob: 100 Rand: 30/100)

INPIZZERIA2 not applied (conditions not met)

GERDNACHMITTAG2 not applied (conditions not met)

ZURPIZZERIA2b not applied (conditions not met)

CHRISNACHESSEN1 applied (Prob: 100 Rand: 78/100)

ZURPIZZERIA2 not applied (conditions not met)

CHRISMEETSGERD1 applied (Prob: 100 Rand: 57/100)

CHRISNACHMITTAG2 not applied (conditions not met)

GERDNACHESSEN1 applied (Prob: 100 Rand: 70/100)

INPIZZERIA2b not applied (conditions not met)

Current states: Gerd hat gute Ideen.,Chris redet mit Gerd.,Chris hat gute Ideen.,Gerd ist in der Pizzeria.,Chris isst.,Gerd isst.,Gerd redet mit Chris.

,Chris ist nicht hungrig.,Chris ist in der Pizzeria.,Gerd ist nicht hungrig.,Es ist noch Mittags.

100.00 percent of your vision was achieved by reaching the following states:

Chris ist nicht hungrig.,Gerd ist nicht hungrig.,

Round 4

Rules:

CHRISNACHMITTAG2 applied (Prob: 100 Rand: 81/100)

CHRISNACHESSEN1 applied (Prob: 100 Rand: 61/100)

GERDNACHESSEN1 applied (Prob: 100 Rand: 82/100)

ZURPIZZERIA2 not applied (conditions not met)

GERDNACHMITTAG2 applied (Prob: 100 Rand: 85/100)

INPIZZERIA2 not applied (conditions not met)

GERDMEETSCHRIS1 applied (Prob: 100 Rand: 86/100)

INPIZZERIA2b not applied (conditions not met)

CHRISMEETSGERD1 applied (Prob: 100 Rand: 42/100)

ZURPIZZERIA2b not applied (conditions not met)

Current states: Gerd ist nicht hungrig.,Gerd redet mit Chris.,Gerd hat gute Ideen.,Chris ist nicht hungrig.,Chris redet mit Gerd.,Chris hat gute Ideen.

,Es ist Nachmittag.

100.00 percent of your vision was achieved by reaching the following states:

Chris ist nicht hungrig.,Gerd ist nicht hungrig.,

Resultate

In Runde 3 geschieht etwas Neues im Vergleich zu den Einzelausführungen. Beide Akteure reden miteinander und haben gute Ideen.

Wie ist dies möglich?

Im Entwicklermodus (dev) zeigen Simulationen alle Regeln an, die jeweils angewendet oder nicht angewendet wurden, dabei fallen die folgenden vier Regeln auf:

GERDMEETSCHRIS1 applied (Prob: 100 Rand: 30/100)

CHRISNACHESSEN1 applied (Prob: 100 Rand: 78/100)

CHRISMEETSGERD1 applied (Prob: 100 Rand: 57/100)

GERDNACHESSEN1 applied (Prob: 100 Rand: 70/100)

Im Gegensatz zu den Einzelausführungen gibt es bei der simultanen Ausführung für jeden Akteur zwei Regeln, die zusätzlich ausgeführt werden. Diese nehmen explizit Bezug auf das mögliche Ereignis, dass der eine den anderen trifft.

Schauen wir uns beispielhaft eine Regel an:

Rule:GERDMEETSCHRIS1

Conditions:

Chris ist in der Pizzeria.

Gerd ist in der Pizzeria.

Probability: 1.0

Positive Effects:

Gerd redet mit Chris.

Gerd hat gute Ideen.

Negative Effects: —

Diese Regel besagt, dass wenn sowohl Gerd als auch Chris in der Pizzeria sind (Condition, Bedingung), dann soll mit einer 100%-Wahrscheinlichkeit der Fall eintreten, dass beide miteinander reden (= Positiver Effekt). Ein negativer Effekt wird nicht notiert.

Bei Einzelausführung tritt der Fall nicht ein, wohl aber bei kombinierter Ausführung.

Es liegt als beim Drehbuchautor, welche Fälle dieser vorsiehet, damit sie — wenn es dann soweit ist — aktiv werden.

Erinnert man die anderen Beispiele, die in diesem Blog schon vorgestellt wurden, dann kann man sich leicht vorstellen, wie man solche kombinierten Drehbücher sehr leicht weiter mit Komplexität vollpacken kann (unterschiedliche Wahrscheinlichkeiten, mehr Fallunterscheidungen, …).

ANMERKUNGEN

[1] Parallele Programmierung, Wikipedia [DE]: https://de.wikipedia.org/wiki/Parallele_Programmierung

[2] Multithreading, Wikipedia [DE]: https://de.wikipedia.org/wiki/Multithreading

[3] Wenn zwei Systeme S1 und S2 gegeben sind, die zusammen ein Phänomen P zeigen, das bei Einzelausführung nicht vorkommt, dann kann man dieses Phänomen P als ‚emergent‚ charakterisieren.