macht jemand beim icfp04 mit?
-
Ich hab das ganze nur mal kurz überflogen, wie funktionieren die Ameisen denn genau?
Wenn ich es richtig verstanden habe, dann schreibt jeder Teilnehmer seine Ameisen in nem speziellen Code für ne Finishing State Machine, oder?
-
SirLant schrieb:
Ich hab das ganze nur mal kurz überflogen, wie funktionieren die Ameisen denn genau?
Wenn ich es richtig verstanden habe, dann schreibt jeder Teilnehmer seine Ameisen in nem speziellen Code für ne Finishing State Machine, oder?Das Testprorgamm lädt die zwei Ameisengehirne in die Map und führt für jede Ameise hintereinander, 100000 Runden lang das Gehirn aus. Das Gehirn ist in einer Scriptsprache geschrieben die jeweils 1 Befehl speichert. Dabei kann man Bedinungen prüfen und je nach Bedingung auf andere Befehle verzweigen.
MfG SideWinder
-
SeriousSam schrieb:
Nachdem die Tore geschlossen sind...
Hier ist was ich eingeschickt habe: http://www.acid-code.ch/~samuel/icfp04.zip
Und wehe jemand kritisiert meinen Programmierstil.
Dafür, dass ich fast normal geschlafen habe und erst am Samstag morgen begonnen habe ist das wohl nicht so übel.
Habt Spass
Hmmm...soviel Code hab ich gar nicht. Hab auch keinen richtigen Preprozessor
sondern hab mir nur ne Klasse 'Instruction' gemacht, welche mir die
entsprechenden Informationen bereitstellt, allerdings hat die gar nicht soviel
Code. Ich komme im Moment nur auf 18kbyte Code, da fehlen zwar noch en paar
kleine Funktionen, welche ich noch fertigschreiben muss, aber soviel wird das
nicht mehr.Da stell ich mir dann doch jetzt schon im Voraus die Frage, ob mein Code richtig
sein kann.Mir ist auch gar nicht eingefallen, den Code nur einfach so runterzuschreiben,
ich hab mir gleich direkt Gedanken ueber Objekte gemacht (hab da World, Cell,
Ant und Instruction), wahrscheinlich waere ich sonst doch noch schneller zu mehr
gekommen, aber das hatte SideWinder ja schon weiter o. gesagt gehabt.Naja, mein Notebook ist heut wieder angekommen und dann werd ich mich mal gleich
ranmachen, den Code fertig zu schreiben. Falls interesse besteht, werd ich den
dann auch mal zum Download zur Verfuegung stellen.mfg
v R
-
Schade, zu spät gelesen. Sonst hätte ich natürlich mitgemacht und gewonnen. Nächstes Jahr bitte eher Vorstellen und mit Aussagekräfitgerem Titel !!!!!
-
Physikstudent schrieb:
Schade, zu spät gelesen. Sonst hätte ich natürlich mitgemacht und gewonnen. Nächstes Jahr bitte eher Vorstellen und mit Aussagekräfitgerem Titel !!!!!
Bitte deine Ameisenversion in 3 Tagen hier abliefern - die müssen dann gegen den icfp04-Gewinner ran
MfG SideWinder
-
Nee, da fehlt der Anzreiz.
-
Physikstudent schrieb:
Nee, da fehlt der Anzreiz.
Ich dachte schon du hättest einen dringenden Termin
MfG SideWinder
-
ich sag euch mal meinen plan:
die marker verwende ich wie folgt:
m4: feld ist bewertet
m0-m3: bewertung (interpretiert als binärzahl zwischen 0 und 15)
m5: ameisenstraßetrifft ne ameise auf ein unbewertetes feld, bewertet es diese anhand eines sichbaren nachbarn mit this->wert = nachbar->wert+1
dadurch kann jede amaeise im falle eines futterfundes optimal schnell heimlaufen, sie muß ja nur stets auf ein niederwertigeres als das aktuelle feld tappen. sie wird sicher bei feld 0 ankommen.
ups, alle werte sind modulo 16, aber egal. die funtion < ist halt entsprechend zu bauen.
feld 0 ist in ner "festung", die so aussieht:
+ + + 0 + +
in feld 0 kann nie ne fremde ameise gehen, denn da stirbt sie sofort.
meine ameisen gehen einfach rein, worauf der stopfen (s)+ + s 0 + +
sofort wegrennt. die reingegangene ameise legt auf feld 0 die beute ab und springt zum programmcode von s (sie wird der neue stopfen).
ne ameise, die futter fand, legt auf ihrem rückweg immer Marker 0 5 ab, eine ameisenstraße. findet ne gelangweilte ameise ne straße, geht sie die straße hinauf (entsprechend der bewertungen) und am be futterfund geht sie heim (legt neue strasse dazu). ist aber am ende gar nix, löscht sie den straßenmarker am endfeld. so verschwinden straßen zu inzwischen leeren plätzen allmächlich.
da klappt sogar alles soweit fast. allein mein problem ist, daß sich manchmal ne ameise, die zu feld 0 will, um futter abzuliefern, auf feld s landet und dann den ausgang der festung blockiert.
-
Aber sollte das nicht eigentlich _nicht_ passieren, denn du hast doch dieses Feld
belegt solange keine Ameise auf Feld 0 ist?Merkwuerdiges Verhalten. Bin leider immernoch nicht soweit, meine Simulation fertig
zu uebersetzen. Morgen hab ich die ersten beiden Schulstunden frei, da werd ich
dann auch nochwas daran arbeiten.Wer weiss, vielleicht werden in diesen beiden Stunden meine Killerameisen geboren
mfg
v R
-
Noch ne Frage zu clearMarkerAt():
Was genau wird hier gemacht? Soll hier current_marker-1 gesetzt werden, oder
soll current_marker auf 'no_marker' gesetzt werden?[Nachtrag]
Lesen sollte gelernt sein und zusaetlich, sollte man selbiges auch mal konzentriert
tun, dann haette ich die frage nicht gestellt
[/Nachtrag]mfg
v R
-
Jetzt muss ich doch nochmal was fragen, koennen Marker von Red und Black zugleich
gesetzt sein?mfg
v R
-
virtuell Realisticer schrieb:
Jetzt muss ich doch nochmal was fragen, koennen Marker von Red und Black zugleich
gesetzt sein?ja.
-
virtuell Realisticer schrieb:
Aber sollte das nicht eigentlich _nicht_ passieren, denn du hast doch dieses Feld
belegt solange keine Ameise auf Feld 0 ist?ja, aber wenn ne ameise auf feld 0 geht, dann geht die stopfenmeise weg. bevor die ameise von feld 0 auf s gehen kann, huscht von schräg eine dritte ameise auf s und blockiert ab dann dauerhaft, da sie bestrebt ist, auf feld 0 zu kommen.
normalerweise geht wegen des gelände-gefälles keine ameise mit futter einfach so dahin. und nur die mit futter sind so bestrebt, feld 0 zu erreichen, dass sie blockierend wirken.
dass die dritte ameise dahin will, kann zwei gründe haben:
- auf dem heimweg war stau und sie wich aus. ausweichen müssen ameisen auf dem rückweg aber können, da oft die ameisenstraße vom gegenverkehr blockiert ist.
- hinter feld s war ein fein und blockierte... meine ameisen wucherten mit der zeit um das ganze lager und umstellten und killten den feind... und erzeugt beim sterben 3 food!... ne non-food-meise betritt das feld (die dürfen ja, denn non-food-meisen achten nicht auf richtungen (außer wenn sie auf ner straße sind))... sie wird food-meise und strebt gegen 0 und blockiert.
-
mein ameisencode hat leider sicher noch einige fehler drin. aber der plan war, dass einige ameisen ein wegnetz bauen, sodass ameisen mit food schnell zurückfinden. dann gabs noch ein paar ameisen, die versuchen food vom gegner aus dessen hügel zu schaffen und ein paar, die den eigenen hügel bewachen sollten. aber irgendwann kommt es auch zu stau, oder die ameisen geraten auf dem rückweg in einen zyklus. mal schauen, ev. verbesser ich den code noch.
hat jemand noch ameisen, gegen die ich antreten kann?
-
SeriousSam schrieb:
hat jemand noch ameisen, gegen die ich antreten kann?
wget http://tampe.cc/ant/all_ants.zip
alle einsendungen, die die teilnehmer der liste namens icfp04-discuss@lists.seas.upenn.edu veröffentlicht haben.ich hole mir gerade humes stricmp.h, weil die leute so oft kleingeschrieben haben und teste dann mal ein paar.
-
volkard schrieb:
ich hole mir gerade humes stricmp.h, weil die leute so oft kleingeschrieben haben und teste dann mal ein paar.
ist viel zu viel arbeit, so nen case insensitive string zu bauen. vergleichen geht ja schnell. aber dann vertragen die sich nicht mit istream...
aber dann hab ich die abteilung für fürchterlich riskanten code gefragt und bekam folgende lösung:
//tust du immer machen "string foo;...;if(foo=="hallo)"also string links, //dann tut jetzt dein ganzer parser gehen bool operator==(string const& a,char const* b){ return stricmp(a.c_str(),b)==0; }
-
Schade...
Ich merk jetzt erst, wie viele Fehler ich gemacht habe.Hier eine deutlich gründlichere Version: http://www.acid-code.ch/~samuel/seriousant3.ant
-
hier meine version, die ich abgegeben habe.
www.volkard.de/volkard.ant
-
Hallo,
[OT]
Ausschnit aus Volkards AmeisencodeDrop 0 Drop 0 Turn Left 251 Turn Left 252 Turn Left 253 Sense Ahead 254 253 Friend Turn Left 255 Turn Left 256 Turn Left 257 Move 400 257
War das beabsichtigt, oder hab ich zu viel Phantasie ?
[/OT]Sry, für das unqualifizierte Posting.
-
Gibt es eigentlich schon ein offizielles Programm mit dem ich die Ergebnisse/das Verhalten der Ameisen in meinem Program testen kann? Ich find da irgendwie nichts auf der Seite von denen.
Bei mir stimmt glaub ich noch irgendwas mit den Markern nicht, aber die Ameisen ohne Marker machen ihren Job schon einwandfrei.Vorallem die PersistANT.ant sammelt in dem 100x100 Beispiel-Level bei mir gut 70% - 90% des Futters in 100000 Runden, wenn sie mit der Standard-Random Ameise spielt.
Aber mit einer State-Maschine ein gute Ameise zu schreiben find ich schon recht heftig - mit einer richtigen Scriptsprache wäre das bei den selben Funktionen viel einfacher umzusetzen.