BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- Selbstlebende Welt? (http://www.black-board.net/thread.php?threadid=23163)


Geschrieben von theromi am 21.01.2008 um 22:24:

Fragezeichen Selbstlebende Welt?

Hi,

mich quält schon seit zwei Tagen ein etwas komplexeres Problem. Also, ich bin kein wirklicher Profi was Programmieren angeht, alles was ich weiß ist wie ich das ein oder andere Programm zusammenschmeisse, halt was man so im Informatik-Unterricht mitbekommt, dazu kommen ein paar kleine Programme für den Eigenbedarf.

Nun, wie gesagt, ich überlege seit zwei Tagen hin und her wie man eine quasi "selbstlebende Welt" realisieren würde. Dabei gehe ich einfach mal von 100 (als Beispiel) "Lebewesen" beider Geschlechter aus, die alle ein eigenes Leben führen, natürlich incl. Heiraten, Beruf, Religion usw. Dabei müsste z.B. ein Ehepaar nach ihrer Heirat natürlich ihr Leben aufeinander abstimmen, oder nach der Geburt ihrer Kinder.
Sehr kompliziert, aber da es hier nur um die Theorie geht, lassen sich die Möglichkeiten eines solchen Lebens ja erstmal sehr weit abstecken Augenzwinkern

Also, bis jetzt bin ich mit meinem Gedankengang so weit, dass ich sagen würde, dass ich eine Klasse "Lebenwesen" erstelle, die alle diese Eigenschaften (Ehepartner, Religion usw.) beinhaltet und davon 100 Stück erzeuge. Dann würde das Programm nichts anderes machen als der Reihe nach (bzw. parallelisiert), in einer Endlosschleife, die möglichen Aktionen eines solchen Lebewesens anzusehen und die "Beste" (oder auch mal nicht die Beste, verläuft ja nicht immer alles nach Plan im Leben Augen rollen ) auszuführen.
Fürs Heiraten würde ich dann z.B. alle heiratsfähigen Männer und Frauen auf einen Stapel schreiben, auf den ein heiratswilliges Lebewesen dann zugreifen kann, und sich seinen Lebenspartner aussuchen kann, wenn es an der Zeit ist.

Ist das so in der Art der Weg, den man bei sowas einschlagen würde?

Hoffentlich gibt es Leute, die das genauso interessiert wie mich großes Grinsen
Roman



Geschrieben von Micha am 21.01.2008 um 22:30:

 

Also ich finde die Idee echt super! Mach das mal!!! Freude Freude



Geschrieben von phlox81 am 21.01.2008 um 22:35:

 

Es gibt recht einfache beispiele für ähnliche Programme, das bekannteste dürfte das "Spiel des Lebens" sein, wo einfach nach bestimmten Regeln Spielsteine entstehen oder nicht.

Ich selber habe mal eine etwas aufwändigere Welt realisiert, in der es auch verschiedene Tierarten gab etc. Hauptproblem ist immer, diese Welten stabil zu halten, da Resourcen etc. verteilt sein müssen und schließlich auch noch bei einer räumlichen Darstellung diese auch einbezogen werden kann.
Ich habe mich jedoch immer auf Tiere bezogen, nicht auf Menschen oder Gesellschaften. Sicher sind da auch Simulationsmodelle möglich, die einfacher stabil zu halten sind.

Ich habe zur Zeit Überlegungen zu einem Ansatz, mit dem sich Eigenschaften vererben ließen (verspreche mir davon eine bessere Anpassung und damit Stabilität), aber mir fehlt die Zeit dies zu implementieren. Dies ist nämlich i.d.R. sehr aufwendig.

Auch bei deinem Ansatz würde ich dir raten, erstmal nur das Notwendigste berücksichtigen, später lässt es sich ja erweitern.

phlox



Geschrieben von LX am 21.01.2008 um 22:39:

Achtung

Geht's dir denn darum, wie man das jetzt konkret programmiertechnisch umsetzen könnte oder eher darum, Ideen zu sammeln, was es alles zu beachten gilt und wie man das eher konzeptionell realisieren kann?

Wenn letzteres, dann müsstest du erstmal überlegen, wie denn deine "Menschen" zusammenkommen. Man könnte es mal abstrakt so betrachten, dass die Objekte alle irgendwann mal zufällig mit den anderen in Kontakt kommen und dann basierend auf bestimmten Eigenschaften gegenseitig ausgewertet wird, ob da "mehr draus wird" oder eben auch nicht. Man könnte quasi für jeden Menschen eine "Glücksfunktion" bauen, die aber relativ individuell sein müsste. Wenn dann 2 Objekte zusammentreffen und bei beiden die "Glücksfunktion" basierend auf den Eigenschaften des jeweils anderen Objektes auf einen positiven Wert kommt, dann bilden die beispielsweise ein Paar und interagieren dann in der folgenden Zeit häufiger miteinander und seltener mit den anderen Objekten.

Genauso kann es aber dann später mal der Fall sein, dass die Glücksfunktion beim Zusammentreffen mit einem anderen Objekt einen noch besseren Wert erreicht. So könnte man Trennung und eine neue Beziehung vereinfacht umsetzen. Außerdem könnte man auch noch berücksichtigen, dass einige Objekte vielleicht gar keinen andersgeschlechtlichen Partner suchen, oder dass einige auch Dreierbeziehungen akzeptieren würden. Es kommt drauf an, wie abstrakt oder konkret du das betrachten willst Augenzwinkern



Geschrieben von HeaD am 21.01.2008 um 22:45:

 

Ich bin schon ewig (und auch ewig nimmer weil ich da grad Pause mache) mit einem ganz ähnlichen Thema beschäftigt...

Dein Vorhaben ist für den Anfang allerdings etwas hart.. ich habe auch erstmal wieder einen Schritt zurückgesteckt, anfangs, um dann erstmal das Grundprinzp zu haben.

Ich würde z.B. mit einer Insektensimulation beginnen. Dann erstellst Du Deine Klassen.

Du benötigst einmal Spawnpunkte für Nahrung.. Das bedeutet, Du hast einfach einen Punkt, den Du zeichnen läßt und diesen lässt Du immer wachsen.

Dann erstellst Du kleine andere Punkte, welches die erste Form von Lebewesen darstellt.. Diese sind darauf aus zu Futtern und sich zu vermehren.
Diese haben eine bestimmte Anzahl von Lebensenergie, die langsam sinkt. Sie müssen es schaffen, sich Essen zu suchen, bevor sie verhungern. Außerdem müssen sie sich paaren. Für die Paarung solltest Du eine Art Geschlechtsreife erstellen und ein Mindestalter. Ja ein Alter sollten sie auch haben und einen Zeitraum an dem sie sterben.

Danach erstellst Du nochmal solche Viecher, aber die sollten sich dann von der ersten Lebensform ernähren.

Das Ganze kannst Du beliebig weiterführen mit weiteren Wesen.

Der Trick ist dann dabei, ein Gleichgewicht zu schaffen, so das alle Lebensformen und die Nahrung möglichst lange durchhält. Wenn Du es in Angriff nimmst, wirst Du feststellen, daß eine Lebensform sich evlt. explosionsartig vermehrt. Oder die Nahrung ausgeht.. Wenn das passiert, hat natürlich der Rest nichts zu essen und alles stirbt aus Augenzwinkern

Falls ich meins jemals fertig bekomme, kann ichs gerne mal posten smile



Geschrieben von Nightwolf am 21.01.2008 um 23:01:

 

Sowas ähnliches wie HeaD schreibt, durften wir vor kurzem in einem Praktikum machen (siehe http://www.sec.informatik.tu-darmstadt.de/index.php?page=pages/lehre/WS07-08/gdi3/material.html Praktikum 5). War ganz interessant an der "KI" herumzuoptimieren, ist allerdings nicht allzu komplex (aber für den Einstieg vielleicht genau das richtige).



Geschrieben von theromi am 21.01.2008 um 23:03:

 

Wow, danke für die Antworten großes Grinsen

Stimmt, was ich vergessen hatte zu sagen, es geht mir nicht darum, dass ich das wirklich umsetzten will. Bei mir steht momentan das Problem an sich, bzw. die dazugehörige Lösung, im Vordergrund, und ob mein Gedankenweg denn schon in die richtige Richtung geht, sowie die Ideen von Anderen zu sammeln.
Solch eine Welt am Computer zu "schaffen", dabei will ich mich natürlich an die Einschräkungen und Freiheiten halten, die mir der Computer gibt, es aber erstmal nicht zu technisch betrachten.

HeaDs Vorschlag finde ich sehr interessant, damit kann man klein anfangen, und daraus nachher etwas "Großes" bauen. Die nächsten Ferien kommen bestimmt Augenzwinkern
Das was LX beschrieben hat, habe ich mir auch so ungefär gedacht. Ein Algorythmus der bewerten kann, wie sich Menschen zueinander verhalten würden, basierend auf ihren Eigenschaften. Kann man nachher sogar als echte Partnervermittlung benutzten großes Grinsen



Geschrieben von phlox81 am 22.01.2008 um 21:40:

 

Hm, hab mein altes Projekt gerade wieder ausgegraben und ein wenig optimiert.
Ich häng die exe einfach mal an. Falls jemand den Code haben will, PN an mich Augenzwinkern

Zu theromis problem:

Man könnte versuchen eine Stadt zu modilieren, in der es dann verschiedene Orte(Schule, Supermarkt, Kneipe, Disco, Kirche), gibt, an denen sich die Menschen begegnen können, und so Verknüpfungen unter einander bilden.

phlox



Geschrieben von HeaD am 22.01.2008 um 22:21:

 

Was genau passiert denn da? Ich seh nur 12 Millionen Buchstaben (mindestens)

Zitat:
Original von phlox81
Man könnte versuchen eine Stadt zu modilieren, in der es dann verschiedene Orte(Schule, Supermarkt, Kneipe, Disco, Kirche), gibt, an denen sich die Menschen begegnen können, und so Verknüpfungen unter einander bilden.


Genau das war mal mein Plan. Ich hab dafür nen ganzen Haufen geschrieben, also kein Quellcode, sondern Ideen, was man machen könnte usw.

Allerdings bin ich kein Stück mehr fit in C und in Blitzbasic ist das ganze etwas nervig, weil man keine richtigen Klassen hat.. im Nachfolger BlitzMax gibt es sowas zwar, aber da muss ich mich noch reinwuseln +fg+

Wenn Interesse besteht, kann ich gerne mal meien Gedanken dazu posten, vllt. hat ja jemand Interesse sich da anzuschliessen. Ich persönlich würde es zwar in BlitzMax machen, aber "Code ist Code".. das Grundprinzip eines Algorythmus ist ja immer umsetzbar und Grafiken bräuchte man auch (da vergeht mir immer die Lust, wenn man keine Grafiken hat +fg+)



Geschrieben von theromi am 22.01.2008 um 22:52:

 

Zitat:
Original von HeaD
Wenn Interesse besteht, kann ich gerne mal meien Gedanken dazu posten, vllt. hat ja jemand Interesse sich da anzuschliessen. Ich persönlich würde es zwar in BlitzMax machen, aber "Code ist Code".. das Grundprinzip eines Algorythmus ist ja immer umsetzbar und Grafiken bräuchte man auch (da vergeht mir immer die Lust, wenn man keine Grafiken hat +fg+)

Also, ich wäre dabei. Von BlitzMax habe ich zwar noch nie etwas gehört, aber bei Grafiken kann ich aushelfen großes Grinsen
Zumindest deine Ideen dazu würden mich interessieren.

Bei phlox81s Programm haben bei mir die Rehe "gewonnen", warum weiß ich aber nicht. Wäre ganz lieb, wenn du dazu sagen könntest, welches Tier die anderen in welcher Art beeinflusst.



Geschrieben von phlox81 am 22.01.2008 um 22:54:

 

Zitat:
Original von HeaD
Was genau passiert denn da? Ich seh nur 12 Millionen Buchstaben (mindestens)


Naja, die Ausgabe passt nicht ganz in die Konsole. Wenn du vergrößerst, wird es wohl was klarer.

Jeder Buchstabe hat eine Bedeutung:

g - Gras
b - Busch
B - Baum
a - Aas

T - Tiger
R - Reh
A - Affe
E - Elefant

Tiger frisst Rehe und Affen
Reh frisst Gras und Büsche
Affe frisst Büsche und von Bäumen
Elefant frisst Büsche und Bäume

Es geht eigentlich nicht um das Gewinnen. Die Rehe sind einfach am robustesten. Beinflussen tun sich alle arten, besonders stehen Rehe und Affen in Konkurrenz, und Tiger sind natürlich die Feinde von Rehen und Affen.

Würde übrigens eine Hochsprache für das Projekt empfehlen, C++ z.B. oder Java.

phlox


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH