josteinaj Skrevet 4. august 2005 Del Skrevet 4. august 2005 (endret) Har prøvd meg litt på å lage programmer som utvikler seg selv vha. evolusjon en stund nå. Både ved hjelp av Evolusjonære Algoritmer og Nevrale Nettverk (uten at jeg har noe som helst utdanning i noe av det, så er nok mye som kunne blitt gjort bedre). I denne "virtuelle verdenen" (som den tidligere tråden her på forumet liker å kalle den), så er det to problemer jeg støter på hele tiden: Hva skal programmer sloss om? Her pleier jeg å la programmene spise virtuelt gress, og ha en virtuell "helse" osv. En ting jeg mye heller vil prøve etterhvert er å la programmene sloss om CPU-tid. Men kanskje det burde vært flere ting å sloss om? Én grunn for å sloss virker litt lite synes jeg. Evolusjon har jo vist seg å være mer effektivt ved at hver art kommer i to utgaver: mann og kvinne, så en annen ting å sloss om kan jo være en make. Om man tenker seg minnet og/eller harddiskplass som arealet programmene kan bevege seg på så kan de kanskje sloss om territorium? Hvordan sloss programmer? Dette lurer jeg mest på. Man kan jo utstyre programmene med virtuelle armer, tenner, pistoler osv, men det krever jo en viss grad grafikk (enten den er synlig eller ikke) og om kunstig intelligente programmer skulle vokse frem om 50 år eller noe sånt, så tviler jeg på at de avgjøre uenigheter med en virtuell håndbak. På en eller annen måte må programmene hacke hverandre, men hvordan? Det må være noen klart definerte regler. Edit: et lite pent informativt spørsmålstegn som innleggsikon Endret 4. august 2005 av Pion Lenke til kommentar
Giddion Skrevet 4. august 2005 Del Skrevet 4. august 2005 vel jeg har som deg ingen utdannelse innen Evolusjonære Algoritmer eller programmering for den del. Men det prosjektet ditt virker veldig artig, for å komme med en ide så lurer jeg på hvordan det hadde vært hvis du laget et "dyr" neste på samme måte du lager en fyr i fks Diablo, du setter 5 poeng til styrke å 5 til hastighet, men du kan jo legge inn flere variabler. Og evelusjonen kan jo være å flytte et poeng til en annen skill. Når det gjelder hva de skal kjempe om er det vel greiest å la de kjempe om et virituelt område. Når "Dyrene" møter hverandre kan de sloss og kampen blir avgjort via et regnestykke med noe random. Når "dyrene har levd en tid så deler den seg. så kan du jo legge inn at når "rasen" har kommet opp i et vist antall så evelusjonerer den seg. Hvis du har lyst til å legge til mere Hi-teck så kunne du jo ha lagt til forskjelige type områder med fks. snø der det ikke er så enkelt å sloss hvis du har korte bein. Så kan du jo legge inn årstider osv... Jeg har bare slengt ut noen ideer, men jeg håper du får nytte av det. Lykke til Lenke til kommentar
Legion Skrevet 4. august 2005 Del Skrevet 4. august 2005 jeg skal ikke si det 100% sikkert, men å få programmene til å kjempe om cpu-tid tviler jeg sterkt på går. tildeling av cpu-tid er styrt av operativsystemet og om jeg husker riktig så må det trap'e ned i kernelmodus når dette skjer og program skal ikke ha tilgang til kernelnivå (iallfall ikke hos winNT versjoner, w9x er en annen sak). videre er det slik i windows at programet i front har 1. pri på cpu-tid, så et program i bakgrunnen vil automatisk være nedprioritert. noe av den samme problematikken vil du møte dersom du skal la de kjempe om diskplass. program A får ikke lov av OS'et å hverken lese/skrive i minneområdet til program B. (vil tro anti-virus apps vil få hetta dersom dette skjer også) ...derimot kan du såklart gjøre alt dette virtuelt, slik at de kjemper om virtuell cpu-tid osv... jeg prøvde meg en gang på å la 2 virtuelle 'maurkolonier' kjempe om 'sukker' som jeg hadde plassert på mellom dem. arbeidet kokte bare bort etter en stund, husker ikke hvorfor. lufter dette som en idé. Lenke til kommentar
Mr.Garibaldi Skrevet 4. august 2005 Del Skrevet 4. august 2005 jeg skal ikke si det 100% sikkert, men å få programmene til å kjempe om cpu-tid tviler jeg sterkt på går. tildeling av cpu-tid er styrt av operativsystemet og om jeg husker riktig så må det trap'e ned i kernelmodus når dette skjer og program skal ikke ha tilgang til kernelnivå (iallfall ikke hos winNT versjoner, w9x er en annen sak). videre er det slik i windows at programet i front har 1. pri på cpu-tid, så et program i bakgrunnen vil automatisk være nedprioritert. Med mindre du lager kampen om hvilket program som ikke skal kjøre i bakgrunnen. Lag et hovedprogram som du setter i fokus, og som fordeler cpukraftene videre med en gitt %. Til å begynne med er den 50/50, men for hver "kamp" endres den med 1%. Dette vil riktignok gi vinneren en stor fordel, men slik er det jo også i den virkelige verden.... Lenke til kommentar
GeirGrusom Skrevet 5. august 2005 Del Skrevet 5. august 2005 Forskjellige prosesser og threads har forskjellig tilgang til CPU, dette kan både programmer og operativsystem gjøre. Lenke til kommentar
Legion Skrevet 5. august 2005 Del Skrevet 5. august 2005 poenget er at programmene vil kjempe mot cpu-schedulern og ikke cputid direkte. schedulern bestemmer hvilke prosesser/threads som skal ha cpu, et program kan ikke gjøre dette direkte siden dette er på kernelnivå. samtidlig vil jeg tro at en slik kamp vil føre til race conditions... Lenke til kommentar
josteinaj Skrevet 7. august 2005 Forfatter Del Skrevet 7. august 2005 (endret) Giddion: Har tenkt gjennom lignende idèer, men sånn som du beskriver det så kommer det til å finnes et "optimalt dyr", og når simuleringen kommer dit vil det ikke være noe poeng å simulere videre. Det jeg vil frem til er en biosfære uten begrensninger for hvor smarte dyra kan bli. Når det gjelder tildelig av CPU-tid og harddisk hadde jeg i utgangspunktet tenkt å gjøre alt dette virtuelt. "programmene" jeg har hittil er allerede virtuelle (og ikke engang egne threads, men kjøres sekvensielt etter hverandre). Om jeg noensinne får noen spennende resultater utifra dette så ville det vært morro å prøve å med ekte programmer, skrivetilgang til harddisk og cpu-tid. Det er jo først da programmene virkelig får utfolde seg, (internettilgang f.eks Men problemet da er jo selvfølgelig om det plutselig oppstår et program som ødelegger systemet så mye at simuleringen må starte forfra igjen. Når jeg sier jeg har virtuelle programmer så mener jeg at jeg bruker et bittelite superenkelt "programmeringsspråk" som programmene blir autogenerert i. Hver linje er ganske enkelt: HVIS <flere uttrykk som sammenligner variabler> SÅ <variabel> = <mattematisk uttrykk av variabler>; Der en variabel styrer retningen og en annen styrer aksellerasjonen, en serie med variabler representerer sanseinntrykkene til programmene, og en annen serie brukes kun som mellomlagring/minne. Dette vil jo kunne byttes ut med et ekte programmeringsspåk dersom man skulle kjørt simuleringen ikke-virtuelt. Edit: i tilfelle dere er interessert, sånn fungerer det hos meg nå; Dyra spiser gress som vokser nære vanndammer, de kan spise hverandre (er ikke helt sikker på om jeg har gjort det lønnsomt å drepe enda) menn angriper menn og damer angriper damer, dør av alderdom etter 20 sekunder, får en unge hvis en mann og dame treffes der dama har ca.80% HP igjen og mannen minst 40% (eller noe sånt). Dama mister 50% av HP'en, og mannen kanskje 10%. (alt dette mest for at dyra/programmene skal ha noe de må tilpasse seg). Vannet flytter plassering hvert minutt, så det er ikke lurt å ligge å sove i vannkanten. Problemet jeg har nå er at alle dyra hoper seg opp i en flokk som blir tettere og tettere, der alle dyra står helt stille, og av en eller annen grunn overlever de veldig bra sånn. Tror kanskje det er fordi alle driver og spiser av hverandre konstant sånn at HP'en blir fordelt likt blandt alle. Endret 7. august 2005 av Pion Lenke til kommentar
Mr.Garibaldi Skrevet 8. august 2005 Del Skrevet 8. august 2005 Edit: i tilfelle dere er interessert, sånn fungerer det hos meg nå; Dyra spiser gress som vokser nære vanndammer, de kan spise hverandre (er ikke helt sikker på om jeg har gjort det lønnsomt å drepe enda) menn angriper menn og damer angriper damer, dør av alderdom etter 20 sekunder, får en unge hvis en mann og dame treffes der dama har ca.80% HP igjen og mannen minst 40% (eller noe sånt). Dama mister 50% av HP'en, og mannen kanskje 10%. (alt dette mest for at dyra/programmene skal ha noe de må tilpasse seg). Vannet flytter plassering hvert minutt, så det er ikke lurt å ligge å sove i vannkanten. Problemet jeg har nå er at alle dyra hoper seg opp i en flokk som blir tettere og tettere, der alle dyra står helt stille, og av en eller annen grunn overlever de veldig bra sånn. Tror kanskje det er fordi alle driver og spiser av hverandre konstant sånn at HP'en blir fordelt likt blandt alle. Forslag, hva hvis det å spise av et annet dyr ikke gir en 1:1 overførsel av masse, men heller 0,90:1? (eller en hvilken som helst annen ratio) Massen/energien/whatever som forsvinner kan være grunnet skaden det andre dyret tar, eller grunnet fordøyelsen som tar energi på å konvertere fra mat til egen helse. Men for at dette så skal balanseres med gresset bør det også ikke være en 1:1 ratio der, men en som er mer ugunstig enn å spise andre, f.eks. 0,75:1. Lenke til kommentar
fudun Skrevet 8. august 2005 Del Skrevet 8. august 2005 Problemet jeg har nå er at alle dyra hoper seg opp i en flokk som blir tettere og tettere, der alle dyra står helt stille, og av en eller annen grunn overlever de veldig bra sånn. Tror kanskje det er fordi alle driver og spiser av hverandre konstant sånn at HP'en blir fordelt likt blandt alle. Hva om de må slåss litt før de kan spise hverandre? Bruk f.eks. et slags RPG(terning)-system og la de lære at det tar på å angripe andre. Ta også med erfaringspoeng, slik at de som har gjort det bra i kamp, får større sjans til å overleve. Kanskje du kan ha noen grunnleggende atributter (str, farge, styrke, intelligens etc.) som alle får utdelt ved fødselen, enten via arv eller tilfeldighet. Etterhvert vil man da kanskje få se litt darwinisme.. Lenke til kommentar
josteinaj Skrevet 9. august 2005 Forfatter Del Skrevet 9. august 2005 Mr.Geribaldi: har satt det opp som du sa nå (bare med lavere prosenter). Nå hoper de seg ikke opp i klynger lenger, men tror det er mest fordi jeg tidligere hadde glemt å la dyra ta skade av å bli angrepet, mens de alikevel fikk liv av å angripe andre fudun: Jeg vil unngå å legge for mange kunstige elementer inn i dette i frykt for å finne et optimalt dyr (selv om jeg sikker finner det sånn som oppsettet er nå og) . Dessuten liker jeg å holde det enklest mulig Om dette hadde funka skikkelig kunne det jo sikkert latt seg overføre til online rollespill f.eks. Har egentlig mest lyst til å prøve dette på roboter og sånt en gang jeg har muligheten til det, men da må jeg i det minste få disse dyra til å finne nærmeste oase. Lenke til kommentar
Mr.Garibaldi Skrevet 10. august 2005 Del Skrevet 10. august 2005 Mr.Garibaldi: har satt det opp som du sa nå (bare med lavere prosenter). Nå hoper de seg ikke opp i klynger lenger, men tror det er mest fordi jeg tidligere hadde glemt å la dyra ta skade av å bli angrepet, mens de alikevel fikk liv av å angripe andre Kult! Håper du holder oss oppdatert på utviklingen av dyrene, for det er et spennende prosjekt du holder på med! Lenke til kommentar
pertm Skrevet 10. august 2005 Del Skrevet 10. august 2005 Det er jo naturlig at en må brukke energi eller masse for å skaffe seg mer enten en spisser andre "dyr" eller "planter". Jeg ville begynt så enkelt som mulig. For å lage noe som oppfører seg som et avansert og komplisert dyr kan være veldig komplisert. Noe jeg var med på å gjøre da jeg hadde et fag om dette var at vi brukte Lego mindstorms roboter som enkle insekter. De skulle ha en slik opp førsel som var noe slikt 1 Hvis fare løp unna 2 Hvis ikke fare lett etter mat 3 Hvis mett og ikke fare lett etter make Da var det slik at noen ting som den kunne oppfatte ble betegnet som farer og andre var mat. Når den var mett så ville den etter hvert bli sulten igjen. Lenke til kommentar
josteinaj Skrevet 10. august 2005 Forfatter Del Skrevet 10. august 2005 Noe jeg var med på å gjøre da jeg hadde et fag om dette var at vi brukte Lego mindstorms roboter som enkle insekter. De skulle ha en slik opp førsel som var noe slikt 1 Hvis fare løp unna 2 Hvis ikke fare lett etter mat 3 Hvis mett og ikke fare lett etter make Hvilket fag var dette? Noe jeg kan velge på NTNU? Ble denne oppførselen programmert inn for hånd i forveien eller måtte de lære seg at fiender er farlige, mat er godt osv? Lenke til kommentar
pertm Skrevet 10. august 2005 Del Skrevet 10. august 2005 (endret) Dette var et fag jeg tok i Narvik som het Kunskapbaserte systemer. Jeg regner med at du kan velge noe tilsvarende ved NTNU. Du kan jo se på sidene til www.idi.ntnu.no og se hva fag du finner. Det faget jeg tok var et siv.ing fag så et tilsvarende fag har sannsynligvis krav på andre fag som må være tatt først. http://www.idi.ntnu.no/undervisning/teknologi.php 2 Intelligente systemer Her kan du for eksempel spesialisere deg på å utvikle systemer som hjelper deg når du skal ta vanskelige beslutninger. Slike systemer brukes til så ulike ting som å hjelpe leger med å stille medisinske diagnoser, eller å vurdere sannsynlige fremtidige bevegelser i aksjekurser. Emnekombinasjonen dekker også temaer som "Hvordan få en datamaskin til å forstå naturlig språk?" og hvordan man kan lage programmer ("agenter") som kommuniserer med andre programmer og utfører oppgaver på vegne av sine oppdragsgivere. Du lærer også hvordan datamaskiner kan "se" og "høre", slik at de kan brukes til så ulike anvendelser som å være "øyne" for roboter og romfartøyer, kontroll av papir som kommer ut av en papirfabrikk eller analyse av røntgen- og ultralydbilder av en pasient på et sykehus. Obligatoriske emner høst: TDT4290 Kundestyrt prosjekt, samt minst ett av følgende emnekombinasjonsspesifikke emner: TDT4270 Statistisk bildeanalyse og -læring TDT4275 Naturlig språk-grensesnitt IT3706 Kunnskapsrepresentasjon Obligatoriske emner vår: Minst ett av følgende emnekombinasjonsspesifikke emner: TDT4265 Datasyn TDT4280 Distribuert kunstig intelligens og intelligente agenter IT3704 Maskinlæring og case-basert resonnering IT3708 Sub-symbolske AI-metoder De fagene som er i fet skrift er fag som jeg tror kan være noe se på. Du må nesten se nærmere på om noen av dem er noe som er interresant for deg. I dette tilfellet ble det programmert på forhånd fordi beslutningene gikk på Lego Mindstorms sin prossesor (RCU tror jeg det het) og den har ikke stor prosseseringskraft. Endret 10. august 2005 av pertm Lenke til kommentar
josteinaj Skrevet 10. august 2005 Forfatter Del Skrevet 10. august 2005 takker pertm. jeg får sjekke hvilke fag jeg kan velge mellom når jeg kommer til 4.klasse (er da jeg kan velge det tenker jeg). Lenke til kommentar
Jankee Skrevet 29. august 2005 Del Skrevet 29. august 2005 (endret) Faga pertm henviser til er alle masterfag som krever ein del bakgrunnskunnskap og ikkje er noko ein hopper rett inni. Sidan du programmere allereie kan ein vel rekne med at du har programmeringskunnskapene i orden. Dei første mellomfaga som går inn på kunstig intelligens er: IT2105: Functional Programming in LISP IT2702: Artificial Intelligence Desse faga er åpne for alle som har studierett ved universitetet meiner eg, (gjekk der i 2001) Siv.ing-faga (TDT-koder) er nok mindre tilgjengelege som åpne fag utan at ein har faga i ein studiepakke relatert til ein mastergrad. Edit Legger ved hovudsida til AI og LG-gruppa ved NTNU. http://www.idi.ntnu.no/grupper/ai/ Endret 29. august 2005 av Jankee Lenke til kommentar
josteinaj Skrevet 30. august 2005 Forfatter Del Skrevet 30. august 2005 Takker massevis Jankee. Skal passe på å få med meg mest mulig av disse KI fagene. Jeg får vel begynne å se på hvordan jeg får de inn i utdanningsplanen min. Og LISP skal jeg prøve å lære meg, så godt som alle kilder jeg finner om KI anbefaler det jo. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå