GOWEBCounter by INLINE

GOWEBCounter by INLINE


  • 23.12.2000

Beziehungskiste aka Party-Planer ©2000 Wolfgang Golder


Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 der Lizenz oder (wenn Sie es wünschen) jeder späteren Version.
Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen von Nutzen sein wird, aber OHNE JEDE GEWÄHRLEISTUNG - sogar ohne die implizite Gewährleistung der MARKTREIFE oder der EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.
Sie sollten eine Kopie der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, schreiben Sie an die Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Dieses Projekt ist einfach nur Spaß für mich :-) Es basiert auf einem Artikel aus Spektrum der Wissenschaft, Computer-Kurzweil III den ich seit 1989 aufbewahre (ja, ich weiß, daß ich ein bißchen plemplem bin :-) Ich hatte es schon auf dem Amiga umgesetzt; und jetzt reizt es mich die Psion Gemeinde damit zu beglücken :-)


Den nachstehenden Text habe ich aus o.g. Quelle übernommen.


Original von A.K.Dewdney


< Zitat an>

Die elektronische Beziehungskiste


Die soziale Dimension des Computers illustriert eine Computer-Party, auf der ein illustres Völkchen nach einem Gleichgewicht der gegenseitigen Kommunikation sucht.


Vor kurzem gab ich eine Party, bei der ich leider nicht persönlich anwesend sein konnte. Meine acht Gäste waren recht illustre Persönlichkeiten mit ausgefallenen Berufen. Da wäre zum Beispiel Wilhelm zu nennen (Name von der Redaktion geändert), ein passionierter Gewichtsheber. Willi, wie er im Freundeskreis vertraulich gerufen wird, hatte sich hoffnunglos in einen anderen Gast verliebt, Prinzessin Penelope, eine gebildete, sensible Frau mit aristokratischem Anspruch. Willi versuchte unentwegt, näher an sie heranzurücken; doch sie hielt sich genauso absichtsvoll und konstant von ihm fern. Quantitativ ausgedrückt, hätte Willi am liebsten den ganzen Abend genau 90cm von Penelope entfernt verbracht (noch näher wäre unschicklich gewesen). Penelope dagegen fühlte sich nicht wohl, wenn nicht 4,5 Meter zwischen ihr und ihrem Bewunderer lagen. Sobald Willi sich aber weiter von ihr entfernte, rückte Penelope ihrerseits vorsichtig auf ihn zu. Vielleicht genoß sie seine bewundernden Blicke. Wahrscheinlich ahnen Sie längst, daß die Party in meinem Computer stattfand. Die Gäste wurden auf dem Bildschirm durch Buchstaben dargestellt. Willi war zum Beispiel ein W und Penelope ein P.


Minimierung des Misbehagens

Im Verlauf der Party drifteten die acht Gäste in scheinbar endloser Suche nach einem Gleichgewicht ihrer sozialen Beziehungen unablässig durch den Raum. Hin und wieder bildeten sich Grüppchen aus Gästen in trauter Kommunikation. Doch schon bald wurden sie durch das Hinzutreten einer weiteren Person zerstreut, welche die heikle Balance in subtiler Weise störte. Jeder Gast hatte einen Wunschabstand von jedem anderen. Er bewegte sich immer in eine Richtung, in der sich sein Mißbehagen verringerte. Bei meiner - zugegebenermaßen konstruierten (und stereotypen) - Party wurde das Mißvergnügen eines jeden Gastes durch die Summe der Differenzen zwischen den tatsächlichen und den erwünschten Entfernungen zu allen anderen Gästen gemessen. Die Gäste befanden sich in einem rechteckigen Raum, in dessen Mitte ein großer Tisch mit verlockenden Appetithäppchen stand. Auch zu diesem Tisch hatte jede Person ihren Wunschabstand. Schlankheitsapostel bevorzugten eine Entfernung von 1,5 Meter, während andere nur zufrieden waren, wenn sie sich bis auf 30 Zentimeter herangekämpft hatten. Damit ist nicht gesagt, daß der durchschnittliche Gast, der nicht gerade eine Hungerkur machte, schnurstracks zum Tisch hin strebte. Kuno der Künstler hätte vielleicht gern von den leckeren digitalen Soßen probiert, aber Gero der Geschäftsmann, den er nicht leiden konnte, stand im Weg und dozierte über die Prinzipien des Marketings. Das Programm, das die Party simuliert, wird von seinem Erfinder Richard Goldstein Party-Planer genannt. Rich Gold, wie er lieber genannt werden will, ist Computerkünstler und Spieleerfinder. Er lebt in Los Angeles und ist durch sein Computerspiel „The Little Computer People“ bekannt geworden. Dieses Programm zeigt einen Querschnitt durch ein Haus, in dem ein kleines Männchen seinen täglichen Geschäften nachgeht. Gold nennt sein Programm nicht ohne Grund Party-Planer. Er behauptet, daß man damit den Ablauf einer geplanten Party - gewissermaßen ihre Interaktionsdynamik - vorhersehen könne, wenn man die wahrscheinlichen Beziehungen zwischen den eingeladenen Gästen in dem Programm codiere. Man kann vielleicht sogar den besten Platz für den Tisch mit den Snacks bestimmen.


Das Party-Programm


Golds Computer-Party läßt sich in einem Raum abhalten, der mit einem 20x30 Raster in 600 Felder aufgeteilt ist. Jeder Gast besetzt ein Feld. Party-Planer betrachtet nun eine Person nach der anderen. Dabei bewegt es sie probehalber auf die acht Nachbarfelder. Für jede dieser neuen Positionen berechnet es dann das kumulierte Mißbehagen des Gastes. Jenes Nachbarfeld, auf dem sich der Gast am wenigsten unwohl fühlt, wird zu seinem neuen Platz. Eine solche Party zu organisieren erfordert nur ein Minimum an Programmiererfahrung. Die 20x30 Matrix nennen wir Zimmer. Da die Einträge in diese Matrix aus Buchstaben bestehen, muß Zimmer als Zeichenfeld definiert werden. Die Wände und der Tisch mit den Erfrischungen werden durch feste Zeichen symbolisiert. Party-Planer hat eine recht einfache Struktur, die sich in zwei Ebenen beschreiben läßt, einer äußeren und einer inneren. Die äußere besteht aus einer Schleife, in der alle Partygäste durch das Zimmer bewegt werden, bis der Benutzer die Leertaste drückt. In unserem Pseudocode läßt sie sich wie folgt beschreiben:


REPEAT

i=1 to 8

bewege den i-ten Gast

stelle das Zimmer auf dem Bildschirm dar

UNTIL Leertaste wird gedrückt


Innerhalb der REPEAT Schleife liegt eine zweite Schleife, in der für jeden Gast der jeweils nächste Platz ermittelt wird. Wie das geschieht, werde ich weiter unten genauer erklären. Die Darstellung des Zimmers erfordert ihrerseits eine doppelte Schleife, die die Einträge der Matrix Zimmer durchsieht, nachdem die neuen Positionen der Gäste berechnet sind. Mit Hilfe der beiden Indices j und k wird dabei Zimmer(j,k) bestimmt und das Zeichen, das dort steht, auf der entsprechenden Stelle des Bildschirms angezeigt. Das Bewegen des i-ten Gastes ist eine etwas kompliziertere Operation, da dessen neue Position von den Positionen alles anderen Gäste und seinem Wunschabstand von ihnen abhängt. Dazu muß Party-Planer eine Tabelle enthalten, in der steht, welche Idealentfernungen der Gast in einer Zeile gern von einem Gast in einer Spalte hätte. Solch eine Matrix, wir wollen sie Wunsch nennen, muß in dem Programm als DATA-Anweisung enthalten sein oder aus einer externen Datei eingelesen werden.


Heikle Abstandsbalance


Der Eintrag Wunsch(i,j) enthält die Entfernung, die der i-te Gast gern von dem j-ten Gast hätte. Dieser Wert muß nicht derselbe sein, wie der in Wunsch(j,i). Beispielsweise wäre Willi gern einen Meter von Penelope entfernt, aber Penelope möchte lieber fünf Meter Abstand von Willi halten. Zwei Felder, x und y, enthalten die augenblicklichen Positionen der acht Partygäste. Innerhalb eines jeden Berechnungszyklus belegt der i-te Gast die Position mit den Koordinaten x(i) und y(i). Das Mißbehagen des i-ten Gastes wird nun folgendermaßen berechnet.


Altsum = Summe

Summe = 0

FOR j = 1 TO 8

dist2 = [x(i)-x(j)]2+[y(i)-y(j)]2

dist = SQRT(dist2)

Summe = Summe + ABS [dist - Wunsch(i,j)]


Die FOR-Schleife läßt man dabei nicht nur für die augenblickliche Position x(i) und y(i) des i-ten Gastes durchlaufen, sondern auch für die acht Nachbarfelder. Das ergibt zusammen 9 solcher Berechnungen. Zu Beginn jeder neuen Berechnung speichert das Programm den alten Wert von Summe in der Variablen altsum, da es ihn später zum Vergleich benötigt. Dann wird die Variable Summe auf 0 gesetzt, die Entfernung des i-ten vom j-ten Gast berechnet und der Betrag der Differenz zwischen der wirklichen Entfernung und der idealen Entfernung (aus der Sicht des i-ten Gastes) in der Variablen Summe aufaddiert. Nach der FOR-Schleife vergleicht das Programm den neuen Wert in Summe mit dem alten in altsum. Ist der neue kleiner, muß Party-Planer sich seine Koordinaten merken. Das folgende algorithmische Fragment zeigt, wie sich das bewerkstelligen läßt:


IF Summe < altsum

THEN xx = x(i)

yy = y(i)


Auf diese Weise merkt sich das Programm jeweils die Koordinaten, die bis dahin den geringsten Wert für das Mißbehagen des i-ten Gastes ergeben haben. Nachdem dessen Unzufriedenheit in allen neun Feldern berechnet worden ist, kommt er auf das Feld, auf dem er sich relativ am wohlsten fühlt. Die neun Berechnungen lassen sich am einfachsten mittels einer doppelten Schleife bewerkstelligen, innerhalb derer die Variablen x und y statt x(i) und y(i) verwendet werden. x läuft also von x(i)-1 bis x(i)+1 und y von y(i)-1 bis y(i)+1. Am einfachsten addiert man die Inkremente dx und dy auf x(i) beziehungsweise y(i):


FOR dx = -1 TO 1

FOR dy = -1 TO 1

x = x(i)+dx

y = y(i)+dy


Maßnahmen gegen Rowdytum


Damit nicht alles drunter und drüber geht, sollte den Gästen nicht erlaubt werden, durch die Wände oder über den Tisch zu laufen. Bevor ein neues Koordinatenpaar (x,y) ausprobiert wird, muß Party-Planer deshalb feststellen, ob es im Zimmer und nicht auf dem Tisch liegt. In der Matrix Zimmer der hier beschriebenen Programmversion befinden sich die vier Wände bei x=1, x=30, y=1 und y=20. Stimmt eine der Positionskoordinaten des i-ten Gastes mit der entsprechenden Wandkoordinate überein, muß die Berechnung des Mißbehagens ganz übersprungen werden. Entsprechend belegt der Tisch in meinem Zimmer die x-Koordinaten 10 bis 15 und die y-Koordinaten 9 bis 11. Liegt x innerhalb des ersten und y gleichzeitig innerhalb des zweiten Wertepaares, dann ist ein Gast drauf und dran, sich die Sympathien des Gastgebers durch Sachbeschädigung zu verscherzen. Wieder wird die Berechnung des Mißbehagens übersprungen. Puristen mögen vielleicht auch verbieten lassen, daß Gäste übereinander weg laufen. Aber derart unsoziales Verhalten passiert in gut geplanten Parties so selten, daß man auf eine entsprechende Abfrage verzichten kann. Der Programmierer startet Party-Planer, indem er für jeden Gast eine Anfangsposition vorgibt. Das kann über die Tastatur geschehen, oder das Programm verteilt die Leute von sich aus zufällig im Zimmer. In diesem Falle muß man natürlich darauf achten, daß niemand in einer Wand oder auf dem Tisch plaziert wird. Magi, mein kybernetischer Gehilfe, hat Variationen von Party-Planer ausprobiert. Warum, überlegte er, muß für jeden Gast festgelegt sein, welchen Abstand er zu jedem anderen wünscht? Vielleicht haben einige Gäste überhaupt keine besonderen Vorlieben oder Abneigungen gegenüber bestimmten anderen Teilnehmern der Party. In diesem Fall trägt Magi eine -1 in das entsprechende Feld der Entfernungsmatrix ein. Wenn das Programm dann die Vorlieben dieser Gäste füreinander berechnet, fragt es zuerst den Wert für die Wunschentfernung ab. Ist er -1, wird die Berechnung übersprungen. Der andere Gast trägt dann überhaupt nicht zum Wohlbefinden oder Mißbehagen des fraglichen Gastes bei. Spaßeshalber sollten Sie mit verschiedenen Raumgestaltungen, Gästezahlen und Entfernungsmatrizen herumexperimentieren. Gold hat sogar vorgeschlagen, Parties zu veranstalten, bei denen die Gäste wahllos von der Straße weg eingeladen werden. Die Matrix für die Wunschabstände wird dann einfach mit Zufallswerten aus einem passenden Bereich, etwa 1 bis 25, aufgefüllt. Es ist faszinierend, mit verschiedenen wohldurchdachten Gästelisten zu experimentieren. Manchmal lassen sich die Ergebnisse vorhersagen. Wenn zum Beispiel alle Idealentfernungen größer sind als der Durchmesser des Zimmers, werden sämtliche Partygäste zu Mauerblümchen; sie drücken sich verschämt an den Wänden herum - in dem vergeblichen Bemühen, allen anderen Gästen aus dem Weg zu gehen. Sind dagegan alle Wunschabstände klein, bilden die Gäste voraussichtlich einen einzigen Konversationspulk am Snacktisch. Lustige Spielchen kann man beobachten, wenn man einen geschlossenen Kreis einseitiger Vorlieben eingibt: A liebt B, aber B haßt A, B liebt C, aber C haßt B und so weiter, bis sich der Kreis bei A wieder schließt. Je nachdem wie die Gäste anfangs verteilt werden, wird man Zeuge einer endlosen Jagd mit gelegentlichen romantischen Wirbeln und Sackgassen.


Soziale Distanz und dynamische Systeme


Der Begriff der Idealentfernung ist nicht nur eine mathemathische Fiktion. Verhaltenswissenschaftler benutzen ein ähnliches Konzept: die soziale Distanz. Im täglichen Zusammenleben nehmen wir - je nach Bewegungsfreiheit und Beziehung zu der jeweiligen Person - automatisch eine bestimmte Entfernung zueinander ein. Nach bisherigen Erkenntnissen hängen die sozialen Distanzen teilweise vom Kulturkreis, der Stellung und dem Geschlecht der anderen Person ab. Deutsche fühlen sich beispielsweise im Gespräch mit Ausländern aus einem Land mit kleineren sozialen Distanzen leicht beengt. Dieses Phänomen können sie in einem Gruppenexperiment mit Party-Planer selbst studieren. Lassen Sie die eine Hälfte der Gäste einen Wunschabstand von 30 Zentimetern von allen anderen haben und die andere Hälfte eine Idealentfernung von einem Meter. Werden die Gäste unter diesen Umständen ewig umherirren, oder stellt sich irgendwann schließlich eine stabile Konfiguration ein? Diese Fragen führen uns mir nichts dir nichts in das Gebiet der dynamischen Systeme. Abstrakt gesehen, besteht eine Computer-Party, wie ich sie hier beschrieben habe, aus einer Entfernungsmatrix, einem zweidimensionalen zellulären Raum (sei er endlich oder unendlich) und Objekten, die sich im Feld einer Potentialfunktion bewegen. Aus der Sicht eines gegebenen Objekts (hier eines Gastes) ist dieser Raum eine gewellte Fläche. Die Höhe an jedem Punkt entspricht dem Wert der Potentialfunktion für das jeweilige Objekt. Dieser besteht einfach aus der Summe der Diferenzen zwischen den Einträgen in der Wunschabstands-Matrix für das betreffende Objekt und seinen tatsächlichen Entfernungen zu den anderen Objekten. Die Bewegung eines Objekts enspricht der eines Balles, der sich unter Gravitationseinfluß auf der gewellten Fläche bewegt. Der Ball will immer „abwärts“ rollen. Deshalb sagt Gold, die Gäste seiner Computer-Parties suchen unablässig nach Tälern des Wohlbefindens. Gleichzeitig aber sieht die Landschaft für jedes Objekt anders aus. Eines Gastes Tal des Wohlbefindens ist vielleicht eines anderen Gastes Berg des Mißbehagens. Der zelluläre Raum kann ein Partyzimmer, eine unendliche Fläche oder eine geschlossene torusförmige Fläche sein, wie sie in dieser Rubrik schon oft vorgkommen ist. Die Fragen, die sich stellen, sind immer dieselben: Welche Entfernungsmatrizen führen letztlich zu einer stabilen, statischen Konfiguration der Objekte, und welche erzeugen ein periodisches Verhalten? Die zweite Frage ist nur für unendliche Räume sinnvoll; denn in einem endlichen Raum muß sich eine Konfiguration irgendwann wiederholen. Danach durchlaufen die Objekte unweigerlich eine zyklische Folge von Konstellationen. Welche Matrizen lassen bei der zweidimensionalen unendlichen Ebene niemals periodisches Verhalten zu? Gold hat für Party-Planer eine interessante geographische Anwendung untersucht. Laden Sie die acht größten Städte der Bundesrepublik zu einer Computer-Party ein (in einem ziemlich großen Raum...) und nehmen Sie als Idealentfernungen ihre wirklichen Entfernungen voneinander. Wenn Sie diese „Gäste“ nun am Anfang zufällig im Raum verteilen und sie sich nach den Spielregeln frei bewegen lassen, passiert etwas höchst erstaunliches: Normalerweise kommen sie in einer Lage zur Ruhe, die den richtigen geographischen Orten entspricht! Lassen Sie sich dabei nicht durch irritieren, daß die entstehende Landkarte gegenüber der gewöhnlichen Orientierung möglicherweise verdreht oder gespiegelt ist. Man sieht die Entsprechung ganz deutlich. Vermutlich tritt dieses Phänomen für jede Entfernungsmatrix auf, die wirklichen Entfernungen zwischen Punkten einer Ebene entspricht. Als Künstler verfolgt Gold mit Party-Planer übrigens ganz andere Absichten, die er mit dem Begriff algorithmischer Symbolismus umreißt. Das Programm entstand nicht, weil Gold Parties planen mußte, sondern weil er Bilder gestalten wollte. Er schreibt: „Diese Bilder sollten aus einer Anzahl von Objekten bestehen, etwa Orangen, Äpfeln, Violinen, Hämmern und so weiter. Ich wollte sie so malen, daß ähnliche Objekte auf der Leinwand nahe beieinander lägen und unähnliche weit voneinander entfernt. Entsprechend hatte ich eine Tabelle aufgestellt, die die Idealentfernungen eises jeden Objekts von jedem anderen angab; aber es stellte sich heraus, daß es nicht leicht war, eine Anordnung, die ihr genügte, rein optisch zu finden... Ich begann mich daher zu fragen, was wohl passieren würde, sich selbst zu bewegen und sich ihre Positionen auf eigene Faust zu suchen. Ich war gar nicht gefaßt auf den herrlichen Tanz, den sie daraufhin vollführten, um ihre Unlustgefühle zu minimieren. Das war die Geburtsstunde von Party-Planer“.

< Zitat aus>


Soweit der Artikel aus Spektrum der Wissenschaft. Das Ergebnis meiner „Progammiermeisterleistung“ :-) könnt ihr im Programm Beziehungskiste bewundern! Natürlich sind die Werte für Wand, Tisch, Wünsche anderst als beschrieben. Eben auf den Psion angepaßt. Die Funktion ist aber die gleiche. Somit sollten auch eventuelle Fragen was das Programm macht beantwortet sein. Achtung: das Programm läuft ohne Probleme auf meinem S5Classic UK, und auf dem Emulator. Bisher habe ich noch keine Berichte ob oder nicht, das Programm auch auf anderen Maschinen rennt. S5mx und netBook sollten funktionieren, REVO hat einen kleinen Bildschirm. Falls Bedarf besteht, könnte man das anpassen. Übrigens: wenn der Wunsch 0 ist wird die Berechnung übersprungen. Die sinnvollsten Werte bewegen sich zwischen 1 und 9 soweit ich das im Moment sagen kann. Bei großen Werten kleben die Gäste an der Wand.


Beziehungskiste Version 0.77 ALPHA (15.11.2000)

die Installation erfolgt händisch -> Programmdateien (alles was mit BKiste beginnt) nach ...System/Apps/BKiste


flotterDreier, alleneune, StarandFans in ein beliebiges Verzeichnis (ob die mitgelieferten Files sinnvoll sind? (bessere Files könnt ihr an mich schicken) - hat das Programm überhaupt einen Sinn? - kann sich überhaupt jemand vorstellen um was es geht?) In diesen Dateien werden die Namen der Gäste, die Position des Tisches und die Wünsche gespeichert.