Et enkelt eksempel på kunstig intelligens ved hjelp av Delphi Array

(Computer simulerer læringsprosessen av menneskelig, læring ved å korrigere feil!) Artificial Intelligence (AI) er et forskudd gren av vitenskapen som studerer prosessen med menneskelig tenkning og forsøk på å bruke kunnskapen til å simulere samme prosessen i maskiner. Som datamaskiner er langt fremme i maraton av behandling maskiner, er AI anses å være den grenen av Computer Science enn for general Science.There har vært mange forskning og utvikling innen kunstig intelligens. Arealet av forskningen inkluderer tale og mønstergjenkjenning, naturlig språk prosessering, lære av tidligere erfaringer (lære ved å gjøre og korrigere feil!), Resonnering under situasjoner som gir begrenset eller ufullstendige opplysninger etc. AI er praktisk anvendt innen dataspill, ekspertsystemer, nevrale nettverk, robotikk og mange andre områder av vitenskap og technology.In denne artikkelen vil vi prøve å demonstrere en veldig enkel praktisk eksempel på kunstig intelligens programmering i Delphi bruker Delphi arrays. Jeg har valgt en Nepali spill som heter "GATTA TIPNE Khel" (som betyr steinplukking spillet) til dette formålet. Vi kan se små barn å spille dette spillet på lekeplassen. (Forresten, Nepal, min nasjon, er en liten asiatisk land mellom India og Kina. Nylig Nepal var i hovedpunktet av media for den beryktede konge massakren der hele Familien til den regjerende kongen ble brutalt drept.) I denne steinplukking spillet en haug med noen småstein holdes i bakken. En av de to spillere plukker en, to eller tre småstein om gangen i sin tur, slik at pålen for den andre spilleren å velge for sin alternative omdreining. I denne alternative plukking prosessen, vil den spilleren som plukker den siste pebble (e) være taperen og kalt til å være en DOOM i Nepali.The hoved logikken i spillet er å forlate haug av småstein med 13, 9, 5 eller 1 pebble (er) for motstanderen å pick.In programmet startnummer av småstein er satt til 17, 21, 25, 29 ... etc. slik at datamaskinen kan vinne alltid hvis den ikke gjør en feil. Men i den virkelige leke datamaskinen ser ut til å bli gradvis lære ved å korrigere feilene fra tidligere spilte spill. Til slutt finner det alle sine feil og korrigerer dem til å bli en uslåelig mester. Det virker datamaskin simulerer den psykologiske læringsprosessen av dyr, læring ved å korrigere og ikke gjenta mistakes.A flerdimensjonale rekke elementer (1..4,1..3) er valgt som instruksjonsboken til datamaskinen for å plukke småstein. Instruksjonsboken inneholder fire sider med tre linjer med instruksjoner for å plukke småstein. Den første linjen instruerer å plukke et enkelt småstein, den andre linjen instruerer å plukke to og den tredje linjen instruerer å plukke 3 småstein. I begynnelsen, velger datamaskinen en tilfeldig side og en tilfeldig linje med instruks om å plukke småstein. Når spillet er ferdig, hvis datamaskinen mister spillet, er den siste instruksjonen rød-merket (slettet) og undervisningen vil ikke leses i fremtiden. Etter å ha spilt mange kamper, vil alle instruksjoner som fører til en tapt spillet er røde merket og det vil bli liggende bare instruksjonene de fører til en win.Well, er det nok for beskrivelsen av game.Let oss hoppe direkte til koden nedenfor: enhet Unit1; interfaceuses Windows, Meldinger, SysUtils, Klasser, Grafikk, kontroller, skjemaer, dialoger, StdCtrls, ExtCtrls, Knapper, skriver TForm1 = klasse (TForm) malinger1: TPanel; LabelPeb1: TLabel; LabelPeb2: TLabel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; Label1: TLabel; ComboBox1: TComboBox; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; LabelIWon: TLabel; LabelYouWon: TLabel; LabelTotPlayed: TLabel; ListBox1: TListBox; GroupBox1: TGroupBox; BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn5: TBitBtn; Panel5: TPanel; Labelbtn: TLabel; BitBtnResign: TBitBtn; Label7: TLabel; Prosedyren FormCreate (Sender: TObject); Prosedyren ComboBox1Change (Sender: TObject); Prosedyren BitBtnResignClick (Sender: TObject); Prosedyren LabelbtnClick (Sender: TObject); Prosedyren BitBtn1Click (Sender: TObject); private {felleserklæringer} //Prosedyre for å vise rester Pebbles prosedyre DispPebbles (const nPebs: heltall); //Prosedyre for å tilbakestille variabler og etiketter etter et spill er ferdig prosedyren Finish; //Prosedyre for å aktivere eller deaktivere noen kontroller; Prosedyren ManageEnabling (l-verdi: Boolean); //Prosedyre for å vise vinne eller tape meldinger prosedyre Messaging (konst tapt: Boolean; konst trekker seg: Boolean); //Fast Prosedyre for å spille spillet Prosedyre LearnByMistakes; offentlige {offentlige erklæringer} end; Var Form1: TForm1; gjennomføringen {$ R *.DFM}varPlayedGames,ComputerWon:Integer;totPebs,RemainPebs,nTurn:Integer;OldPageNum,OldLineNum:Integer;//18 mulige permutasjoner av 3 sifre: 1,2 og 3 //for å bestemme antall småstein for å ta for computeraPermutations: Array [1..6,1..3] av heltall; //En bok som inneholder instruksjons sider (4 ) og linjer (3 i hver side) å trekke småstein for computeraPages: Array [1..4,1..3] av heltall; prosedyre TForm1.FormCreate (Sender: TObject); //permutasjoner av 1,2 og tre i gruppen av 3s å fylle permutasjon Arrayconst cPermutations = '123132213231312321'; varx, y: Integer; begynne //Fylling Permutation Array for x: = 1 til 6 gjøre for y: = 1 til 3 gjøre aPermutations [x, y ]: = strtoInt (kopi (cPermutations, (x-1) * 3 + y, 1)); //Fylling linjene av alle sider av undervisningen Book (matrise aPages [1..4,1..3]). for x: = 1 til 4 gjøre for y: = 1 til 3 gjøre aPages [x, y]: = y; ComboBox1.ItemIndex: = 1; PlayedGames: = 0; ComputerWon: = 0; totPebs: = 17; {Standard til 17 småstein} RemainPebs: = 17; {Alt er intakt inntil nå} enden, prosedyre TForm1.DispPebbles (konst nPebs:integer);beginLabelPeb1.Caption:=intToStr(nPebs);LabelPeb2.Caption:=LabelPeb1.Caption;end;procedure TForm1.ManageEnabling (l-verdi: Boolean); begynne BitBtn1.Enabled: = l-verdi; BitBtn2.Enabled: = l-verdi; BitBtn3.Enabled: = l-verdi; Labelbtn.Enabled: = l-verdi; BitBtnResign.Enabled: = l-verdi; GroupBox1.Enabled: = l-verdi; if (RemainPebs < 3) og (RemainPebs > 0) og l-verdi deretter begynne hvis RemainPebs < 3 så BitBtn3.Enabled: = False, hvis RemainPebs < 2 da BitBtn2.Enabled: = False; Sluttslutt; prosedyre TForm1.Finish; begynne LabelTotPlayed.caption: = intToStr (PlayedGames); LabelIWon.caption: = intToStr (ComputerWon); LabelYouWon.caption: = intToStr (PlayedGames-ComputerWon); DispPebbles (strToInt (ComboBox1.Items [ComboBox1.ItemIndex])); totPebs: = strtoint (LabelPeb1.Caption); RemainPebs: = totPebs; ManageEnabling (sann), ComboBox1.Enabled: = True; Labelbtn.Enabled: = False; BitBtnResign.Enabled: = False; ende; prosedyre TForm1.ComboBox1Change (Sender: TObject);beginDispPebbles(strToInt(ComboBox1.Items[ComboBox1.ItemIndex]));totPebs:=strtoint(LabelPeb1.Caption);RemainPebs:=totPebs;end;procedure TForm1.Messaging (konst tapt: Boolean; konst trekker seg: Boolean), ('! Jeg sier opp Du vant spillet igjen !!') begynne Inc (PlayedGames);; MESSAGEBEEP (0) hvis tapt da begynne hvis trekker seg deretter showmessage annet showmessage ('! Gratulerer Du vant !! Jeg erkjenner nederlag!'); ende annet begynne inc (ComputerWon); showmessage ('! Hei Du mistet jeg vant denne GAME !!'); ende; Finish; ende; Prosedyre TForm1.LearnByMistakes; varx, PageNum, LineNum, nTemp, nTakes: integer; begynne hvis RemainPebs < = 0 begynner deretter //Openent trakk den siste pebble (e) vant Computer !! //DispPebbles (0); Messaging (usann, usann);! exit; ende; nTemp: = tilfeldig (6) 1; PageNum: = RemainPebs mod 4, hvis PageNum = 0, så PageNum: = 4; for x: = 1 til 3 gjør begynne LineNum: = aPermutations [nTemp, x]; if (aPages [PageNum, LineNum] > 0) deretter bryte; ende, hvis x > 3 deretter {Ingen umerkede instruksjoner forble Alle er redmarked !!!} begynne //Effekten av dette trekket var ukjent tidligere, men det viste seg å. være dødelig denne gangen! //Radmark Dette oldLineNum av dette oldPageNum! aPages [OldPageNum, OldLineNum]: = - 99; //Mistet med Avtroppende melding! ListBox1.Items.add (intTostr (nVil du) + 'trakk jeg.'); DispPebbles (RemainPebs); Messaging (sann, sann); gå; slutt; nTakes: = aPages [PageNum, LineNum]; hvis nTakes > = RemainPebs deretter begynne ListBox1.Items.add (intTostr (nVil du) + 'I (Computer):.' + intTostr (RemainPebs)); //Jeg er den siste skuffen og jeg mistet !! //Radmark Dette LineNum av dette PageNum! aPages [PageNum, LineNum]: = - 99; DispPebbles (0); Messaging (true, false); gå; slutt; ListBox1.Items.add (intTostr (nVil du) + 'I (Computer):.' + IntTostr (nTakes)); showmessage ('I (Computer) ta:' + IntTostr (nTakes) + 'Pebble (er) for denne runden!'); OldPageNum: = PageNum; oldLineNum: = LineNum; RemainPebs: = RemainPebs-nTakes; ManageEnabling (sann); DispPebbles (RemainPebs); end; prosedyre TForm1.BitBtnResignClick (Sender: TObject); begininc (PlayedGames), økes (ComputerWon), økes (nVil du); ListBox1.Items.add (intTostr (nVil du) + '. Resignert Du'); Finish; ende; prosedyre TForm1.LabelbtnClick (Sender: TObject); beginBitBtnResign.SetFocus; BitBtnResign.Click; ende; prosedyre TForm1.BitBtn1Click (Sender: TObject); varnTaken: Integer; begynne med avsender som TBitBtn gjøre nTaken: = Tag; ManageEnabling (usann); if (RemainPebs = totPebs) da begynne ComboBox1.Enabled: = False; ListBox1.Clear; nVil du: = 1; ende annet inc (nVil du); ListBox1.Items.add (intTostr (nVil du) + 'Du:.' + IntTostr (nTaken)); RemainPebs: = RemainPebs-nTaken; DispPebbles (RemainPebs); LearnByMistakes; end; end.A pakkede filer game.zip inneholder alle stuffs (skjemaer, andeler og prosjekt fil) av driften prosjekt av dette spillet. Dette prosjektet ble utarbeidet og kjøre med Delphi - 3.At siste for de interesserte venner: Jeg har programmert et spill av strategisk tenkning ved hjelp av prinsippene for kunstig intelligens. Spillet er noe som Chess.The spillet ble programmert ved hjelp av Power og Assembly Language. Dette spillet har vunnet førsteprisen i første All Nepal Software Competition, kan programmer tilfreds 2000. Spillet lastes ned på: http //: www.viewnepal.com/gamezip.exe (en selvutpakkende PKZIP fil). Jeg vil gjerne gi en kopi via e-post hvis nedlastingen ikke work.game.zip Anmeldelser



Previous:
Next Page: