Toon posts:

[alg] AI voor wargames: plannen maken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik bezig met een analyze te maken voor een wargame (zoiets als Command and conquer). Nu heb ik op de boekenplank het boek 2D game development liggen waarin redelijk wat over AI in games uit de doeken wordt gedaan.

Op een hoger niveau kan je plannen maken om je doel te bereiken als AI player.

voorbeeld:
doel: verzamel geld
manier:
• ga de omgeving af
• kijk of er in de buurt geld ligt
• loop naar geld
• onthou positie van geld voor volgende keer.
• keer terug naar basis.

Nu is het algemeen doel in het game natuurlijk: "verslaag alle vijanden".

doel: verslaag vijanden
manier:
• ontwikkel en onderhoud basis (onderhouden moet constant gebeuren)
• maak units (mannekes en voertuigen) >> welke hij maakt hangt van "state" af
• probeer een aanval met x-aantal units
• aanval mislukt: voeg toe aan geheugen: met x units kan je niet winnen
• probeer nu met x+ 20 units
• aanval lukt

Op een lager niveau kan je elke unit met een "state" implementeren: attack, retreat,random,stop,find {food,light,money}

op een hoger niveau kan je de AI player (die de basis en de units controlleerd) ook in een status zetten die hij dan kan doorgeven aan zijn units.

Kunnen jullie je mening delen over mijn aanpak en tips geven voor andere plannen?

[ Voor 3% gewijzigd door Verwijderd op 09-01-2004 18:18 ]


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Deze al gelezen? Is denk ik wel interessant voor je. :)

Link naar gamesdev

Sundown Circus


  • Sluuut
  • Registratie: Februari 2003
  • Laatst online: 22-05 16:19
Wat mij beter lijkt qua unit aanval van een AI computer, is dat het aantal een gerandomized aantal personen + tanks zou zijn, dus bijvoorbeeld P=16 + T=8 via de taglines die op een map staan naar een andere kant. Als ze langs een enemy komen dan gaan ze dat aanvallen en gaan ze daar in een cirkel dat gebied bekijken en verder aanvallen.

Zo krijg je de ene keer dat de AI Computer via rechtsonder een aanval doet met 16 mannetjes en 3 tanks, terwijl ze de volgende keer via linksboven met 4 mannetjes en 10 tanks komen.

Op deze manier krijg je niet het effect van C&C, dat tanks constant via dezelfde kant komen aanvallen en constant met dezelfde hoeveelheid units.

Verzamelpunten moet je trouwens ook hebben voor je units, maar wel minimaal 10, (wat wederom gerandomized moet zijn) anders weet je altijd al waar een hoop units klaar staan.

Randomizen lijkt me daarom het belangrijkste in zo'n game, qua AI van de Computer. Tot nu toe is het grootste nadeel dat je alles kan voorspellen.

57696520646974206c65657374206973206e657264


Verwijderd

Topicstarter
Sluuut schreef op 09 januari 2004 @ 18:25:
Wat mij beter lijkt qua unit aanval van een AI computer, is dat het aantal een gerandomized aantal personen + tanks zou zijn, dus bijvoorbeeld P=16 + T=8 via de taglines die op een map staan naar een andere kant. Als ze langs een enemy komen dan gaan ze dat aanvallen en gaan ze daar in een cirkel dat gebied bekijken en verder aanvallen.
De vraag die ik hierbij stel: moet je de AI van de computer ontwikkelen zoals je zelf het spel zou spelen? Wat jij hier doet is gewoon random een aantal mannetjes genereren. Normaal zou je die moeten kopen met geld dat je zelf moet gaan oogsten. Je geeft dus de computer al een voorsprong.

intressant "plan" trouwens:
• val aan
• als er nog vijanden binnen cirkel zitten >> val aan
Zo krijg je de ene keer dat de AI Computer via rechtsonder een aanval doet met 16 mannetjes en 3 tanks, terwijl ze de volgende keer via linksboven met 4 mannetjes en 10 tanks komen.

Op deze manier krijg je niet het effect van C&C, dat tanks constant via dezelfde kant komen aanvallen en constant met dezelfde hoeveelheid units.
Wederom is dat van jou random en niet echt AI. Ikzelf zou proberen eerst een leger te maken en daarmee aan te vallen. Moet je de computer ook zo laten denken? Sommige mensen vinden dat ze direct moeten gaan aanvallen natuurlijk.
Verzamelpunten moet je trouwens ook hebben voor je units, maar wel minimaal 10, (wat wederom gerandomized moet zijn) anders weet je altijd al waar een hoop units klaar staan.
Verzamelpunten is intressant en zal ik onthouden!
Randomizen lijkt me daarom het belangrijkste in zo'n game, qua AI van de Computer. Tot nu toe is het grootste nadeel dat je alles kan voorspellen.
Random is OOK een pattroon: het random pattroon en dit is ook niet echt realistisch.

Bedankt alvast voor je inbreng!

  • Sluuut
  • Registratie: Februari 2003
  • Laatst online: 22-05 16:19
Nee sorry, natuurlijk moet je de computer pas de units laten kopen (wederom random) die hij kan betalen nadat zijn oogst binnen is. Anders zou het niet eerlijk zijn he ;)

Het is niet echt AI maar je krijgt tenminste geen lompe dingen zoals in C&C, dat alles al te voorspellen is...

57696520646974206c65657374206973206e657264


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:03
Even een vraagje tussendoor: is het de bedoeling dat je een speler schrijft die een goede menselijke speler emuleert, of een speler die het spel zo goed mogelijk speelt? Dat is namelijk niet noodzakelijkerwijs hetzelfde; een computer heeft bepaalde voordelen over een menselijke speler die 'ie kan uitbuiten met een specifieke strategie. In het algemeen zal een optimale (computer)speler dus anders spelen dan een goede menselijke tegenstander, aangezien mensen niet perfect kunnen tellen en rekenen, geen perfect geheugen hebben en maar een beperkt aantal eenheden tegelijk kunnen beheren.

Verwijderd

Topicstarter
Soultaker schreef op 09 januari 2004 @ 21:54:
Even een vraagje tussendoor: is het de bedoeling dat je een speler schrijft die een goede menselijke speler emuleert, of een speler die het spel zo goed mogelijk speelt? Dat is namelijk niet noodzakelijkerwijs hetzelfde; een computer heeft bepaalde voordelen over een menselijke speler die 'ie kan uitbuiten met een specifieke strategie. In het algemeen zal een optimale (computer)speler dus anders spelen dan een goede menselijke tegenstander, aangezien mensen niet perfect kunnen tellen en rekenen, geen perfect geheugen hebben en maar een beperkt aantal eenheden tegelijk kunnen beheren.
Hierover heb ik nog niet nagedacht. Dit brengt natuurlijk weer een nieuwe invalshoek met zich mee.

Ik denk dat een computer tegenstander die echt ALLES zelf beredeneerd iets te hoog gegrepen is voor mijn niveau. Daarentegen is een mengeling tussen enkele computer algoritmes en mogelijkheden (onbeperkt geheugen) - denk ik - het meest intressante, nee?

Verwijderd

Topicstarter
*kick*

Ik misschien een manier gevonden hoe ik het zou kunnen aanpakken:
De AI-speler heeft een aantal keuzes dat hij moet maken:

• Hoeveel moeite moet ik steken in aanval vs verdediging vs terrein-onderzoek vs vergaren van resources.
• Welke units moet ik maken: moet ook beetje afhangen van de map en welke units de tegenspeler maakt
• hoe moet ik mijn units gebruiken: grootte van de groep, welke wegen gebruik ik om aan te vallen,wat is de tijd tussen twee aanvallen
• welke tussen doelen wil ik nog bereiken en in welke volgorde

Dit zijn nu een aantal variablen (niet zoveel, 20 tal) die je de eerst keer kan random laten generen. (tussen bepaalde grenzen uiteraard).
Als je instelling bvb verdedigend is, worden de units ook meer op die "state" geplaatst als normaal.

Nu kan je bijhouden welke variablen er werden gegenereerd samen met de uitslag van het spel.

Dit is dan een vorm van training. Elke keer dat ik ermee speelt, en hij verliest, gaat hij het over een hele andere boeg moeten gooien. Als hij moest winnen, weet hij dat het goed werkt.

Dit kun je dan nog personaliseren aan de hand van de usernaam. Bvb s-man valt veel aan: hierop moet hij kunnen inspelen.

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 26-05 21:22
Ik vind dat de post hierboven van s-man erg goed is, met een paar opmerkingen:

• De computer mag natuurlijk meer weten dat de tegenstander. Goede spelers weten waar iedereen in een level begint (kan beginnen). Ook vind ik dat je tot op bepaalde hoogte de computer mag laten 'spieken' met betrekken tot hoe de tegenstander speelt; verdedigend of juist aanvallend. Red Alert (II) valt bijvoorbeeld altijd als eerste de tegenstander aan die zijn basis het snelste opbouwt.
• Wat ik meestal in games niet goed vind is dat er altijd met veel te kleine aantallen wordt aangevallen. 3 tanks en 5 ventjes doen niets. Als dat niet lukt met je het niet weer 5 keer proberen. Over het algemeen wordt er veel tank-rush tactieken toegepast.

Verbouwing


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Heb je dit erg interessante boek al eens gelezen?

Het vertelt alles over team-based strategy, hierarchical strategy, shortest path algorithms (erg goede A* implementaties!), computer cheating om ze een voordeel te geven (!!!) en allerhande dingen die in hedendaagse games gebruikt worden, in artikelen geschreven door de toppers uit de industrie zelf (denk aan bijdragen van Lionhead Studios over hoe ze de Black&White AI hebben geschreven).

Professionele website nodig?


  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
Wat misschien ook interessant is om te bekijken is de optie om 1 tekstfile per map te maken en daarin alle units te plaatsen. Achter deze units ga je "gewichten" plaatsen, dus bijvoorbeeld "Rocket soldier 0,7". Dit geeft "de kans" aan dat die unit wordt gebouwd op die map. Zo kan je handig sturen welke units erdoor de ai moeten worden gemaakt op welke map. Een gewicht van 0 is natuurlijk dat er geen units van worden gebouwd (denk aan zee eenheden op een land map).

Daarnaast kun je veel "gedrag" moduleren door gebruik te maken van state diagrammen. Daarin kun je toestanden aanmaken zoals "Zoek resource", "Verdedig", "Val aan" enz. Bij elke toestand horen specifieke acties en bepaalde gebeurtenissen (condities) zorgen ervoor dat de ai tussen states wisselt. Als de ai dus in de staat "Zoek resource" is en zijn basis wordt aangevallen, dan komt ie terecht in de status "Verdedig" en gaat ie zijn basis verdedigen. Misschien niet het beste voorbeeld maar je begrijpt denk ik het idee wel :)

Naast gamedev kun je ook veel informatie vinden op www.gamasutra.com. Hier staat bijvoorbeeld een tutorial die uitlegt hoe je de ai kunt laten omgaan met 3d landschappen en dus ook het voordeel begrijpt van hoogteverschil enz.

Ook belangrijk is een pathfinding algoritme. Niks zo erg als eenheden die ergens tegen aan zitten te rijden of niet doen wat je wil of elkaar in de weg zitten enz enz. (de spelers van dit genre weten wel wat ik bedoel :) ).

Houd ons maar op de hoogte van de je vorderingen want dit is wel een leuk topic.

P.S. Een goed boek helpt ook en probeer het zo simpel mogelijk te houden. Fuzzy logic en/of neural networks zijn (nog) niet aan de orde denk ik :)

[ Voor 13% gewijzigd door ProgrammerX op 11-01-2004 20:29 ]


  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 26-05 21:22
ProgrammerX schreef op 11 januari 2004 @ 20:25:

[knip]

Houd ons maar op de hoogte van de je vorderingen want dit is wel een leuk topic.

P.S. Een goed boek helpt ook en probeer het zo simpel mogelijk te houden. Fuzzy logic en/of neural networks zijn (nog) niet aan de orde denk ik :)
Ik denk dat je hiermee de plank totaal misslaat. Als je de eerste paar pagina's van het boek dat hierboven wordt genoemt leest, lees je dat AI totnogtoe een ondergeschoven kindje was. Maar de grote, veelverkopende spellen van de afgelopen tijd hadden geweldige AI.
However, a revolution has been brewing. The past few years have witnessed game AIs vastly richer and more entertaining than the simplistic AIs of the past. As 3D rendering hardware improves and the skyrocketing quality of game graphics rapidly approaches the point of diminishing returns, AI has increasingly become one of the critical factors in a game's success, deciding which games become bestsellers and determining the fate of more than a few game studios. In recent years, game AI has been quietly transformed from the redheaded stepchild of gaming to the shining star of the industry.
The game AI revolution is at hand.
Ik zou dus zeggen: AI is erg belangrijk en ik zou veel mogelijkheden bekijken voordat je iets met tekstfiles die de computer bij een map moeten helpen gaat verzinnen. De tegenstander kan dan altijd precies hetzelfde verwachten. Je moet inspelen op je tegenstander me je units en de strategie moet iedere keer tot op zekere hoogte anders zijn.

Verbouwing


  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
Mithrandir schreef op 11 januari 2004 @ 20:53:
Ik denk dat je hiermee de plank totaal misslaat. Als je de eerste paar pagina's van het boek dat hierboven wordt genoemt leest, lees je dat AI totnogtoe een ondergeschoven kindje was. Maar de grote, veelverkopende spellen van de afgelopen tijd hadden geweldige AI.
Wie heeft er hier iets gezegd over de veelverkopende spellen ?? Ik niet in ieder geval, wij hebben het nog altijd over een relatief simpel ai systeem dat sman moet gaan implementeren en dan denk ik dat fuzzy logic en neural networks nog niet aan de orde zijn. Tenzij jij natuurlijk ff een neural network voor een veelverkocht spel op een avondje implementeerd :?
Ik zou dus zeggen: AI is erg belangrijk en ik zou veel mogelijkheden bekijken voordat je iets met tekstfiles die de computer bij een map moeten helpen gaat verzinnen. De tegenstander kan dan altijd precies hetzelfde verwachten. Je moet inspelen op je tegenstander me je units en de strategie moet iedere keer tot op zekere hoogte anders zijn.
Niemand heeft ook gezegd dat ai niet belangrijk is. De tip met de tekstfiles is een goede om simpel mee te beginnen. Dat neemt niet weg dat je met deze waarden niet kan variëren (random bijvoorbeeld). Een van de beste 3d realtime strategy spellen ooit ("Total annihilation") werkt namelijk met deze tekstfiles.

Dus voordat je wat begint te blaaten, lees eerst waar het topic echt over gaat.

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

ProgrammerX schreef op 11 januari 2004 @ 22:31:
[...]
Wie heeft er hier iets gezegd over de veelverkopende spellen ?? Ik niet in ieder geval, wij hebben het nog altijd over een relatief simpel ai systeem dat sman moet gaan implementeren en dan denk ik dat fuzzy logic en neural networks nog niet aan de orde zijn. Tenzij jij natuurlijk ff een neural network voor een veelverkocht spel op een avondje implementeerd :?
Waarom begin je nu ineens over neurale netwerken te ranten, die hebben hier niks mee van doen :?

Fuzzy logic is compleet anders, dat gebruikt ieder hedendaags spel. Zonder fuzzy logic heb je gewoon een belabberde AI tegenstander.
Dus voordat je wat begint te blaaten, lees eerst waar het topic echt over gaat.
Mjah, voordat jij begint te blaten, gooi ff deze 2 compleet verschillende concepten niet op 1 hoop. De rest van je post zit zeer nuttig spul bij maar de laatste zin verknal je een beetje ;)

Professionele website nodig?


  • ProgrammerX
  • Registratie: Juli 2002
  • Laatst online: 26-02-2021
curry684 schreef op 11 januari 2004 @ 23:37:
[...]

Waarom begin je nu ineens over neurale netwerken te ranten, die hebben hier niks mee van doen :?

Fuzzy logic is compleet anders, dat gebruikt ieder hedendaags spel. Zonder fuzzy logic heb je gewoon een belabberde AI tegenstander.
[...]

Mjah, voordat jij begint te blaten, gooi ff deze 2 compleet verschillende concepten niet op 1 hoop. De rest van je post zit zeer nuttig spul bij maar de laatste zin verknal je een beetje ;)
Nou, om even mijn punt een beetje duidelijker over te brengen zonder er een heel verhaal van te maken :)

Mijn suggestie is juist om het redelijk simpel te houden en dat neurale netwerken en andere geavanceerde technieken hier (voor de ts) niet nodig zijn. En dan sla ik de plank volgens sommige mis :? Vandaar mijn vorige reactie eigenlijk :)

Ik heb ook niet gezegd dat neurale netwerken en fuzzy logic hetzelfde zijn :) Het zijn alleen termen die graag gebruikt worden, en mijn punt was juist om dat te negeren en voor een andere aanpak te gaan.

Verwijderd

Topicstarter
twee nieuwe ideën:

Fuzzy logic:
-----------------
Rond de unit wordt een virtuele cirkel getrokken. Wanneer een target dicht bij hem is, is hij eerder agressief:
• waarde agressief staat op 100.
• waarde random staat op 20.
• waarde terugtrekking staat p 2.
• waarde nieuwsgierigheid staat op 30.

Wanneer het target verder van hem staat gaat agressief verminderen en andere eigenschappen stijgen. Bovenstaande kan ik zeker implementeren en weet ik hoe te coderen.


Genetische Algorithmes:
------------------------------
• genereer populatie (units)
• per unit wordt er bijgehouden wanneer hij is aangemaakt
• als een unit sterft wordt dit gemeld aan de ai-player
• deze houdt dit dan bij in db's samen met de fitness waarde
• nieuwe units generen op bais van de beste uit de db's

Hier heb aantal problemen met coderen en is dit trouwens wel een goede manier?

Neuraal netwerk
---------------------
• de algemene variablen van de ai-player kunnen als gewichten worden gebruikt. De som hiervan kan je dan gaan vergelijken t.o.v. vooropgestelde tresshold-waarde om te kijken of de missie succesvol was. Als het niet succesvol was moet je andere startvariabelen nemen.

Ben ik hier een aantal zaken door elkaar aan het gooien of zit ik al in de goede richting?

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

Alarmnummer

-= Tja =-

Ik zou zeker even naar onderstaand boek kijken:

Prolog Programming for Artificial Intelligence

[ Voor 3% gewijzigd door Alarmnummer op 12-01-2004 11:59 ]


  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 06:41
Een neuraal netwerk werkt globaal als volgt:

Je hebt een aantal input neuronen dan één of meer hidden layers met ook weer een aantal neurenonen en dan een aantal outputneuronen. Dit netwerk kun je trainen via het error back propagation algoritme ofwel je stopt er input waarden in het vergelijkt dat met de output van het netwerk waarna je de wegingen van connecties tussen neuronen aanpast en weer een nieuwe test uitvoert. Hoe groter het aantal hidden layers en hidden neuronen hoe groter het leervermogen, maar ook de kans dat hij de test set op gaat slaan en andere (nieuwe dingen) niet kan verwerken.

Verwijderd

Topicstarter
In theorie is dat welk mooi maar hoe kan je zoiets implementeren in een game?

  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Devilfish schreef op 20 januari 2004 @ 11:10:
Een neuraal netwerk werkt globaal als volgt:

Je hebt een aantal input neuronen dan één of meer hidden layers met ook weer een aantal neurenonen en dan een aantal outputneuronen. Dit netwerk kun je trainen via het error back propagation algoritme ofwel je stopt er input waarden in het vergelijkt dat met de output van het netwerk waarna je de wegingen van connecties tussen neuronen aanpast en weer een nieuwe test uitvoert. Hoe groter het aantal hidden layers en hidden neuronen hoe groter het leervermogen, maar ook de kans dat hij de test set op gaat slaan en andere (nieuwe dingen) niet kan verwerken.
Het aantal hidden layers heeft er niet zo heel erg veel mee te maken. In principe is 1 hidden layer voldoende. Onder het kopje wiskunde (1a) heb ik een, hopelijk duidelijk, stuk over multilayer perceptrons (waar we het hier volgens mij over hebben) geschreven: Wetenschap en Levensbeschouwing FAQ

De outputs van het netwerk kun je koppelen aan acties van de agent. Maar omdat neurale netwerken op zichzelf supervised learning techniques zijn, zie ik niet in waarom je ze dan ook direct zou implementeren. Fuzzy logic kan je idd gebruiken omdat je hiermee eenvoudiger menselijke acties kunt simuleren.

  • it0
  • Registratie: April 2000
  • Laatst online: 27-12-2025

it0

Mijn mening is een feit.

Ik ben toch wel verbaasd over wat er wordt geadviseerd. Met name prolog aangezien dit niet een imperatieve taal is, het is erg goed voor AI problemen met name redenatie maar voor spellen zoals C&C .... doe maar niet.

Meestal is de ai rulebased binnen spellen, gewoon om voorspelbaar gedrag te krijgen.
Of mooier een turing machine.

Een neuraal netwerk is computationeel niet echt haalbaar, gecombineerd met aantal units variablelen gaan de berekeningen exponentieel omhoog.
En dan ga je ervan uit dat je neuraal netwerk niet eens "vast loopt"

Genetisch algoritme heeft alleen maar nadelen t.o.v. regels in deze context. JE wil tenslotte dat hij zelf de beste strategie gaat ontwikkelen. Ben benieuwd hoe je dat gaat parametiseren, dan heb ik het niet eens over wat je aan geheugen kwijt bent om al deze strategieën op te slaan en met elkaar te kruisen...

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

Alarmnummer

-= Tja =-

it0 schreef op 21 januari 2004 @ 14:03:
Ik ben toch wel verbaasd over wat er wordt geadviseerd. Met name prolog aangezien dit niet een imperatieve taal is, het is erg goed voor AI problemen met name redenatie maar voor spellen zoals C&C .... doe maar niet.
Prolog kan hiervoor uitstekend gebruikt worden imho. Het is juist extra handig dat het niet imperatief is, maar declaratief. Doordat het declaratief is, blijven je algoritmes veel schoner en kan je je beperken tot de essentie van de zaak.

Het is uiteindelijk de bedoeling dat je een systeem op zet dmv een integratie van talen en componenten. Sommige talen laten zich beter lenen voor bepaalde problemen dan andere, kies de juiste taal voor het probleem ( en het moet dus ook eenvoudig te integreren zijn).

[ Voor 21% gewijzigd door Alarmnummer op 21-01-2004 14:25 ]


  • it0
  • Registratie: April 2000
  • Laatst online: 27-12-2025

it0

Mijn mening is een feit.

Alarmnummer schreef op 21 januari 2004 @ 14:23:
[...]

Prolog kan hiervoor uitstekend gebruikt worden imho. Het is juist extra handig dat het niet imperatief is, maar declaratief. Doordat het declaratief is, blijven je algoritmes veel schoner en kan je je beperken tot de essentie van de zaak.

Het is uiteindelijk de bedoeling dat je een systeem op zet dmv een integratie van talen en componenten. Sommige talen laten zich beter lenen voor bepaalde problemen dan andere, kies de juiste taal voor het probleem ( en het moet dus ook eenvoudig te integreren zijn).
En hoe reëel vindt je dat s-man dit gaat implementeren? Ik ben het met je eens dat je dit soort problemen met prolog kort en mooi kunt opschrijven, maar de implicaties van dit geïntegreerd hebben lopen met een C&C kloon lijken me niet haalbaar.

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

Alarmnummer

-= Tja =-

it0 schreef op 21 januari 2004 @ 14:30:
[...]
En hoe reëel vindt je dat s-man dit gaat implementeren? Ik ben het met je eens dat je dit soort problemen met prolog kort en mooi kunt opschrijven, maar de implicaties van dit geïntegreerd hebben lopen met een C&C kloon lijken me niet haalbaar.
Het ligt er maar net aan hoe makkelijk prolog (of een andere taal) valt te integreren met het systeem. Ik gebruik bv Jython om te scripten binnen mijn java applicaties, en heb net een prolog interpreter in elkaar gezet (ook voor java). Hierbij is het ook de bedoeling dat er een nauwe integratie tussen java en prolog ontstaan. Sommige problemen (in mijn geval juridische regels) zijn ondergebracht binnen prolog en daarom ook makkelijk te beheren/wijzigen. Verder maak ik weer gebruik van de uitkomsten :
[rml][ Alg] GUI layout advies gezocht *[/rml]

Als je dus kunt zorgen voor een goeie integratie, dan raad ik het 100% aan om een combinatie van talen en technieken te gebruiken.

[ Voor 20% gewijzigd door Alarmnummer op 21-01-2004 14:38 ]


Verwijderd

Kun je niet gewoon het spel eerst zonder AI maken. En dan een multiplayer versie waar een begindeel van de AI zit en die mee laten kijken en leren zonder dat ie speelt.
Ik kan me herrinneren dat ik altijd een progje had waarmee je kon praten(typen) die leerde ook zelf als je dan een woord typte wat ie nog niet kende vroeg die om de betekenins en bewaarde dat. als je het progje een maand had gebruikt werkte die best wel goed. mischien dat dit ook mogelijk is met de AI van een spel.

ik hoop dat je het snapt anders moet je maar even schreeuwen ;)

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

Alarmnummer

-= Tja =-

Verwijderd schreef op 21 januari 2004 @ 14:39:
Kun je niet gewoon het spel eerst zonder AI maken. En dan een multiplayer versie waar een begindeel van de AI zit en die mee laten kijken en leren zonder dat ie speelt.
Het probleem is dat er dus zoveel dingen gebeuren en dat sommige dingen interessant zijn om te weten: als mannetje in ravijn dan mannetje dood. Maar niet als-2-keer-rechts-met-muis.. dan 50% van de gevallen een linker muisklik. Het is dus erg lastig om een computer iets te laten leren (machine learning), en zeker als je hem de wereld geeft als school.

[ Voor 3% gewijzigd door Alarmnummer op 21-01-2004 14:55 ]


  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Alarmnummer schreef op 21 januari 2004 @ 14:53:
[...]

Het probleem is dat er dus zoveel dingen gebeuren en dat sommige dingen interessant zijn om te weten: als mannetje in ravijn dan mannetje dood. Maar niet als-2-keer-rechts-met-muis.. dan 50% van de gevallen een links. Het is dus erg lastig om een computer iets te laten leren (machine learning), en zeker als je hem de wereld geeft als school.
Het eerste punt heeft naar mijn idee niet zo heel erg veel met AI te maken; je kan het ook vanuit een fysisch oogpunt benaderen: snelheid van neerkomen omgekeerd evenredig aan healt-verandering.

[edit]
Of doel je hierbij op het feit dat de compu het uit z'n processor moet laten om karakters erin te laten lopen?

[ Voor 9% gewijzigd door Opi op 21-01-2004 14:57 ]


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

Alarmnummer

-= Tja =-

OpifexMaximus schreef op 21 januari 2004 @ 14:56:
[...]
Het eerste punt heeft naar mijn idee niet zo heel erg veel met AI te maken; je kan het ook vanuit een fysisch oogpunt benaderen: snelheid van neerkomen omgekeerd evenredig aan healt-verandering.
Als je tegen de computer zegt: kijk wat ik doe en leer ervan. Hij zal leren dat als een mannetje in een ravijn valt, dat dit mannetje dood gaat. Dit is dus een goed en nuttig ding om te leren voor het spel (anders zal deze ai-tegenstander eenvoudig zijn om te verslaan omdat ie iedere keer zijn mannetje in een ravijn laat vallen). Maar afgezien van deze nuttige kennis krijg je dus ook enorm veel ruis-kennis. Kennis dat niet echt interessant is voor het spel, zoals het gemiddeld klikgedrag van de gebruiker, of dat na 1 altijd 2 komt (als hij de score bv bekijkt).

Ik ben verder geen specialist in machine learning, maar ik heb recentelijk mijn kennis weer eens opgefrist.

  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Alarmnummer schreef op 21 januari 2004 @ 15:01:
Maar afgezien van dit praktische kennis krijg je dus ook enorm veel ruis-kennis. Kennis dat niet echt interessant is voor het spel, zoals het gemiddeld klikgedrag van de gebruiker, of dat na 1 altijd 2 komt (als hij de score bv bekijkt).
Tot op zekere hoogte is dit wellicht het geval, maar je zou de ruis kunnen beperken door de inputvariabelen juist te kiezen. Kijk naar de acties van het te besturen individu en niet naar de inputs van de speler zelf.

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

Alarmnummer

-= Tja =-

OpifexMaximus schreef op 21 januari 2004 @ 15:03:
[...]

Tot op zekere hoogte is dit wellicht het geval, maar je zou de ruis kunnen beperken door de inputvariabelen juist te kiezen. Kijk naar de acties van het te besturen individu en niet naar de inputs van de speler zelf.
Ik denk dat het zelf met een enorme beperking van intput variablen nog steeds een erg compexe zaak gaat worden om interessante info af te leiden.

Ik heb hier trouwens geen praktische ervaring mee, zou misschien leuk zijn als GoT project ;)

  • it0
  • Registratie: April 2000
  • Laatst online: 27-12-2025

it0

Mijn mening is een feit.

Alarmnummer schreef op 21 januari 2004 @ 14:33:
[...]

Het ligt er maar net aan hoe makkelijk prolog (of een andere taal) valt te integreren met het systeem. Ik gebruik bv Jython om te scripten binnen mijn java applicaties, en heb net een prolog interpreter in elkaar gezet (ook voor java). Hierbij is het ook de bedoeling dat er een nauwe integratie tussen java en prolog ontstaan. Sommige problemen (in mijn geval juridische regels) zijn ondergebracht binnen prolog en daarom ook makkelijk te beheren/wijzigen. Verder maak ik weer gebruik van de uitkomsten :
[rml][ Alg] GUI layout advies gezocht *[/rml]

Als je dus kunt zorgen voor een goeie integratie, dan raad ik het 100% aan om een combinatie van talen en technieken te gebruiken.
Het is maar vanuit welke hoek je iets wil implementeren, bij spellen denk ik aan efficientie, prolog is maar een manier om een probleem te noteren, daarom zou ik zeggen noteer het in je taal waar je mee bezig bent ipv interpreters te bouwen, waarmee je enorm aan het afwijken bent van je origineel plan.

Waarom heb je bij je law prog voor prolog gekozen en niet voor baysian rules?

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

Alarmnummer

-= Tja =-

it0 schreef op 21 januari 2004 @ 15:26:
[...]
Het is maar vanuit welke hoek je iets wil implementeren, bij spellen denk ik aan efficientie, prolog is maar een manier om een probleem te noteren, daarom zou ik zeggen noteer het in je taal waar je mee bezig bent ipv interpreters te bouwen, waarmee je enorm aan het afwijken bent van je origineel plan.
Als je een kant en klare prolog implementatie kunt gebruiken, doe je dat uiteraard :)
Waarom heb je bij je law prog voor prolog gekozen en niet voor baysian rules?
De lawgame heeft eigelijk geen prolog als basis, maar een op maat gemaakte logische taal als je dat zo mag noemen (het is niet een erg geavanceerde taal, je kan bv zelf al geen rules/functies definieeren)

Voor mijn afstuderen heb ik wel een prolog interpreter in elkaar gezet die als basis dient voor andere systemen. het voordeel is dat je er enorm makkelijk in kan prototypen, en doordat rules ook weer data zijn, kan je ook makkelijk interpreters schrijven in prolog voor prolog programma`s.

Boven op prolog hebben ik 2 engines draaien. Op object nivo heb ik een object engine die een programma geschreven in de object taal kan evalueren en ook meteen prooftrees meeneemt. (Deze object taal is gewoon wat ifthen zaken met slot en frames ed). De prooftrees die hier uit komen, voeg je toe aan een meta engine. De meta engine, kan mbv een programma geschreven in de meta taal en dus die prooftrees weer nieuwe gegevens afleiden.


code:
1
2
3
4
5
6
object taal                                    meta taal
      |                                              |
object engine  -------->conclusies---------->  meta engine ---> meta conclusies              
      |                                              |
------------------------------------------------------------
                          prolog

Als je prolog als basis neemt, kan je daar dus weer een aantal systemen op bouwen.

En 'baysian rules'? Ik heb mijn werkgever er even naar gevraagd en hij zei dat dit te maken had met toevoegen van statistische gegevens aan rules. In hoeverre verschil dit met het redeneren met onzekerheden (zoals je bv bij Prolog kan doen).

[edit]
Ik was al ff met photoshop aan de slag geweest, maar het is nog niet klaar.
Afbeeldingslocatie: http://rint.rechten.rug.nl/images/Peter/overview.jpg

[ Voor 15% gewijzigd door Alarmnummer op 21-01-2004 15:52 ]


  • it0
  • Registratie: April 2000
  • Laatst online: 27-12-2025

it0

Mijn mening is een feit.

Alarmnummer schreef op 21 januari 2004 @ 15:40:

Als je prolog als basis neemt, kan je daar dus weer een aantal systemen op bouwen.

En 'baysian rules'? Ik heb mijn werkgever er even naar gevraagd en hij zei dat dit te maken had met toevoegen van statistische gegevens aan rules. In hoeverre verschil dit met het redeneren met onzekerheden (zoals je bv bij Prolog kan doen).
Voor mij staat baysian rules synoniem aan redeneren met onzekerheden. Waarschijnlijk omdat ik toen bij het vak redeneren met onzekerheid dat kreeg. Waar Prolog aan backtracking doet gaat baysian rules voor de meest waarschijnlijke optie oftewel met de hoogste kans.

Bij jouw komt er 1 antwoord uit en met BR komt er zoiets uit van 90% dat en 6% dat 4% zus. Maar veel interesanter is het dus als het zegt 55% zus en 45% zo. Beide mogelijkheden wil je dan bekijken.

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

Alarmnummer

-= Tja =-

it0 schreef op 21 januari 2004 @ 16:45:
[...]
Voor mij staat baysian rules synoniem aan redeneren met onzekerheden. Waarschijnlijk omdat ik toen bij het vak redeneren met onzekerheid dat kreeg. Waar Prolog aan backtracking doet gaat baysian rules voor de meest waarschijnlijke optie oftewel met de hoogste kans.

Bij jouw komt er 1 antwoord uit en met BR komt er zoiets uit van 90% dat en 6% dat 4% zus. Maar veel interesanter is het dus als het zegt 55% zus en 45% zo. Beide mogelijkheden wil je dan bekijken.
Je krijg ook alle oplossingen die afgeleid zijn te zien hoor :) Als je bij prolog geen acties gaat ondernemen (bv een cut), dan krijg je meerdere contexten, en dat is exact hetgene dat voor juristen weer interessant is omdat ze dan allerlei argumentaties naast elkaar neer kunnen leggen, bv dat 1 conclusie beter is dan de andere (regel van hoger gerechtshof is krachtiger dan een van de rechtbank bv)

De bedoeling is dat mbv metaredenaties hier weer extra informatie uit afgeleid gaat worden. Stel dat je 2 toepasbare regels hebt, dan zou je bv de instantie die een van die regels heeft voorgesteld, kunnen meenemen als metadata. Aan de hand van de prooftrees kan je icm met die metadata weer nieuwe gegevens afleiden.

Verder was het voor de wetgeving niet interessant om te werken met onzekerheid (ik had het zelf ook al voorgesteld).

[edit]
Verder is het metaredenatie proces niet echt in een vaste vorm te gieten (dus met 1 engine ben je niet klaar). Het ligt er maar net aan wat voor informatie je wilt zien, en hoe bepaalde problemen opgelost moeten worden. Vandaar dat een prolog als ondergrond ook handig is, omdat je daar enorm veel mee kan uitdrukken. Maar dat is in principe niet mijn taak. Hiervoor is er een AI-student (en ik geloof ook een rechten student) die hierop gaat afstuderen, ik zorg voor de rest: prolog, object-taal, object-engine, en communicatie tussen object en meta gebeuren. Hij hoeft dan 'alleen' de meta engine/taal te ontwikkelen.

[ Voor 49% gewijzigd door Alarmnummer op 21-01-2004 17:12 ]

Pagina: 1