[Project] A.I. leermethodes

Pagina: 1
Acties:
  • 519 views sinds 30-01-2008
  • Reageer

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Inleiding

Ik zie steeds vaker vragen en topics over AI. Misschien onder het mom van kennisdeling leuk om een open-source project hiervoor te starten? Het zou dan leuk zijn als er mensen meedoen die al ervaring hebben op dit terrein.

Mij lijkt het leuk om iets te maken en dit goed te documenteren. Eventueel via een wiki. Dit werkt aardig zie ook het gotbot project. Het onderwerp nader te bepalen maar het zou denk ik het leukst zijn een simpele game (kan ook bestaande zijn) te maken waarin we de AI met verschillende leertechnieken bouwen. Over het onderwerp is een poll gestart.

Stappenplan

Animo bekijken
- Onderwerp kiezen (natuurlijk een die zich leent voor meerdere soorten AI implementaties)
- Onderwerp scope bepalen en een duidelijke omschrijving van wat het onderwerp allemaal inhoud
- Welke vormen van AI gaan we proberen te gebruiken?
- Omgeving bepalen (programmeertaal en bestaande engine?)
- CVS- en Documentatievormen?
- Onderwerp opsplitsen in modules
- Modules programmeren
- Documenteren
- Conclussies

Deze stappen zijn natuurlijk niet definitief en kunnen aangepast worden en in overleg door eventueel teams worden uitgewerkt.

Links

RL Java Blackjack
TD-Gammon
Strong AI
Genetic Programming
MiniMax
Neural network (Wiki)
PDF Neural Network Checkers
Neurale Netwerken (ALGG)
Iets over Neurale Netwerken (Kennislink)
Neurale netwerken (algoritme.nl)
Neurale netwerken (Data & Analysis Center for Software)
Robocode
RL Robocode

Polls
Ik heb de volgende onderwerpen tot nu toe dit topic zien passeren. Als je niet van plan bent mee te werken aan het project breng dan a.u.b. geen stem uit. Dank je (8> Natuurlijk mag je gewoon op je eigen idee stemmen :)

Note: Agent Server en AI Environment zijn uit de keuzes weggehaald omdat deze niet thuishoren in deze poll.

Poll: Onderwerp voor AI Project?
3D Go
Backgammon
Blackjack
Brein Simulatie
Dammen
Eenendertigen
Eenentwintigen
Lerende monsters
Schaken
Tic tac Toe
Virtuele auto
Afbeeldingslocatie: http://poll.dezeserver.nl/results.cgi?pid=105691&layout=2&sort=org
Ook een poll maken? Klik hier

[ Voor 94% gewijzigd door seamus21 op 23-12-2005 14:26 ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 02-04 13:13

pjvandesande

GC.Collect(head);

Is gotbot hier niet juist uitermate geschikt voor?

Volgens mij kun je er beter voor kiezen om met een groep een bot te maken, bij veel animo misschien de groep in tweeën splitsen en iedere groep 1 bot laten maken. Dit resulteerd in twee bot's, deze kun je dan weer in 1 ring gooien en kijken welke groep het het beste heeft gedaan.

Is maar gewoon een wilde gooi, wel ontzettend leuk en intressant project kan dit worden. Alleen jammer dat de tijd mij in iedergeval niet toelaat lijkt het mij wel geweldig intressant om het te volgen. AI is een ontzettend intressant!

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
questa schreef op woensdag 21 december 2005 @ 14:41:
Is gotbot hier niet juist uitermate geschikt voor?

Volgens mij kun je er beter voor kiezen om met een groep een bot te maken, bij veel animo misschien de groep in tweeën splitsen en iedere groep 1 bot laten maken. Dit resulteerd in twee bot's, deze kun je dan weer in 1 ring gooien en kijken welke groep het het beste heeft gedaan.
Mijn insteek met dit project zie ik graag anders. De bot hoe leuk ook neigt te veel richting een wedstrijd. En de code van de teams kan niet openbaar zijn. Niet een contest dus maar een open project. Iedereen kan dus meedenken en vooral meeleren door over de benodigde modules na te denken en hiervoor code te schrijven. Dit wordt dan openbaar en wordt er democratisch door iedereen het handigste uitgekozen. Eventueel natuurlijk in overleg gewoon stukken samenvoegen. Misschien heeft de ene een beter idee maar heeft de andere iets anders net iets netter uitgewerkt. Dit kan dan mooi samengaan.

Of misschien door al het overleg en discussies is er al over iets leuke pseudo-code ontstaan en werken een aantal dit uit indien iedereen het er mee eens. Ik denk ongeveer in de volgende faseringen:

- Animo bekijken
- Onderwerp kiezen (natuurlijk een die zich leent voor meerdere soorten AI implementaties)
- Onderwerp opsplitsen in modules die apart uit te werken zijn
- Modules met zijn allen een voor een uitwerken (iedereen levert zijn bijdrage of leert van andermans bijdrages)
- Modules samenvoegen
- Documenteren (ontstaat ook gaande weg bv via wiki)
- Conclussies en misschien belangrijke leermomenten of stukken code eruit lichten

[ Voor 26% gewijzigd door seamus21 op 21-12-2005 15:14 ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 08-04 23:28

TeeDee

CQB 241

Ik heb er wil oren naar. Voor mij is het alleen wel een leertraject, en in c#. Maar omdat je aangegeven hebt dat dit in java gaat, is die drempel toch wat lager. Misschien is het wel een idee om als bijdrages c# ports toe te voegen.

Het gaat uiteindelijk om de denkwijze en niet de syntax. ;)

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Lijkt me een leuk idee alleen vraag ik me af wat ik moet zien in zo'n AI.
Bedoel je een grafisch robot die van alles kan en daarop reageert?

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 12:13
Tsja, ik denk eerlijk gezegd niet dat 't zo'n goed idee is.

Ik studeer zelf kunstmatige intelligentie aan de UvA, en er is _VEEL_ informatie op dat gebied. Veel is ook totaal implementatie afhankelijk, en met een codevoorbeeld is dan nog lang niet alles gezegd of verteld. Ook zijn er al veeeeel boeken, papers en scripties over de verschillende AI onderwerpen.
Verder is het moeilijk om een 'beste' AI 'iets' te vinden; over welk onderwerp wil je het hebben?

Autonome systemen?
Spiders?
Taalherkenning?
Taalsynthese?
Lerende systemen?

Eigenlijk vind ik dat je het onderwerp een beetje onderschat.

Verbouwing


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Mithrandir schreef op woensdag 21 december 2005 @ 15:57:
Tsja, ik denk eerlijk gezegd niet dat 't zo'n goed idee is.

Ik studeer zelf kunstmatige intelligentie aan de UvA, en er is _VEEL_ informatie op dat gebied. Veel is ook totaal implementatie afhankelijk, en met een codevoorbeeld is dan nog lang niet alles gezegd of verteld. Ook zijn er al veeeeel boeken, papers en scripties over de verschillende AI onderwerpen.
Verder is het moeilijk om een 'beste' AI 'iets' te vinden; over welk onderwerp wil je het hebben?

Autonome systemen?
Spiders?
Taalherkenning?
Taalsynthese?
Lerende systemen?

Eigenlijk vind ik dat je het onderwerp een beetje onderschat.
Ik ben geeneens begonnen met schatten. Ik vind het altijd grappig dat de mensen in de topics die zeggen dat ze er verstand van hebben gelijk naar dit soort woorden grijpen. Al het begin is moeilijk en gelukkig heeft nog niemand in dit topic het woord 'eitje' laten vallen of andere hints dat dit makkelijk wordt.

Ik merk alleen dat erg veel mensen dit intressant vinden en het misschien leuk is om met deze mensen een project te starten waar we allemaal ervaring uit kunnen halen. Ook het onderwerp was inderdaad nog niet vastgesteld. Het is ook geen contest en het hoeft ook niet zo snel mogelijk. Alles staat open voor discussie. Dus ook het onderwerp. Verder staat ook nergens dat ik ergens een optimale oplossing voor wil vinden. Echter is het doel om met een dergelijk project mensen ervaring op te laten doen over deze onderwerpen.

Ook de implementatie (behalve het woord java) in de SP is nog niet zeker. Alhoewel ik vind dat we hierover wel een knoop moeten doorhakken. Een project over meerdere talen maakt het complexer dan het al is.

Always shoot for the moon. Even if you miss you will land among the stars...


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Wat mij wel interessant lijkt is het volgende:
Een (virtuele) auto die op basis van simpele gesproken commando's (links, rechts, stop, etc) kan rijden. In nog te bepalen mate moet de auto zelfstandig rijden, bijvoorbeeld remmen voor rood licht of een voetganger op een zebrapad.

Om het realistisch te houden, moet de auto informatie tot zijn beschikking krijgen, die ook "in het echt" uit sensors en meetapparatuur te verkrijgen zijn. Dus snelheid, maar ook complexe zaken als het beeld voor, naast en achter de auto.

Hierbij komen dus veel problemen kijken:
- Herken gesproken commando's
- Herken objecten in het virtuele beeld, zoals tegenliggers, voetgangers, borden, etc.
- Pas het handelen aan op de inkomende informatie.
- Aanpassen aan de rest van het verkeer... (kan je zo ver in gaan als je wilt...)

Je kunt de auto als virtuele bestuurder af en toe zeggen dat hij zich in de situatie anders moet gedragen of de auto kan zelf ontdekken dat zijn gedrag onwenselijk is (botsing, opstopping oid). Die informatie kan in supervised methoden gebruikt worden.

In het begin kunnen de virtuele verkeerssituaties natuurlijk erg simpel zijn. Je kunt er in het begin zelfs voor kiezen de relevante informatie direct aan te leveren ipv uit beeldherkennings algoritmen.

Kortom, ik denk dat dit onderwerp zich goed leent voor allerlei algoritmen. Ook kan dit onderwerp zonder veel problemen uitgebreid worden, waarbij de situaties steeds realistischer worden.

[ Voor 18% gewijzigd door KopjeThee op 21-12-2005 16:38 ]


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
kopjethee schreef op woensdag 21 december 2005 @ 16:33:
Wat mij wel interessant lijkt is het volgende:
Een (virtuele) auto die op basis van simpele gesproken commando's (links, rechts, stop, etc) kan rijden. In nog te bepalen mate moet de auto zelfstandig rijden, bijvoorbeeld remmen voor rood licht of een voetganger op een zebrapad.

Om het realistisch te houden, moet de auto informatie tot zijn beschikking krijgen, die ook "in het echt" uit sensors en meetapparatuur te verkrijgen zijn. Dus snelheid, maar ook complexe zaken als het beeld voor, naast en achter de auto.

Hierbij komen dus veel problemen kijken:
- Herken gesproken commando's
- Herken objecten in het virtuele beeld, zoals tegenliggers, voetgangers, borden, etc.
- Pas het handelen aan op de inkomende informatie.
- Aanpassen aan de rest van het verkeer... (kan je zo ver in gaan als je wilt...)

Je kunt de auto als virtuele bestuurder af en toe zeggen dat hij zich in de situatie anders moet gedragen of de auto kan zelf ontdekken dat zijn gedrag onwenselijk is (botsing, opstopping oid). Die informatie kan in supervised methoden gebruikt worden.

In het begin kunnen de virtuele verkeerssituaties natuurlijk erg simpel zijn. Je kunt er in het begin zelfs voor kiezen de relevante informatie direct aan te leveren ipv uit beeldherkennings algoritmen.

Kortom, ik denk dat dit onderwerp zich goed leent voor allerlei algoritmen. Ook kan dit onderwerp zonder veel problemen uitgebreid worden, waarbij de situaties steeds realistischer worden.
Ok kijk dat is al een idee. Ik denk dat we even meerdere onderwerpen moeten verzamelen en er dan eentje uithalen. Mijn mening over dit onderwerp is wel dat het niet een van de makkelijkste instaponderwerpen is voor dit project. Ik zat meer aan een Keep It Stupid Simple onderwerp te denken aangezien iedereen het er mee eens is dat de materie zelf al lastig genoeg is.

Always shoot for the moon. Even if you miss you will land among the stars...


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 12:13
seamus21 schreef op woensdag 21 december 2005 @ 16:12:
[...]

Ik ben geeneens begonnen met schatten. Ik vind het altijd grappig dat de mensen in de topics die zeggen dat ze er verstand van hebben gelijk naar dit soort woorden grijpen. Al het begin is moeilijk en gelukkig heeft nog niemand in dit topic het woord 'eitje' laten vallen of andere hints dat dit makkelijk wordt.
Waarom open je een topic als je zelf dan eerst nog niet hebt rondgekeken?

En ook als je had gezegd dat 't je redelijk moeilijk lijkt zou ik je nog zeggen dat 't waarschijnlijk moeilijker is dan je dan al denkt. :+

Verbouwing


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
seamus21 schreef op woensdag 21 december 2005 @ 16:46:
[...]

Ok kijk dat is al een idee. Ik denk dat we even meerdere onderwerpen moeten verzamelen en er dan eentje uithalen. Mijn mening over dit onderwerp is wel dat het niet een van de makkelijkste instaponderwerpen is voor dit project. Ik zat meer aan een Keep It Stupid Simple onderwerp te denken aangezien iedereen het er mee eens is dat de materie zelf al lastig genoeg is.
Ja, dat denk ik ook, maar met mogelijkheden tot uitbreiding, lijkt mij. Als instapje misschien het volgende:
- Auto gaat alleen rechtdoor
- Auto krijgt commando's "rijden" en "stop" kant en klaar aangeleverd (geen gesproken commando's oid)
- De weg bestaan uit 2 gescheiden rijstroken, waarbij de linkerstrook voor tegenliggers is.
- De auto moet "leren" wanneer hij kan inhalen en wanneer hij beter achter zijn voorganger kan blijven.

Dit is dus afhankelijk van:
- tegenliggers
- snelheid voorganger
- aantal voorgangers (file o.i.d., niet inhalen)
- hoe ver kan je de weg overzien?

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Mithrandir schreef op woensdag 21 december 2005 @ 16:57:
[...]


Waarom open je een topic als je zelf dan eerst nog niet hebt rondgekeken?

En ook als je had gezegd dat 't je redelijk moeilijk lijkt zou ik je nog zeggen dat 't waarschijnlijk moeilijker is dan je dan al denkt. :+
Ok concerns duly noted. Ik heb zelf wel al rondgekeken die links staan daar niet voor niets in de SP. Daarnaast heb ik zelf ook wel onderwerpen. Ben benieuwd wat anderen vinden en naar hun ideeen. Mijn onderwerpen zijn zoals al gemeld KISS omdat de materie inderdaad reuze, verschrikkelijk, onbegrijpelijk, mega, ultra en ontzettend lastig is! :D

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

Willen jullie dit gaan uitwerken in Java? Ik wil wel graag mee kijken maar zelf ben ik nog niet zo goed in Java.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
kopjethee schreef op woensdag 21 december 2005 @ 16:59:
[...]


Ja, dat denk ik ook, maar met mogelijkheden tot uitbreiding, lijkt mij. Als instapje misschien het volgende:
- Auto gaat alleen rechtdoor
- Auto krijgt commando's "rijden" en "stop" kant en klaar aangeleverd (geen gesproken commando's oid)
- De weg bestaan uit 2 gescheiden rijstroken, waarbij de linkerstrook voor tegenliggers is.
- De auto moet "leren" wanneer hij kan inhalen en wanneer hij beter achter zijn voorganger kan blijven.

Dit is dus afhankelijk van:
- tegenliggers
- snelheid voorganger
- aantal voorgangers (file o.i.d., niet inhalen)
- hoe ver kan je de weg overzien?
Ik "idee" nog even verder:
- Decision trees?

  • Flapp
  • Registratie: December 2004
  • Laatst online: 02-01 20:16
Ik leer volgende maand java via school (informatica) en ben best bereid mee te doen :) lijkt me wel wat, dat je hem ook kan leren om een voetganger juist wel te overrijden:P

"Stilte, een gat in het geluid...."


Verwijderd

Dat is ook mijn positie, ik heb al wat lessen gehad in Java. Maar ik voel me net een verzopen kat tussen alle mensen die "goed" in java zijn :)

Verwijderd

count me in als er iets leuks te doen staat.
Ik heb aktieve kennis van java, maar door het verderstuderen gebruik ik ze niet meer elke dag (spijtig).

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Ik denk dat het handig is om te gaan kijken of we dit kunnen opzetten:
http://www.nongnu.org/cvs/

Nog voordat er iets aan code wordt geschreven aan welk project ook. Hiermee kan je zorgen dat er niet een totaal onoverzichtelijke brei aan bestanden ontstaat :-)

En we hebben dus een klein beetje server ruimte nodig om de zooi op te slaan.

[ Voor 4% gewijzigd door KopjeThee op 21-12-2005 17:35 ]


Verwijderd

sourceforge?

Verwijderd

Ben je dan direct officieel geregistreerd voor een GNU General Public License ?

Verwijderd

Ik zou eigenlijk willen adviseren tegen het gebruik van CVS, het brengt nogal wat problemen met zich mee.. Ga liever voor SVN. Ik heb ook wel ervaring met Java, maar voorlopig nog niet met AI. Wil altijd wel een handje toesteken uiteraard. :) SF.net is idd ideaal voor dit soort dingen, de licensie kies je zelf maar moet wel een "open" licensie zijn.

[ Voor 17% gewijzigd door Verwijderd op 21-12-2005 17:46 ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Stel dat we mijn voorstelletje gaan uitvoeren... Dan lijkt het mij handig om eerst wat te programmeren aan een eenvoudige 2D GUI. Ik bedoel dat er iets komt wat bijvoorbeeld een bovenaanzicht van een verkeerssituatie kan weergeven.

Verwijderd

Ik zie hier replies staan van mensen die net beginnen Java te leren. Ik wil niet de Boze Boeman spelen, maar hoe denk je AI te programmeren? AI gaat niet over Java, Basic, weet ik het wat maar om een theorie die je toepast in weet ik het welke taal.

Er is zeker wel een verschil tussen bijvoorbeeld een tutorial volgen en daarna je site met database de lucht in te krijgen en het "maken van AI". Nou wil ik PHP-ers of het volgen van tutorials niet afkraken, maar zoals hier al gezegd, AI wordt enorm onderschat. Waarom zouden er complete studies en boeken aan gewijd zijn? Waarom denk je dat als je Java kunt programmeren, je AI kunt programmeren? Wat is AI? Wat wil je maken? Een rule-based app., een lerend algoritme, beeldherkenning, spraakherkenning? Al deze dingen (en nog veel meer) vallen onder AI maar zijn zo totaal verschillend dat experts op het ene gebied niks weten over het andere gebied.

Definieer dan eerst AI eens, en wat je wilt maken. Iets als "een open source applicatie" zonder ook maar een inhoudelijk idee of zelfs een discussie starten over CVS en SVN is nu totaal nutteloos.

Dan nu hopelijk wel iets nuttigs in deze post; ik zit de laatste tijd met het idee een uitgebreid environment te maken. Een environment is dus hetgeen waarin je AI-bot of applicatie of agent of ... in opereert. Als je een soort 3D-blockworld maakt en dit flexibel opzet zodat je verschillende werelden kunt maken met verschillende doelen, kun je echt beginnen iets van AI erin te gooien. Dit zou dan zijn in de vorm van entiteiten aangedreven door AI. Door een soort van lego-blokjes te gebruiken zou je een voertuig in elkaar kunnen zetten of een ophaalbrug, enz. Dit alles wordt dan "bediend" door je programma.

Stel bijvoorbeeld dat je een wereld maakt waarin het erom gaat je tegenstanders uit te schakelen met je voertuigen. Je kunt een hele boel voertuigen samen laten werken en zodoende je tegenstander uitschakelen, of juist een mega-voertuig die het opneemt tegen een tegenstander, enz.

Je zou ook een wereld kunnen maken waarin het de bedoeling is dat je voertuig een weg naar een bepaald punt vindt. Je zou directe communicatie uit kunnen schakelen voor deelnemers zodat ze met stigma's moeten werken.. Of een wereld waarin je duizenden voertuigen laat evolueren, of laat leren een bepaalde taak uit te voeren.

Elk van die entiteiten zou dan een eigen AI-systeem hebben en hier kun je dus in kleine groepjes of alleen mee experimenteren en hulp krijgen van anderen, open-source beschikbaar gestelde voertuigen bekijken, ... .

Er zijn nog zat van dingen te bedenken, maar ik denk dat als dit flexibel genoeg werkt, je hiermee een environment hebt waar van alles mee onderzocht en ge-experimenteerd kan worden mbt. verschillende aspecten van AI en als er ook genoeg tools ontwikkeld worden voor de client-kant, kan iedereen zelf entiteiten maken en ermee experimenteren, kleine contests opzetten zoals Botwars, enz.

[ Voor 2% gewijzigd door Verwijderd op 21-12-2005 18:14 . Reden: nuanceringen en minder "enz." :) ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op woensdag 21 december 2005 @ 18:10:
... maar zoals hier al gezegd, AI wordt enorm onderschat. ...
...3D-blockworld...
Ik zal AI zeker niet onderschatten en ik geloof er ook voldoende van te weten om van nut te kunnen zijn.

Ik ben het er volledig mee eens eerst een omgeving te creeren (zoals ik eigenlijk al schreef), zodat we direct de gevolgen van de algoritmes kunnen zien.

Ik denk dat je iets andere ideeen hebt over het gebruik van de wereld, maar op zich ook leuk. Mijn idee was eigenlijk meer om uiteindelijk (...) op een auto uit te komen die ook in de echte wereld zou kunnen bewegen in het verkeer (in theorie).

[ Voor 22% gewijzigd door KopjeThee op 21-12-2005 18:25 ]


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ok nu en voor altijd. Kunnen de mensen die posten eerst alle voorgaande posts goed lezen en OOK begrijpen waar ik met dit project heen wil. Ideen over onderwerpen zijn altijd welkom. Suggesties dat we er beter de brei aan kunnen geven heb ik niets aan.

Ik zal het wat concreter formuleren daar ik dacht dit al gedaan te hebben. Alas hier nogmaals. Mij lijkt een simpele applicatie (misschien een game) in Java te programmeren waarin de AI op verschillende wijzes gemaakt wordt. Zie alle bovenstaande voorbeelden in de SP. Dit geheel in een open project waarin iedereen zijn steentje kan bijdragen niet alleen qua CODE maar ook qua gedachtes. We gaan met zijn allen bedenken hoe we de verschillende AI's kunnen implementeren. We kunnen van bepaalde onderdelen gezamelijk een pseudo code bedenken of iedereen probeert eerst zelf wat te bedenken.

Ook al eerder gezegd de app op zich moet simpel zijn (weinig variabele input en weinig afhankelijkheden) er moet echter wel wat te leren zijn voor de AI. Waarom simpel? Omdat 75% ons al afraad om te beginnen voordat we zijn begonnen :) En omdat als de omgeving simpel is mensen zich meer kunnen focussen op de implementatie van bv de RL of NN algoritmes.

[ Voor 13% gewijzigd door seamus21 op 21-12-2005 18:27 ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
seamus21 schreef op woensdag 21 december 2005 @ 18:24:
Ook al eerder gezegd de app op zich moet simpel zijn (weinig variabele input en weinig afhankelijkheden) er moet echter wel wat te leren zijn voor de AI. Waarom simpel? Omdat 75% ons al afraad om te beginnen voordat we zijn begonnen :) En omdat als de omgeving simpel is mensen zich meer kunnen focussen op de implementatie van bv de RL of NN algoritmes.
Misschien krachten bundelen met mensen die het ook leuk vinden om GUIs te maken (3D bij voorkeur natuurlijk)? Dat maakt het resultaat ook aantrekkelijker.

Verwijderd

Ik ben 2 jaar geleden er eens aan begonnen (als eindewerk samen met collega): age of empires met beperkte ai.
We zaten al vast voor we begonnen met double buffering enzoverder.
Hoewel het "coolheidsgehalte" gaat dalen is misschien helemaal niet grafisch gaan beter geschikt voor het project?

Verwijderd

seamus21 schreef op woensdag 21 december 2005 @ 18:24:
We kunnen van bepaalde onderdelen gezamelijk een pseudo code bedenken of iedereen probeert eerst zelf wat te bedenken.

...als de omgeving simpel is mensen zich meer kunnen focussen op de implementatie van bv de RL of NN algoritmes.
De implementatie van de meeste methodes is enorm simpel en kun je gewoon copy&pasten of een toolkit voor gebruiken. De moeilijkheid zit meer in het begrijpen wat een methode nou inhoudt en hier wat nuttigs mee te kunnen doen.

Je wilt de focus leggen op de implementatie van een RL algoritme of een NN; dan zie ik geen verschil met het maken van een "Hello, World!"-applicatie op eender welk platform. Als je de focus wel meer wilt leggen op het maken van echt interessante dingen die verder gaan dan een gemiddelde tutorial dan doe ik graag mee als er een goed voorstel is.

edit: ik vind kopjethee's voorstel eigenlijk wel leuk, als in een soort van autonome taxichauffeur ofzo maar dan zonder spraakherkenning

[ Voor 11% gewijzigd door Verwijderd op 21-12-2005 19:21 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 08-04 23:00
A.I. is een vrij vage term (sowieso is de I in A.I. in principe ongedefinieerd ;)). De verschillende technieken die in de topic start genoemd worden verschillen ontzettend van elkaar. Zonder verdere specificatie van wat voor probleem je hebt en hoe je dat aan wil pakken valt er dus vrij weinig zinnigs over te zeggen.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op woensdag 21 december 2005 @ 18:39:
Ik ben 2 jaar geleden er eens aan begonnen (als eindewerk samen met collega): age of empires met beperkte ai.
We zaten al vast voor we begonnen met double buffering enzoverder.
Hoewel het "coolheidsgehalte" gaat dalen is misschien helemaal niet grafisch gaan beter geschikt voor het project?
Ja, de 3D omgeving is alleen leuk als er mensen zijn die zich in DirectX of OpenGL oid willen gaan verdiepen. Ik heb ooit wel eens het boek van Andre LaMothe gelezen: Tricks of the 3D game programming gurus. Kan ik mensen op zich aanraden. Wat nu wel aardig is om te melden is de inhoud op pagina 2 oid, de "game loop" pseudo code (voor de hand liggend, maar toch):
code:
1
2
3
4
5
6
7
8
9
10
initialisatie
while niet einde
  verzamel spelers input (links en rechts, gas, stoppen eventueel zelfs met spraakherkenning :-) )

  doe AI en spel logica (physics (bewegingen) en... AI!!!)

  render nieuwe frame (in een buffer, die je daarna in het zichtbare beeld zet (buffering), zodat je het niet gerenderd ziet worden)

  synchroniseer beeld (wacht als je te snel bent, meer dan 60fps oid is toch verspilling)
end


Realiseer je ook, voordat je denk dat het te ingewikkeld wordt, dat in het begin voertuigjes gewoon blokjes kunnen zijn.

[ Voor 6% gewijzigd door KopjeThee op 21-12-2005 20:53 ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Lijkt me een goed plan, voor welk project dan ook. Dit kan ook nu al interessant zijn, omdat je er ook documentatie neer kunt zetten en dergelijke. Dat scheelt weer terugzoeken door al te veel posts.

Misschien kan de TS even iets aanmaken? Wat mij betreft heet het project natuurlijk iets als:
Virtual Taxi Driver

Maar iets anders kan natuurlijk ook.

[ Voor 20% gewijzigd door KopjeThee op 21-12-2005 20:52 ]


Verwijderd

Volgens mij wil de TS wat meer discussie voordat een project wordt gekozen :)

Verwijderd

Ik zou graag in dit project meedoen.
Ik heb enkele ervaring in Java, ooit een xml-overzet programma en een bibliotheek met een class of 13 geschreven.
Maar ik denk dat jullie meer ervaren programmeurs nodig hebben.
Zoals playroll ook al aangeeft, dit is een erg complex onderwerp, waarbij je beginnende programmeurs eigenlijk niet kunt gebruiken.
Hoe hard het ook klinkt, volgens mij is dat de waarheid.
Om deze reden denk ik dat ik ook niet mee kan doen.
Ik heb wel enige ervaring in Java zoals hierboven geschreven, maar meer in PHP.

Maar ik ben ook van mening dat we niet de 'besten' moeten selecteren en de rest laten vallen.
Het is een project waarvan iedereen hoopt te leren, dus ook de mensen met wat minder ervaring / kennis zouden volgens mij mee moeten doen om zo ook meer inzicht in AI / programmeren te krijgen.

Als er wel een taak voor mij is, geef het maar aan.
Kleine programmeer werkzaamheden kunnen natuurlijk altijd.

Maar ook enige discussie is natuurlijk niet verkeerd.
De taal staat zo te zien al vast.
Maar de opdracht zelf nog niet.
Het idee van de auto lijkt me erg geschikt. Iedereen kan zich er wat bij voorstellen, en de meesten hebben het leertraject zelf ook meegemaakt ( ;) )
Kopjethee noemt 4 'afhankelijkheden', ik denk dat het beste is om er eerst voor de zorgen dat de 'auto' met 1 rekening houdt, dan met 2 en zo door programmeren totdat hij met alles rekening houdt.

Verwijderd

Het maakt niet uit of je begint met programmeren, als je de link tussen je code en de theorie maar ziet. En dat is nou net waar al die boeken over gaan. Wat ik eigenlijk bedoelde was meer dat als je wilde kijken hoe je een neuraal netwerk of een lerend algoritme implementeert, je vrij snel klaar zult zijn. De moeilijkheid zit 'm niet in het implementeren ervan, maar in het fine-tunen en het begrijpen zodat je wat meer dingen kan maken dan een xor-oplossing oid. Dat kan ook als je nog helemaal niet geprogrammeerd hebt. Ik had gewoon het idee dat de focus te veel op implementatie komt te liggen, terwijl je best eens een heel boek kunt lezen om de inhoud vervolgens met 20 regels code toe te passen.

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
seamus,

uit je posts begrijp ik dat je een project wilt opzetten waarin je wat wilt leren. Je kan dan toch ook juist gebruik maken van beginnende programmeurs, vooral omdat je geen haast hebt met een project als dit.

Ik zelf ben niet helemaal een newbee, maar ook niet zeer ervaren. Ik leer wel erg snel, en ga me vanaf komend kalenderjaar verdiepen in A.I. als minor op de HU. Misschien wordt het trouwens wel major als ik er iets langer mee bezig ben ;) .

Heb je zelf trouwens al een idee over wat je zou willen? Het idee van kopjethee lijkt me erg leuk, maar misschien had je zelf ook iets in gedachten?

Ik ben zelf altijd al erg gecharmeerd geweest van het idee om een mens te simuleren (het brein dan). Hoewel dat natuurlijk een onbegonnen werk is, kan je toch proberen er 1 facet uit te halen, en dat (proberen) na te bouwen. Hoe programmeer je dan bv dingen als gevoel (als in feeling) en gevoel (als in sense), dat blijf ik heel intrigerend vinden.

Ik ben erg benieuwd naar het uiteindelijke onderwerp, en ik wil zeker inloten als je gaat beginnen!

  • Zandor
  • Registratie: Juni 1999
  • Laatst online: 26-03 15:53
uiteindelijk werkt AI toch altijd weer als volgt?
probeert 'iets', meet resultaat gewenste variabele, neemt uitkomst in combinatie met alle variabelen in zich op en weegt het mee bij het beslissen in volgende situatie.

uiteindelijk sla je toch gewoon weer alles op in files / tabellen of whatever. Is het nou echt zo moeilijk.

(Wel eens een bot geprogrammeerd mbv boekje.)

E8400, P5K EPU, patriot extreme 800 4GB, EN9600gt, hoontech dsp24v, samsung F1 1TB, dell 2407wfp, canon LBP5200
Canon 50D, 17-85IS, 28-135 IS, 100-300mm, 50mm 1.8


Verwijderd

Bij computationele lerende AI heel kort door de bocht gezegd wel ja. Zo is programmeren niets anders dan chatten met de compiler in zijn syntax en database experts zijn alleen bezig met set theory.

[ Voor 74% gewijzigd door Verwijderd op 21-12-2005 23:36 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ik zit al een tijdje met wat spelachtige ideeen te spelen, en het lijkt me wel eens leuk om hier iets mee te bouwen.

Het concept:
je neemt een 3 dimensionale ruimte die bestaat uit vakken. Een vak is leeg of gevuld met een blok. In deze ruimte kunnen de blokken komen van meerdere spelers. Deze blokken vormen een organisme. De blokken kunnen als een vloeiende massa door de ruimte bewegen, of als kleine blokjes door de ruimte kruipen. Dat is een kwestie van hoe de speler dat op zijn eigen computer gaat berekenen.

Ok, maar waar zit de spanning? Jouw blokken moeten een aantal blokken van de tegenstander omsingelen. Een mogelijke definitie van omsingelen zou kunnen zijn dat de 'vijandelijke' blokken niet meer in contact staan met een open ruimte' (alhoewel we wel moeten uitsluiten dat niet zomaar openruimtes uit het niets gecreerd kunnen worden). Als een groep met vijandelijke blokken is omsingeld, dan zijn ze verloren en gaan ze naar jou. Ik denk dat dit een heel leuk spelconcept is waar ai`ers en mensen die met ai technieken willen experimenteren iets heel leuks in elkaar kunnen zetten.

Uitvoering:
Een centrale server waar alle posities naar toe worden gestuurd De computer van de gebruiker (en om mij sluit hij zijn hele netwerk aan om te rekenen) wordt gebruikt om de volgende zet te bepalen en daarna is de volgende speler aan de beurt.

Ik denk dat we het beste op kunnen delen in 2 delen.
1) Het bouwen van de omgeving, de server en de api`s voor de clients. En verder uiteraard een grafische applicatie waarmee we het spel ook kunnen volgen. En een omgeving waarin mensen die in het volgende deel een invulling gaan geven aan de organismes, ook eenvoudig kunnen testen zonder dat ze van een centrale server afhankelijk zijn.
2) Een concrete invulling geven aan je organisme waarbij je gebruik kunt maken van de client api`s die tot je beschikking staan.

Op deze manier hoeven de mensen die aan de slag willen gaan met ai-technieken, zich niet eerst te gaan verdiepen en allerlei randproblematiek.

Wat vinden jullie van dit idee?

[ Voor 21% gewijzigd door Alarmnummer op 22-12-2005 00:37 ]


Verwijderd

Ik denk dat je op die manier een soort 3D-variant op Go hebt? 2D-Go is al lastig op te lossen, al zijn de regels wel anders maar ik zie toch wel overeenkomsten.

[ Voor 35% gewijzigd door Verwijderd op 22-12-2005 00:05 ]


Verwijderd

turn based?

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Ja. Maar het is wel de bedoeling dat het heel snel gaat. Dus echt tientallen zetten per seconde.

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ok al mijn ideeen lenen zich voor een RL (Reinforcement Learning) oplossing met later eventueel een NN (Neural Network) erbij.

Als je van een RL oogpunt kijkt kun je volgens mij Go varianten en waarschijnlijk helaas ook het 3d blok idee even buiten beschouwing laten omdat deze varianten gewoonweg teveel states hebben. Niet dat het dan niet kan het wordt echter complexer (lees: meer werk).

Daarnaast is het concept een centrale server met tegenstanders weer een stap richting een contest.

Ook wil ik even kwijt dat ik nergens gemeld heb dat beginnende programmeurs niet welkom zijn. De bedoeling is ervaring opdoen. Misschien door trial & error. Lijkt een beetje op RL :D

Denk hierbij aan AI voor games zoals:

- Tic Tac Toe
- Kaartspellen (21, 31)
- Dammen

Dit is wat ik in gedachten had :)

[ Voor 13% gewijzigd door seamus21 op 22-12-2005 01:04 ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Ik heb zelf geen ervaring met Java. In Matlab heb ik enkele modules gemaakt die gebruik maken van RL en ANN. Er zijn verschillende typen reinforcement learning bekeken (oa Q-learning en actor-critic netwerken) en verschillende architecturen qua ANNs (multilayer perceptrons en radial basis functions / CMAC), alsmede verschillende weight update technieken. Eventueel kan gekeken worden naar Adaptive Resonance Theory en dan in het bijzonder ARTMAP al is er een reële mogelijkheid dat deze techniek niet toepasbaar is omdat ik niet zeker weet of de boundaries van de value function vooraf bepaald kunnen worden.

Zoals ik in andere technieken heb door laten schemeren of expliciet gemeld heb, zit het grootste probleem bij neurale netwerken in de tuning van parameters. De theorie heb je relatief snel door, volgens mij. :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

seamus21 schreef op donderdag 22 december 2005 @ 01:00:
Ok al mijn ideeen lenen zich voor een RL (Reinforcement Learning) oplossing met later eventueel een NN (Neural Network) erbij.

Als je van een RL oogpunt kijkt kun je volgens mij Go varianten en waarschijnlijk helaas ook het 3d blok idee even buiten beschouwing laten omdat deze varianten gewoonweg teveel states hebben. Niet dat het dan niet kan het wordt echter complexer (lees: meer werk).

Daarnaast is het concept een centrale server met tegenstanders weer een stap richting een contest.

Ook wil ik even kwijt dat ik nergens gemeld heb dat beginnende programmeurs niet welkom zijn. De bedoeling is ervaring opdoen. Misschien door trial & error. Lijkt een beetje op RL :D

Denk hierbij aan AI voor games zoals:

- Tic Tac Toe
- Kaartspellen (21, 31)
- Dammen

Dit is wat ik in gedachten had :)
Misschien een idee om eenserver op te zetten waar dit soort games op gespeeld kunnen worden. De server doet in essentie niets anders dan state van spelruimtes bij houden en aan spelers nieuwe zetten op te vragen + te voorzien van nieuwe informatie. Als je het tekenen zowel 2d als 3d kunt (als je 3d kunt, kun je 2d altijd :) ) dan ben je al een heel eind.

[ Voor 57% gewijzigd door Alarmnummer op 22-12-2005 01:15 ]


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Zeg maar gerust onmogelijk. De beste Go programmas zijn slechter dan een enigszins gevorderde speler. Go is wat dat betreft een veel grotere uitdaging dan schaken. Een Deep Blue voor Go zou niet ver komen.

Wie trösten wir uns, die Mörder aller Mörder?


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 08-04 23:00
Wat dat betreft zijn goprogramma's ongeeveer even ver als schaakprogramma's twintig jaar geleden waren. Toen speelden ze ook maar een middelmatig spel, wat voor velen aanleiding was om te denken dat een computer nooit van een schaak(groot)meester zou kunnen winnen.

Het verschil tussen schaak- en goprogramma's is denk ik dat voor de eerste de techniek al rond 1950 bekend was en de grootste doorbraak niet gerealiseerd is door nieuwe technieken (hoewel de oude technieken wel verfijnd zijn), maar simpelweg door de explosieve groei van processorsnelheid en beschikbaar geheugen. Het probleem met go is dat de bekende technieken ontoereikbaar zijn, zelfs als computers eenzelfde ontwikkeling zouden doormaken als de afgelopen 20 jaar.

Overigens vind ik bestaande goprogramma's ook weer niet écht slecht; ik moet wel flink m'n best doen om van GNU Go te winnen bijvoorbeeld - en dat is nog niet het sterkste programma. Maar goed, ik ben dan ook geen goede gospeler. :)

[ Voor 18% gewijzigd door Soultaker op 22-12-2005 12:17 ]


Verwijderd

Ik denk dat we toch naar een simpeler programma toe moeten, uitbreiden kan altijd nog.
Als ik dit zo bekijk is er wel animo, maar omdat het allemaal nog erg vaag zijn er nog niet echt concrete toezeggingen / plannen.

Het lijkt me dus verstandig dat iemand even 'precies' opschrijft wat de bedoeling van het project is.
Eigenlijk zoiets als seamus21 heeft gedaan.

Want zodra we weten wat de bedoeling is, kunnen we beginnen met denken / discusseren over de functionaliteit, werking, welke methoden we gaan gebruiken, interface e.d.

We weten nu in ieder geval wat niet mogelijk is:
- een goprogramma
- een schaakprogramma
i.v.m. de complexiteit.

De andere ideeën:
- een auto, zoals kopjethee voorsteld, die zichzelf leert om in het verkeer te bewegen.
- Tic Tac Toe
- Kaartspellen (21, 31)
- Dammen, alle 3 door seamus21 voorgesteld.

Ook is het misschien makkelijk om van elke deelnemer te weten waar hij (/ zij?) ervaring mee heeft.
Of ben ik nu een stap te snel, het is natuurlijk dan wel belangrijk te weten wie wel en wie niet meedoet.

Verwijderd

Ik vind dit opzich een zeer intressante insteek en ik ben dan ook geintresseerd in deelnamen. Zelf programmeer ik in Java dagelijks voor mijn werk maar heb ik verder geen know how van A.I.

Wel heb ik nog een extra optie. :)
Mijn inziens is een spel idee nog het beste te doen.
Zelf heb ik er wel is aan gedacht om een backgammon programma te maken.
Er is hier al erg lang een erg goede server voor te vinden op http://www.fibs.com/ :

FIBS staat voor "First Internet Backgammon Server", de Eerste Internet Backgammon Server, ontwikkeld door Andreas (marvin) Schneider. Met FIBS kunnen Internet gebruikers gratis on-line backgammon spelen tegen elkaar (en tegen computerprogramma's). Er zijn spelers van allerlei niveau op FIBS, van absolute beginnelingen tot serieuze kampioenskandidaten.
FIBS gebruikt het "telnet" protocol.

Hier voor is volgens mij heel erg goed elke AI voor te maken. Met GUI zonder GUI maakt allemaal niks uit. Kijk daar ook is naar want dan doe ik zeker mee!!

Verwijderd

ik stel dan ook voor (om het wat gestructureerder te houden), dat de TS de teamleader wordt. Misschien hebben we een poll nodig om te kiezen wat we gaan maken en ligt de uiteindelijke beslissing bij de TS.

We hoeven echt niet vele dagen te discussieren over wat we gaan maken, vind ik.

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ok ik stel het volgende voor. Zo te zien is er genoeg animo. Geef iedereen nog even tot 18.00u de tijd voor nieuwe onderwerpen. Ik zal er zelf ook nog wat bedenken. Daarna gooi ik ze allemaal in een poll. Daarna kunnen we bekokstoven welke methodes voor AI we willen implementeren. Dit is natuurlijk wel afhankelijk van het gekozen onderwerp.

Zoals al aangegeven zijn erg veel onderwerpen met een vorm van RL te benaderen. Mijn voorkeur gaat uit om van RL meerdere aanpakken te implementeren en deze te evalueren.

Als hierover iets is gekozen dan moeten we even zien of we een vorm van CVS toepassen en waar we de boel bewaren. Hiervoor waren al wat posts geplaatst.

[ Voor 3% gewijzigd door seamus21 op 22-12-2005 14:03 ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

seamus21 schreef op donderdag 22 december 2005 @ 14:02:
Ok ik stel het volgende voor. Zo te zien is er genoeg animo. Geef iedereen nog even tot 18.00u de tijd voor nieuwe onderwerpen. Ik zal er zelf ook nog wat bedenken. Daarna gooi ik ze allemaal in een poll. Daarna kunnen we bekokstoven welke methodes voor AI we willen implementeren. Dit is natuurlijk wel afhankelijk van het gekozen onderwerp.
Is het niet zo interessant om dat vrij te laten? Iemand die mag zelf een manier bedenken hoe hij zijn ai invulling gaat geven. De een zal het misschien doen met een ruleengine, de ander met een neuraal netwerk. Op deze manier kun je leuk experimenteren en verschillende technieken naast elkaar neer leggen.

De context is dan een bepaalde wereld waarin bepaalde regels gelden (oa overwinningregels) en de gebruiker moet dan maar zelf bekijken hoe hij dit het beste op kan lossen.

[ Voor 11% gewijzigd door Alarmnummer op 22-12-2005 14:20 ]


Verwijderd

Alarmnummer schreef op donderdag 22 december 2005 @ 14:18:
[...]

Is het niet zo interessant om dat vrij te laten? Iemand die mag zelf een manier bedenken hoe hij zijn ai invulling gaat geven. De een zal het misschien doen met een ruleengine, de ander met een neuraal netwerk. Op deze manier kun je leuk experimenteren en verschillende technieken naast elkaar neer leggen.

De context is dan een bepaalde wereld waarin bepaalde regels gelden (oa overwinningregels) en de gebruiker moet dan maar zelf bekijken hoe hij dit het beste op kan lossen.
Dit hangt natuurlijk van het doel af. Als jij een contest ingedachten hebt, is dit misschien wel een leuke oplossing.
Als we met zijn allen aan 1 project werken, is het denk ik minder geschikt.
Als we in 'groepjes' aan het project gaan werken, kan iedereen natuurlijk voor een andere methode kiezen.

Maar ik hoop dat we hier vanavond duidelijkheid over krijgen.

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Alarmnummer schreef op donderdag 22 december 2005 @ 14:18:
[...]

Is het niet zo interessant om dat vrij te laten? Iemand die mag zelf een manier bedenken hoe hij zijn ai invulling gaat geven. De een zal het misschien doen met een ruleengine, de ander met een neuraal netwerk. Op deze manier kun je leuk experimenteren en verschillende technieken naast elkaar neer leggen.

De context is dan een bepaalde wereld waarin bepaalde regels gelden (oa overwinningregels) en de gebruiker moet dan maar zelf bekijken hoe hij dit het beste op kan lossen.
Er staat ook nog geen manier vast. Eerst even het onderwerp vaststellen. Daarna maar bekijken welke vorm(en) van implementatie we gaan doen.

Always shoot for the moon. Even if you miss you will land among the stars...


  • Hydra
  • Registratie: September 2000
  • Laatst online: 22-01 13:59
kopjethee schreef op woensdag 21 december 2005 @ 16:33:
Hierbij komen dus veel problemen kijken:
- Herken gesproken commando's
- Herken objecten in het virtuele beeld, zoals tegenliggers, voetgangers, borden, etc.
- Pas het handelen aan op de inkomende informatie.
- Aanpassen aan de rest van het verkeer... (kan je zo ver in gaan als je wilt...)
IMHO is het leuke aan 'botwars' dat je veel creatieve eigen inbreng hebt, en het zo complex kan maken als je zelf wil. Wat jij oppert is IMHO sowiesi weinig echt AI, maar meer voorgeprogrammeerde handelingen op bekende situaties i.s.m. patroonherkenning. En voor dit project een subsysteem gaan schrijven dat stemcommando's herkent lijkt me overkill en bovendien saai. Sowieso zit de grootste utidaging in het laten rijden van een dergelijke robotauto in de interactie tussen de software, de hardware en de echte wereld. Een gesimuleerde wereld lijkt me nogal eenzijdig. Ook wil je in een dergelijk project dat iedereen z'n steentje bij kan dragen, dat zie ik in een derglijk systeem niet gaan gebeuren.

https://niels.nu


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Mijn indruk is dat in 1 tegen 1 bordspellen niet veel machine learning AI wordt gebruikt, maar voornamelijk heuristieken. In schaken worden heuristieken gebruikt die zich al jaren in de praktijk hebben bewezen en algemeen geaccepteerd zijn. Het heeft eenvoudigweg geen zin een programma dit te laten "leren", omdat het al bekend is.

In shooters en dergelijke zitten wel mogelijkheden, denk ik: lerende monsters etc. Op zich wordt er in het boek "tricks of the 3d game programming gurus" van LaMothe heel gedetailleerd een game engine beschreven (en gebouwd, meegeleverd op cd). Deze is grafisch vergelijkbaar met quake 2 en er zijn functies om quake 2 characters te laden. Op zich een leuk startpunt denk ik: goed gedocumenteerd en uitgewerkt, scheelt veel programmeerwerk. Jammergenoeg is het wel in C++ en niet Java.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Hydra schreef op donderdag 22 december 2005 @ 14:58:
[...]
Sowieso zit de grootste utidaging in het laten rijden van een dergelijke robotauto in de interactie tussen de software, de hardware en de echte wereld. Een gesimuleerde wereld lijkt me nogal eenzijdig. Ook wil je in een dergelijk project dat iedereen z'n steentje bij kan dragen, dat zie ik in een derglijk systeem niet gaan gebeuren.
De gesimuleerde wereld kan je natuurlijk zo echt maken als je wilt, met allerlei afleidende irrelevante details... Een dergelijk systeem in een echte auto zou gebruik maken van videobeelden van verschillende posities om objecten te herkennen en afstanden te kunnen schatten. Wij kunnen dezelfde informatie aandragen vanuit de virtuele wereld, met als voordeel dat de virtuele videobeelden zo eenvoudig of complex kunnen zijn als we zelf willen. Interactie tussen hard- en software lijkt mij niet het meest interessante/complexe aspect.

En inderdaad, het zal wel belangrijk zijn om verschillende situaties te onderscheiden, te herkennen en het handelen daar op aan te passen. Maar hoezo is dat geen AI?

Natuurlijk kunnen er meerdere teams gevormd worden die elk een eigen auto ai bedenken. Degene die het snelst, volgens de verkeersregels, zonder ongelukken van A naar B komt, wint (en mag de AI verkopen aan een grote autofabrikant als de virtuele wereld realistisch genoeg was :-).

Maar een ander project is ook prima hoor.

[ Voor 22% gewijzigd door KopjeThee op 22-12-2005 16:11 ]


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
kopjethee schreef op donderdag 22 december 2005 @ 15:53:
Mijn indruk is dat in 1 tegen 1 bordspellen niet veel machine learning AI wordt gebruikt, maar voornamelijk heuristieken. In schaken worden heuristieken gebruikt die zich al jaren in de praktijk hebben bewezen en algemeen geaccepteerd zijn. Het heeft eenvoudigweg geen zin een programma dit te laten "leren", omdat het al bekend is.

In shooters en dergelijke zitten wel mogelijkheden, denk ik: lerende monsters etc. Op zich wordt er in het boek "tricks of the 3d game programming gurus" van LaMothe heel gedetailleerd een game engine beschreven (en gebouwd, meegeleverd op cd). Deze is grafisch vergelijkbaar met quake 2 en er zijn functies om quake 2 characters te laden. Op zich een leuk startpunt denk ik: goed gedocumenteerd en uitgewerkt, scheelt veel programmeerwerk. Jammergenoeg is het wel in C++ en niet Java.
Ok mijn insteek is niet zozeer om een nieuw wiel uit te vinden of echt een baanbrekend AI voor een super toepasbaar vlak te maken.

Het lijkt mij leuk om adv een praktijk voorbeeld eens een keer met zijn allen een zelflerend AI te implementeren. Er is inderdaad veel theorie/materie hierover al door te spitten wat ook ongetwijfeld door iedereen gedaan gaat worden wil je een beetje mee kunnen doen.

Maar omdat bv bij schaken meestal andere methodes worden toegepast (geen idee of dit werkelijk zo is) wil niet zeggen dat wij het met een zelflerende aanpak niet kunnen proberen. Het gaat er dan niet om zo een efficient mogelijk schaakprogramma te krijgen maar dat we een praktijk case hebben gedaan met zijn allen en gaande weg meer geleerd hebben over zelflerende AI of Ai in het algemeen.

Trouwens is dit schaakgeval een voorbeeld :)

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

Theekopje's idee omvat zo veel en niet te veel om door een groep geinteresseerden te maken. De AI zou uit verschillende delen kunnen bestaan, welke los van elkaar ontwikkeld kunnen worden. Als een deel (nog) niet werkt, kan de auto alsnog getest worden aan de hand van andere invoer. Stel dat de objectherkenning nog niet lekker gaat, dan maak je tijdelijk gebruik van je plattegrond en schakel je andere objecten uit, als je path finding nog niet werkt, rij je gewoon willekeurig, enz. En zoals theekopje ook al zegt, je kunt de informatie zo geavanceerd maken als je wilt; als objectherkenning op een zonnige dag lukt, kun je misschien ook met regen of 's avonds proberen te rijden.

Zo kan een groepje bijvoorbeeld werken aan een path finding algoritme om van A naar B te komen (evt. rekening houdend met file-informatie oid). Een ander groepje probeert de visuele input om te zetten in locatie-informatie, waargenomen rode lichten, objecten voor de auto, enz. Weer een ander groepje stelt een rule-based systeem met verkeersregels samen, anderen leren de auto hoe het best te anticiperen op wat er waarschijnlijk komen gaat (afremmende auto's, overstekend wild, ...) en als een auto ver genoeg ontwikkeld is, kan bijvoorbeeld een multi-agent taxicentrale gemaakt worden oid.

Er is ook een project dat verkeerslichten een bepaald beleid leert waarbij de doorvoer het hoogst is, wachttijden het laagst, enz. Dat zou je er bijvoorbeeld ook bij kunnen nemen. Mensen die AI maar suf vinden, maar graag een engine, communicatieprotocol of documentatie (:O) schrijven zouden ook mee kunnen helpen.

Juist dit project maakt gebruik van verschillende aspecten binnen AI, van iets als path planning tot object herkenning of beleid leren, zodat iedereen kan doen wat-ie leuk vind en graag zou willen leren, terwijl groepjes elkaar op de hoogte kunnen houden van hun voortgang en documenteren hoe ze bepaalde dingen hebben opgelost.

Je zou eventueel een engine zoals waar theekopje het over heeft kunnen gebruiken om te beginnen met testen; je character is dan de auto.

[ Voor 5% gewijzigd door Verwijderd op 22-12-2005 16:31 ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
seamus21 schreef op donderdag 22 december 2005 @ 16:21:
[...]

Ok mijn insteek is niet zozeer om een nieuw wiel uit te vinden of echt een baanbrekend AI voor een super toepasbaar vlak te maken.

Het lijkt mij leuk om adv een praktijk voorbeeld eens een keer met zijn allen een zelflerend AI te implementeren. Er is inderdaad veel theorie/materie hierover al door te spitten wat ook ongetwijfeld door iedereen gedaan gaat worden wil je een beetje mee kunnen doen.
OK, dat begrijp ik. Als we iets willen met een 1 tegen 1 bordspel, dan denk ik dat mensen eerst iets kunnen gaan lezen over (in deze volgorde!)
- Minimax en negamax
- Alpha beta search
- Minimal window search (principal variation search)

Verder is het wel fijn als de spelregels en mogelijke zetten eenvoudig te bepalen zijn (en natuurlijk ondubbelzinnig). Dammen is wel een leuke kandidaat, denk ik.

Het leukst is waarschijnlijk om de evaluatie functie te "leren". Dat is de functie die beoordeelt of een spelsituatie gunstig of ongunstig is. De grote vraag is natuurlijk: Hoe?

Er zijn 2 dingen die bij mij opkomen:
1) Het is niet wenselijk als de evaluatie functie zegt dat een zet gunstig is (althans de bord situatie na de zet), terwijl je later verliest.
2) Misschien is het ook leuk als de evaluatie functie niet al te vaak verrast wordt. D.w.z. de functie mag een positie niet gunstig beoordelen als een zet daarna (door de tegenstander) de positie als ongunstig beoordeelt wordt. De functie moet als het ware een soort vooruitziende blik krijgen. Ik denk dat een iterative deepening aanpak erg goed combineert met het aanleren van dit gedrag. Ik weet alleen nog niet hoe...

Edit:
Dus eigenlijk is het moet de evaluatiefunctie "leren" wat zijn score wordt na de volgende zet(ten). Klinkt een beetje recursief, maar misschien valt er iets te bedenken.

Edit 2:
De variabelen die het leer algoritme als input krijgt, kunnen misschien het beste niet direct de spelsituatie representeren, maar een aantal heuristisch bepaalde "belangrijke eigenschappen" van de spelsituatie (in schaak wil je bijvoorbeeld niet graag 2 pionnen achter elkaar hebben). Dan is de leertaak eigenlijk om te bepalen welke heuristieken het belangrijkst zijn in de gegeven situatie.

[ Voor 20% gewijzigd door KopjeThee op 22-12-2005 17:30 ]


Verwijderd

Dat is er al, in de vorm van (generalized) policy iteration.

Verwijderd

Nog een ander voorstel: misschien kun je dit in een server-client vorm gieten. De server is dan een soort gameserver die de wereld voorstelt waarin je agent leeft. Door middel van een (simpel) protocol kun je dan informatie opvragen over de wereld en acties uitvoeren. Voordeel hiervan is dat het niet uitmaakt in welke taal je je agent schrijft.

Overigens kan men dan zelf ook kiezen welke AI-technieken je gebruikt voor je agent, en hoe je bijvoorbeeld kennis representeert, of welke input/output je een (eventuele) evaluatiefunctie geeft.

Ikzelf wil erg graag weer eens bezig met het trainen van een neuraal netwerk mbv RL. Ook genetische algoritmen (nu geen 'h' meer, sorry daarvoor ;) ) lijkt me erg leuk om mee bezig te gaan.

[ Voor 37% gewijzigd door Verwijderd op 22-12-2005 18:14 ]


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ok er staat een poll in de SP :) Als je niet van plan mee te doen aan dit project breng dan geen stem uit.

Always shoot for the moon. Even if you miss you will land among the stars...


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op donderdag 22 december 2005 @ 17:28:
Dat is er al, in de vorm van (generalized) policy iteration.
Ik zie dat er ook iets is als: "minimax q-learning", kan ook interessant zijn.

Verwijderd

q-learning is een vorm van temporal-difference learning (wat weer een variant van reinforcement learning is), waar ik zelf overigens geen ervaring mee heb. Ik weet zo uit mijn hoofd ook niet meer wat er precies het voordeel van is.

Er zijn inderdaad wel manieren om met temporal-difference learning rekening te houden met het feit dat je agent als "policy" om zijn acties te kiezen, het minimax algoritme gebruikt. Een mogelijkheid is het zg. TD-Leaf algoritme. Het idee daarachter is dat je agent bij minimax eigenlijk niet de waarde van de evaluatiefunctie in de huidige toestand gebruikt, maar de waarde van een toestand die als optimaal uit de minimax-tree komt. Dat heeft gevolgen voor de manier waarop je je evaluatiefunctie update.

Heb evt. wel meer informatie hierover, maar dat moet ik dan wel even opzoeken..

Iets anders: ik wil graag even ingaan op de poll. Het is niet mijn bedoeling om te zeuren over de inhoud van de poll, maar het volgende valt me op. Voorzover ik begrijp, zijn "AI environment" en "Agent server" meer kanttekeningen bij de manier waarop alles geimplementeerd zou worden (volgens mij komen ze zelfs min of meer overeen?), en de rest zijn mogelijke probleemstellingen. Hoort dat wel samen in een poll?

[ Voor 21% gewijzigd door Verwijderd op 22-12-2005 20:22 ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op donderdag 22 december 2005 @ 20:05:
Iets anders: ik wil graag even ingaan op de poll. Het is niet mijn bedoeling om te zeuren over de inhoud van de poll, maar het volgende valt me op. Voorzover ik begrijp, zijn "AI environment" en "Agent server" meer kanttekeningen bij de manier waarop alles geimplementeerd zou worden (volgens mij komen ze zelfs min of meer overeen?), en de rest zijn mogelijke probleemstellingen. Hoort dat wel samen in een poll?
Ja, de inhoud van de poll moet inderdaad een beetje aangepast worden, denk ik. Was mij eigenlijk ook al opgevallen.

  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Verwijderd schreef op donderdag 22 december 2005 @ 20:05:
q-learning is een vorm van temporal-difference learning (wat weer een variant van reinforcement learning is), waar ik zelf overigens geen ervaring mee heb. Ik weet zo uit mijn hoofd ook niet meer wat er precies het voordeel van is.
Bij Q-learning wordt van elke mogelijke actie in de huidige state de waarde bepaald. De actie die bij de maximale waarde hoort, wordt geselecteerd. Overigens is temporal difference learning een uitbreiding die reinforcement learning juist tot reinforcement learning maakt. Wanneer de action space groot is, is dit een techniek die al snel onbruikbaar wordt. Een alternatief is het gebruik van actor-critic networks. Nadeel van deze techniek is dat deze in verhouding tot Q-learning langzaam leert.

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Verwijderd schreef op donderdag 22 december 2005 @ 20:05:
Iets anders: ik wil graag even ingaan op de poll. Het is niet mijn bedoeling om te zeuren over de inhoud van de poll, maar het volgende valt me op. Voorzover ik begrijp, zijn "AI environment" en "Agent server" meer kanttekeningen bij de manier waarop alles geimplementeerd zou worden (volgens mij komen ze zelfs min of meer overeen?), en de rest zijn mogelijke probleemstellingen. Hoort dat wel samen in een poll?
Er had nog niemand op gestemd. Ik heb ze uit de keuze mogelijkheden weggehaald.

Always shoot for the moon. Even if you miss you will land among the stars...


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
ik ben nu op school wat met AI bezig, en moet zeggen dat het tot nu toe een van de interesantste vakken is die ik krijg, dus zou graag meehelpen aan dit project.

ik heb dus 0.0 ervaring, maar leer snel, ik was van plan om in deze vakantie voor mezelf een testje te bouwen met neurale netwerken en cijferherkenning (dus handgetekend)

ik begin met 0 en 1 en daarna probeer ik het zo te maken dat ik een heel alfabet er in zet, maar ik moet nog kijken hoe/wat precies

This message was sent on 100% recyclable electrons.


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Als er een project wordt gekozen, dan is het ook leuk om te weten hoeveel mensen er mee willen doen die eigenlijk op een ander project hadden gestemd.

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

waarom wordt de GoT contest niet gebruikt?

je hebt onmiddellijk een behoorlijke infrastructuur tot je beschikking om te testen...
enige doel: maak de beste bot.

zie het een beetje als het All Stars team...

ASSUME makes an ASS out of U and ME


  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

HIGHGuY schreef op vrijdag 23 december 2005 @ 10:10:
waarom wordt de GoT contest niet gebruikt?

je hebt onmiddellijk een behoorlijke infrastructuur tot je beschikking om te testen...
enige doel: maak de beste bot.
Een groot aantal mensen heeft weinig tot geen ervaring met Java, een ander deel heeft weinig (praktische) ervaring met AI. Ik denk dat op dit moment het uitwisselen van kennis relevanter is.

[edit]
Al kunnen er natuurlijk ook teams gevormd worden. :X

[ Voor 7% gewijzigd door Opi op 23-12-2005 10:13 ]


  • stephan_e
  • Registratie: December 2005
  • Laatst online: 20-03-2022
Ik vindt dit ook wel een interessant project, misschien kan ik ook wel wat bijdragen. Ik heb weinig verstand van Java, maar heb wel ervaring met andere programmeertalen (o.a. VB.NET & C#). Ook heb ik wel wat ervaring en kennis van AI technieken als Neural Networks, Evolutionary Algoritms (Genetic Algorithms, Evolution Strategies, Genetic Programming), Fuzzy Systems, Tree methods (CART & Random Forests).

Mijn tijd is enigsinds beperkt, maar het lijkt me wel interessant. Even over het idee van een rijdende auto in een gesimuleerde omgeving. Het lijkt me een hoop werk om een omgeving te maken die hiervoor geschikt is en dan praat ik nog niet eens over het grafische gedeelte. Alle natuurwetten moeten ingebouwd worden, andere objecten in de simulatie moeten gemaakt worden, maar ook zinvol bewegen, er moeten wegen zijn etc. Het besturen van een auto is trouwens al eens gedaan (alleen dan met een echte auto), het systeem had de naam ALVINN dacht ik (ja, de auto bleef op de weg).

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
HIGHGuY schreef op vrijdag 23 december 2005 @ 10:10:
waarom wordt de GoT contest niet gebruikt?
je hebt onmiddellijk een behoorlijke infrastructuur tot je beschikking om te testen...
De infrastructuur is waarschijnlijk het grootste probleem, omdat dit wel enig werk vereist en de meesten van ons liever bezig zijn met de werkelijke AI van de auto's. Een ingeving is om eens te kijken of er leuke open source mmorpg's zijn. Dat zou misschien al een leuke 3D omgeving kunnen bieden en faciliteiten om met veel bots tegelijkertijd in 1 wereld te zijn. Ik weet niet goed hoe dit soort spellen zijn opgebouwd, maar "hacken" moet natuurlijk voorkomen worden. Het moet niet mogelijk zijn dat auto's stiekum direct informatie over posities van objecten verkrijgen ipv door het analyseren van de binnenkomende beelden.

P.S. De techniek van ALVINN kan natuurlijk als inspiratiebron dienen voor de teams.

[ Voor 19% gewijzigd door KopjeThee op 23-12-2005 11:14 ]


Verwijderd

kopjethee schreef op vrijdag 23 december 2005 @ 11:11:
[...]


De infrastructuur is waarschijnlijk het grootste probleem, omdat dit wel enig werk vereist en de meesten van ons liever bezig zijn met de werkelijke AI van de auto's. Een ingeving is om eens te kijken of er leuke open source mmorpg's zijn. Dat zou misschien al een leuke 3D omgeving kunnen bieden en faciliteiten om met veel bots tegelijkertijd in 1 wereld te zijn. Ik weet niet goed hoe dit soort spellen zijn opgebouwd, maar "hacken" moet natuurlijk voorkomen worden. Het moet niet mogelijk zijn dat auto's stiekum direct informatie over posities van objecten verkrijgen ipv door het analyseren van de binnenkomende beelden.

P.S. De techniek van ALVINN kan natuurlijk als inspiratiebron dienen voor de teams.
Je kunt natuurlijk altijd de broncode van Quake3 gebruiken:
nieuws: Broncode Quake 3 te downloaden onder GPL-licentie

't is alleen wel c++...

[ Voor 4% gewijzigd door Verwijderd op 23-12-2005 11:20 ]


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op vrijdag 23 december 2005 @ 11:19:
[...]

Je kunt natuurlijk altijd de broncode van Quake3 gebruiken:
nieuws: Broncode Quake 3 te downloaden onder GPL-licentie

't is alleen wel c++...
Er zal dus (vereist allemaal verdieping in die code door een aantal mensen):
- Een "level" moeten worden gemaakt die een soort stad representeert.
- Characters moeten worden gemaakt die auto's representeren.
- Een protocol moeten komen om de AI met de input vanuit de auto te laten communiceren. Auto -> AI: beelden + richting + snelheid. AI -> auto: richting + snelheid.
- De beelden voor de auto moeten worden gegenereerd.

Hierbij neem ik even aan dat er al faciliteiten zijn om met meerdere spelers te werken. Het probleem is waarschijnlijk dat de levels + spel lokaal staan, waardoor we niet echt kunnen uitsluiten dat er gehackt wordt.

Is er geen multi player racespel waarvan de source code beschikbaar is?

[ Voor 19% gewijzigd door KopjeThee op 23-12-2005 11:45 ]


Verwijderd

kopjethee schreef op vrijdag 23 december 2005 @ 11:25:
[...]

Is er geen multi player racespel waarvan de source code beschikbaar is?
http://rars.sourceforge.net/
Lijkt perfect voor dit project, behalve dat het geschreven is in C/C++.
Misschien is daar nog wel een voordeel uit te halen: met JNI een koppeling maken met dit spel, waarbij alleen sensor informatie (beelden, gegevens voor een afstands-sensor, "GPS"-data) en acties van de auto doorgegeven worden.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Deze links kunnen interessant zijn, maar het is tot nu toe nog net niet wat we zoeken:

http://vdrift.net/
+ Gemaakt door 1 persoon, die we misschien een beetje om hulp kunnen vragen.
- Maar tot 2 spelers
- Nog geen collision detection...

http://www.ultimatestunts.nl/
- Nog niet multi player, maar wel weer iemand die mogelijk een beetje kan helpen.

http://www.positro.net/trigger/
- Ontwikkelaar heeft geen tijd meer, dus gaat niet verder
- Niet multiplayer

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op vrijdag 23 december 2005 @ 11:56:
[...]

http://rars.sourceforge.net/
Lijkt perfect voor dit project, behalve dat het geschreven is in C/C++.
Misschien is daar nog wel een voordeel uit te halen: met JNI een koppeling maken met dit spel, waarbij alleen sensor informatie (beelden, gegevens voor een afstands-sensor, "GPS"-data) en acties van de auto doorgegeven worden.
Wow, dat ziet er wel erg uit als een omgeving die we nodig hebben.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Hier staan nog wat competities. Misschien weet iemand of daar eventueel ook code van te "hergebruiken" valt?

http://gameprog.it/hosted/guntactyx/info.php Deze ziet er ook gelikt uit :-)

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 08-04 23:00
Als alternatief voor RARS is er ook TORCS. Ik heb het idee dat TORCS iets geavanceerder is.

  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Soultaker schreef op vrijdag 23 december 2005 @ 13:25:
Als alternatief voor RARS is er ook TORCS. Ik heb het idee dat TORCS iets geavanceerder is.
TORCS ziet er nog beter uit. Op zich zijn er ook camera's ingebouwd, maar die zijn alleen voor de weergave op het scherm. De besturing zelf wordt niet op deze beelden gebaseerd, maar dat is misschien relatief eenvoudig aan te passen (wishful thinking).

Ik vroeg me eigenlijk af wat een echte auto met de huidige technologie aan informatie kan krijgen. Misschien zijn er wel handigere hulpmiddelen denkbaar dan alleen beelden. Je wilt graag weten hoe ver objecten zijn. Nu zou je, net als bij ogen, 2 camera's naast elkaar kunnen plaatsen en kunnen proberen de objecten in beide beelden aan elkaar te "koppelen" etc. Maar misschien is er wel een ander soort techniek beschikbaar die op een makkelijkere manier de afstand van een object geeft? Iets met radar of zo. Kortom, welke "uitrusting" zou een auto moeten hebben?

Verwijderd

Stel dat de meesten kiezen voor de auto-simulatie, dan kun je toch beter ivm. de hoeveelheid werk teams maken die elk een bepaald deel voor hun rekening nemen ipv. teams die elk hun eigen totale implementatie proberen te maken?

Je kunt sommige dingen verschillend oplossen, zoals bijv. leren om te gaan met verkeerssituaties, of in alle gevallen dat er een object voor je zit een tijdje stoppen. Twee teams zouden dan kunnen werken aan verschillende oplossingen voor hetzelfde probleem, valt altijd te zien welke beter werkt.

edit: We zouden een onderscheid moeten maken tussen racen en deelnemen aan het verkeer. In deelnemen aan het verkeer zitten denk ik meer verschillende mogelijkheden en deelprocessen.

Mocht je geen gebruik maken van een van de car simulators; voor de natuurwetten zijn er genoeg engines te gebruiken; voor auto-simulaties is Open Dynamics Engine wel eens gebruikt.

[ Voor 16% gewijzigd door Verwijderd op 23-12-2005 14:37 ]


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Zo te zien gaat de virtuele auto de goede kant op en er hebben meer mensen gestemd dan ik had verwacht. Dit kan nog intressant gaan worden. Ik heb de SP weer wat aangepast. Zie daar ook het stappenplan. Ik denk dat we pas goed kunnen zeggen of we een bestaande omgeving kunnen gaan gebruiken als er duidelijk is wat er allemaal verwacht wordt dat het project moet kunnen. Wel handig dat mensen al vast wat research doen/gedaan hebben naar de mogelijkheden :)

Kan ook iedereen aanraden voor zover nog niet gedaan zich in te lezen in de links van de SP. Mocht iemand anders nog leuke aanraders hebben dan zie ik het wel verschijnen ...

Edit: Ik wil de poll vandaag (24-12) rond 18.00 dichtgooien.
Misschien is het, aan de poll en het aantal stemmen (40+) te zien, verstandig om eventueel 2 projecten te starten
:?

[ Voor 15% gewijzigd door seamus21 op 24-12-2005 13:27 ]

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

Twee uitslagen liggen tot nu toe inderdaad wel heel dicht bij elkaar. Lijkt me misschien handig om de voorstanders van deze twee heel duidelijk het idee opschrijven met informatie welke methoden toegepast kunnen worden en welke delen gemaakt moeten worden, hoe dit te verdelen is enz. en dat iedereen die interesse heeft in een van de twee stemt welke de voorkeur heeft. Als ze dan weer bij elkaar liggen zou opsplitsen wel kunnen (wel jammer iig.), anders degene waar de meesten iets in zagen?

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ok ik heb de poll inmiddels gesloten (althans volgens de site van BOOTZ is hij dicht). Met in totaal 44 uitgebrachte stemmen heeft Virtuele auto gewonnen. Lerende monsters op de 2e plek. Zoals jullie misschien al hebben gelezen zat ik al met het idee voor 2 projecten en meerdere teams.

Misschien is het een idee als de bedenkers van hun idee alvast een simpele uitwerking maken van wat het project allemaal moet kunnen. En dan met name wat moet de AI kunnen. En dan zit ik vooral in functionaliteiten te denken. Omgevingen en dergelijke kun je nog achterwege laten. Dan kunnen we dit later met iedereen beter specificeren.

Dan stel ik ook voor dat we alle stemmers opsplitsen en in ieder geval 2 teams. Dan bedoel ik het auto team en het monster team. Misschien handig als iedereen mij mailt met zijn voorkeur? Het mailadres is in mijn profiel te vinden. Anders krijgen we hier straks 40 opsommingen. Dan zal ik daarna wel eenmalig een lijst maken. Natuurlijk kan je daarna nog iets anders gaan doen of in de beginfase van team wisselen.

Mensen die 2 projecten een crap idee vinden moeten dat even posten als er veel tegenstand is dan gaan we natuurlijk een andere aanpak kiezen.

[ Voor 4% gewijzigd door seamus21 op 25-12-2005 14:37 ]

Always shoot for the moon. Even if you miss you will land among the stars...


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
SCHOP. Laten we nou zorgen dat dit project niet al strand bij de poll :)

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

Het wachten is volgens mij op de personen die de "winnende" ideeën hadden. kopjethee Heeft beide ideeën geopperd; ik weet niet of hij een gedetailleerde beschrijving van beide ideeën wil maken, anders wil ik de virtuele auto/taxi ook wel doen. Lerende monsters zou misschien iemand met wat meer verstand van AI in de nieuwere spellen kunnen doen?

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Ik zal hier denk ik ook enigzins aan meehelpen. Maybe ook iets van een AI bouwen, alleen heeft de GotBot iets hogere prioriteit bij mij. Na de GotBot contest geef ik de code (ook de AI) van m'n botje vrij, met wat documentatie erover. Ik hoop dat deze gaat werken met strong AI, maar heb er nog niet echt veel verstand van. Ik moet nog veel leren op het gebied van AI, dus houd daarom zeker dit topic in de gaten.

Die virtuele auto's is een leuk idee. Ik ga eens helpen met een geschikte engine te zoeken.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 04-04 16:23

Macros

I'm watching...

Ik heb een tijd geleden een progje geschreven voor het vak Neural Networks. Het is een educatie tool maar is redelijk modulair opgebouwd en de source kan zo gebruikt worden.
In samenwerking met een GA kan je een redelijk brein maken voor simpele AI.

"Beauty is the ultimate defence against complexity." David Gelernter


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Macros schreef op donderdag 29 december 2005 @ 13:39:
Ik heb een tijd geleden een progje geschreven voor het vak Neural Networks. Het is een educatie tool maar is redelijk modulair opgebouwd en de source kan zo gebruikt worden.
In samenwerking met een GA kan je een redelijk brein maken voor simpele AI.
Kun je en wil je de source openbaar maken? Ik ben er namelijk wel geinteresseerd in. Ik wil wel eens weten hoe je, op een handige manier, een NN in code opbouwd.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 04-04 16:23

Macros

I'm watching...

Wij hebben een beetje gecheat en hebben een bestaande NN lib gebruikt en aangepast.
Het appje is tegenwoordig hier te vinden: http://www.vulcanusgames.net/~jtrain
Bij mij is het beeld tegenwoordig nogal gaar tijdens het leren, waarschijnlijk iets dat veranderd is in de nieuwe Java versies waardoor het nu een beetje vreemd loopt, maar verder werkt het nog goed :)

"Beauty is the ultimate defence against complexity." David Gelernter


  • KopjeThee
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op woensdag 28 december 2005 @ 21:11:
Het wachten is volgens mij op de personen die de "winnende" ideeën hadden. kopjethee Heeft beide ideeën geopperd; ik weet niet of hij een gedetailleerde beschrijving van beide ideeën wil maken, anders wil ik de virtuele auto/taxi ook wel doen. Lerende monsters zou misschien iemand met wat meer verstand van AI in de nieuwere spellen kunnen doen?
Ik dacht niet dat ik het project van lerende monsters had bedacht, maar die van de auto wel. Als basis kan er eens hiernaar gekeken worden, zoals eerder genoemd:
http://torcs.sourceforge.net/

Ik moet bekennen dat ik waarschijnlijk bijzonder weinig tijd heb de komende periode, dus verwacht van mij weinig echte programmeer-inbreng.

In grote lijnen is het ideeeen zo realistisch mogelijke auto in een zo realistisch mogelijke omgeving zelfstandig te laten rijden. Dit idee voegt een aantal zaken toe aan bestaande projecten, zoals torcs:
- De programmeur kan niet direct beschikken over info over andere objecten in de wereld en afstanden/snelheden van die objecten, maar deze info zal moeten worden afgeleid uit de data die de sensoren (video camera / radar / gps of andere real-life sensoren) leveren.
- Het doel is niet om te racen, maar zoals tijdens de rijles: vlot en veilig van a naar b komen.

Als eerste moet er een project worden aangemaakt bij soundforge oid. Hier kan documentatie, ideeen en dergelijke overzichtelijker worden ondergebracht dan in dit forum. Later kan ook de code er een plaatsje krijgen. Verder zijn er mensen nodig die taken op zich willen nemen.

In de eerste fase zal er iets aan de "wereld" van torcs gesleuteld moeten worden. Ik zit te denken aan een eenvoudige stad, dus een paar (hoge) gebouwen met wat wegen ertussen. Dit hoeft grafisch allemaal niet zo geweldig te zijn. Ik hoop dat de physics van torcs redelijk realistisch zijn, dus gedrag in bochten en dergelijke, zodat hier geen werk aan is. Verder moet de api voor autoprogrammeurs worden aangepast aan de nieuwe eisen van realisme (de api moet het dus alleen nog mogelijk maken om viedobeelden, radarbeelden en gps data op te vragen). Als het project tot zover overleeft hebben we een heel interessant startpunt voor wat echte AI, denk ik :-)

In de tweede fase denk ik dat het van belang is dat we gaan denken over AI die uit alle data relevante informatie kan halen. In het begin zouden we er voor kunnen kiezen niets met medeweggebruikers te doen, maar ons tot doel stellen: herken de weg (bochten). Later ook auto's herken en snelheid en richting bepalen. Hier zullen wel de nodige AI technieken gebruikt kunnen worden... We kunnen meerdere opties hiervoor uitproberen en een winnaar kiezen om dan door te gaan naar level 3 :-)

In de derde fase willen we de verkregen informatie gaan gebruiken om onze auto(s) door het verkeer te loodsen (eerst misschien lege weg, later ook andere auto's, weer later andere soorten weggebruikers, meer verkeersregels, etc). Voor deze fase kunnen we ons waarschijlijk meer laten inspireren door al bestaande torcs auto's en dergelijke, want de daar gebruikte heuristieken/AI maakt gebruik van vergelijkbare informatie en heeft (in eerste instantie) een enigszinds vergelijkbaar doel (auto laten rijden, zonder botsingen). Ook hier kunnen verschillende mensen/teams weer verschillende mogelijkheden onderzoeken.

De AI methoden zijn wat mij betreft helemaal open. Iedereen die iets leuks kent en denkt te kunnen toepassen, moet dat vooral roepen, lijkt mij.

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Even een schop. Mijn tentamens komen eraan en heb tot nu toe twee mails gehad van mensen die gezegd hebben aan welk project ze willen meedoen. Lerende monsters of Virtuele Auto.

Ik ben zelf ook bezig geweest ondertussen met een zelflerende Boter Kaas en Eieren. Hier was voldoende stof over te vinden online en is erg leerzaam geweest. Deze is bijna af. Als ik er een GUI bijzit en mijn hulptool is af en javadoc zit erin verwerkt dan zal ik het ergens beschikbaar stellen.

Always shoot for the moon. Even if you miss you will land among the stars...


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Misschien ook wel makkelijk om aan te geven waar de online stof te vinden is die je hebt gebruikt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

iedereen nog in de examens?

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Yep. Morgen mijn laatste tentamen van dit blok. (Databases 3). PL/SQL en SQL. Echter heb ik daarna twee projectweken welke ik bezig ben ons project af te maken en de laatste puntjes op de I te plaatsen voor practica's van dit blok.

Druk druk (maar wel leuk) :)

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

*kick*
Pagina: 1