Reply
 
LinkBack Thread Tools Display Modes
  #1   Report Post  
Old April 6th 04, 09:07 PM
Mikko Nummelin
 
Posts: n/a
Default Shakkiohjelma (thread in Finnish)

On Tue, 6 Apr 2004, Juha Kettunen wrote:

"Juha Kettunen" wrote in message


sori tää on vaan Mikolle: kokeilin muuten ohjelmaasi Craftya vastaan, ja se
hävisi aika nopeasti ... vielä on varmaan paranneltavaa ... mutta varmaan
toimii ihmisiä vastaan .


Laitetaan jatkot 'rec.games.chess.computer':iin, mutta ongelmana on siinä
väärä kieli. Ei voi mitään. Joka tapauksessa, ohjelmani (Needle) on
räplätty parissa kuukaudessa kasaan (vrt. Craftyn vuosikausia
jatkuneeseen kehitystyöhön!) ja siinä on runsaasti korjattavaa. On
todella vaikeaa tehdä vaikkapa evaluointifunktiota ja asemataulukkoa ilman
bugeja.


Mikko Nummelin
  #2   Report Post  
Old April 6th 04, 09:28 PM
Mikko Nummelin
 
Posts: n/a
Default Shakkiohjelma (thread in Finnish)

Juha Kettuselle:

Eli bittilaudoista. Ideana on se, että kutakin asiaa varten on vähintään
neljä eri bittilautaa, "suora", "vaakasuora" ja kaksi "viistoa". Käytän
näistä tässä nimitystä S,R,NW ja NE. "Suora" bittilauta (S) voidaan
esimerkiksi kyhätä kokoon seuraavasti:

a1=0,b1=1,c1=2, ... ,a2=8, ... ,g8=62,h8=63 (ymmärtänet systeemin).

"Vaakasuora" bittilauta (R) voidaan kyhätä kokoon seuraavasti:

a1=0,a2=1,a3=2, ... ,b1=8, ... ,h7=62,h8=63

"Viistot" bittilaudat ovat monimutkaisempia. Eräs mahdollisuus on:

NE:
a1=0,b2=1,c3=2, ... ,h8=7,a2=8,b3=9, ... ,g8=14,h1=15,a3=16 ...

eli diagonaali "kiertyy" toiselle puolelle lautaa ikäänkuin laudan
alareuna olisi "liimattu" kiinni yläreunaan. Ja vielä

NW:
a1=0,b8=1,c7=2, ... jne.

Näille voidaan laatia taulukot, joilla saadaan kuvattua haluttu ruutu
tietyltä bittilaudalta toiselle. Kun käsitellään suoria ja vaakasuoria
bittilautoja, on erittäin helppoa ottaa joku haluttu rivi tai linja
käsittelyyn, koska bittilauta voidaan määrittää unioniksi tyyliin

union bitboard_uni {
unsigned long long whole;
unsigned char rows[8];
};

Kun taas käsitellään diagonaaleja, homma monimutkaistuu siten, että pitää
olla käytössä "maski", joka peittää pois "väärän osan" kyseisestä
diagonaalista. Jos nimittäin otetaan vaikka NW-taulukosta kohta rows[2],
siihen kuuluvat ruudut a3,b2,c1,d8,e7,f6,g5,h4 ,mutta tässä on kaksi eri
diagonaalia, jotka saadaan maskaamalla luvuilla 0xe0 tai 0x1f riippuen
siitä, kummalla puolella "pseudodiagonaalia" ollaan. Käytännössä maskit
kannattaa taulukoida.

Bittilautojen vahvuus perustuu siihen, että voidaan hakea erilaisista
taulukoista nappuloiden kohderuutuja (kuninkaan ja ratsun tapauksessa koko
laudalla, tornin, lähetin ja daamin tapauksessa eri riveillä, linjoilla
tai diagonaaleilla) ja evaluoitaessa voidaan hyvin nopeilla loogisilla
operaatioilla saada selville nappuloiden sijainteja.

Suosittelen silmäilemään joidenkin hyvien shakkiohjelmien koodia.


Mikko Nummelin
  #3   Report Post  
Old April 7th 04, 01:15 AM
Juha Kettunen
 
Posts: n/a
Default Shakkiohjelma (thread in Finnish)

Kiitos muuten vastauksesta ,, eritäin hyvä että "tavallinen" ihminen
selittää, varmasti helppo ymmärtää. juuri alan lukemaan. Pitääköhän täällä
muuten alkaa puhumaan englantia ... mene ja tiedä ...

Saatan muuten esittää jatkokysymyksiä, joten ole valmiina

Ajattelin juuri esittää tänne yhden kysymyksen, joka liittyy laudan arvon
tekijöiden tutkiminen tilastollisesti (regressioanalyysi...). Tein tälläisen
tutkimuksen itseasiassa tilasotieteen seminaarissa craftyn avulla ... tulos
.... ei oikein saanut merkitseviä arvoja tekijlöille. Mutta ehkä ongelma oli
osittain , että tutkimukseni oli liian köyköisesti tehty. Tialastollisesti
voisi hyvinkin saada jotain aikaiseksi.

Mutta teen tästä nyt englanninkielisen threadin ...

"Mikko Nummelin" wrote in message
. ..
Juha Kettuselle:

Eli bittilaudoista. Ideana on se, että kutakin asiaa varten on vähintään
neljä eri bittilautaa, "suora", "vaakasuora" ja kaksi "viistoa". Käytän
näistä tässä nimitystä S,R,NW ja NE. "Suora" bittilauta (S) voidaan
esimerkiksi kyhätä kokoon seuraavasti:

a1=0,b1=1,c1=2, ... ,a2=8, ... ,g8=62,h8=63 (ymmärtänet systeemin).

"Vaakasuora" bittilauta (R) voidaan kyhätä kokoon seuraavasti:

a1=0,a2=1,a3=2, ... ,b1=8, ... ,h7=62,h8=63

"Viistot" bittilaudat ovat monimutkaisempia. Eräs mahdollisuus on:

NE:
a1=0,b2=1,c3=2, ... ,h8=7,a2=8,b3=9, ... ,g8=14,h1=15,a3=16 ...

eli diagonaali "kiertyy" toiselle puolelle lautaa ikäänkuin laudan
alareuna olisi "liimattu" kiinni yläreunaan. Ja vielä

NW:
a1=0,b8=1,c7=2, ... jne.

Näille voidaan laatia taulukot, joilla saadaan kuvattua haluttu ruutu
tietyltä bittilaudalta toiselle. Kun käsitellään suoria ja vaakasuoria
bittilautoja, on erittäin helppoa ottaa joku haluttu rivi tai linja
käsittelyyn, koska bittilauta voidaan määrittää unioniksi tyyliin

union bitboard_uni {
unsigned long long whole;
unsigned char rows[8];
};

Kun taas käsitellään diagonaaleja, homma monimutkaistuu siten, että pitää
olla käytössä "maski", joka peittää pois "väärän osan" kyseisestä
diagonaalista. Jos nimittäin otetaan vaikka NW-taulukosta kohta rows[2],
siihen kuuluvat ruudut a3,b2,c1,d8,e7,f6,g5,h4 ,mutta tässä on kaksi eri
diagonaalia, jotka saadaan maskaamalla luvuilla 0xe0 tai 0x1f riippuen
siitä, kummalla puolella "pseudodiagonaalia" ollaan. Käytännössä maskit
kannattaa taulukoida.

Bittilautojen vahvuus perustuu siihen, että voidaan hakea erilaisista
taulukoista nappuloiden kohderuutuja (kuninkaan ja ratsun tapauksessa koko
laudalla, tornin, lähetin ja daamin tapauksessa eri riveillä, linjoilla
tai diagonaaleilla) ja evaluoitaessa voidaan hyvin nopeilla loogisilla
operaatioilla saada selville nappuloiden sijainteja.

Suosittelen silmäilemään joidenkin hyvien shakkiohjelmien koodia.


Mikko Nummelin



  #4   Report Post  
Old April 8th 04, 12:13 AM
Aki Karppinen
 
Posts: n/a
Default Shakkiohjelma (thread in Finnish)


"Mikko Nummelin" kirjoitti
t.fi...
On Tue, 6 Apr 2004, Juha Kettunen wrote:

"Juha Kettunen" wrote in message


sori tää on vaan Mikolle: kokeilin muuten ohjelmaasi Craftya vastaan, ja

se
hävisi aika nopeasti ... vielä on varmaan paranneltavaa ... mutta

varmaan
toimii ihmisiä vastaan .


Laitetaan jatkot 'rec.games.chess.computer':iin, mutta ongelmana on siinä
väärä kieli. Ei voi mitään. Joka tapauksessa, ohjelmani (Needle) on
räplätty parissa kuukaudessa kasaan (vrt. Craftyn vuosikausia
jatkuneeseen kehitystyöhön!) ja siinä on runsaasti korjattavaa. On
todella vaikeaa tehdä vaikkapa evaluointifunktiota ja asemataulukkoa ilman
bugeja.


- Olisi helppo rustata täydellinen shakkitietokone jos vain laskentatehoa
olisi äärettömästi. Käydä läpi KAIKKI mahdolliset siirrot siedettävässä
ajassa. Verrattaisiin suhteellisen yksinkertaisella algorytmillä aina asemaa
tai sitten katsottaisiin aina siirrot loppuun ja todettaisiin päättyykö tämä
kehitelmä väistämättä mattiin.
- Itse tein AMIGAlle suhtellisen hyvin pelaavan jätkänshakin. Ei sille
ihminen enää pärjännyt. Laskisin, että noin 23 siirrossa viimeistään tuli
loppu, jos tietokone aloitti.

! Aki Karppinen !



  #5   Report Post  
Old April 8th 04, 07:40 AM
Mikko Nummelin
 
Posts: n/a
Default Shakkiohjelma (thread in Finnish)

On Thu, 8 Apr 2004, Aki Karppinen wrote:

- Olisi helppo rustata täydellinen shakkitietokone jos vain
laskentatehoa olisi äärettömästi. Käydä läpi KAIKKI mahdolliset siirrot
siedettävässä ajassa. Verrattaisiin suhteellisen yksinkertaisella
algoritmilla aina asemaa tai sitten katsottaisiin aina siirrot loppuun
ja todettaisiin päättyykö tämä kehitelmä väistämättä mattiin.


Tämä taitaa kyllä olla kaikkien tähän ryhmään kirjoittavien tiedossa.
Ongelma on siinä, että laskentatehoa, kuten myöskään muistia ei koneissa
ole äärettömästi. Jos ajatellaan shakin hakupuuta, on jokaisessa asemassa
keskimäärin 35 laillista siirtoa, ainakin keskipelissä. Se tarkoittaa
sitä, että hakupuu (ja samalla prosessoriaika ja muistinkäyttö) kasvaa
eksponentiaalisesti kun hakua syvennetään. Käytännössä alpha-beta-karsinta
karsii hakupuuta sen verran, että voidaan arvioida tietokoneen joutuvan
laskemaan noin 35*7^(k-1) asemaa, kun k on puolisiirtojen lukumäärä
täysleveässä haussa.


Mikko Nummelin


  #6   Report Post  
Old April 8th 04, 08:22 AM
Mikko Nummelin
 
Posts: n/a
Default Shakkiohjelma (thread in Finnish)

Huomasin, että on olemassa sellainen varsin aktiivinen ryhmä kuin
"sfnet.harrastukset.pelit.shakki", joten eiköhän kannata sittenkin siirtää
nämä suomenkieliset shakkiohjelmakeskustelut sinne.


Mikko Nummelin
Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Missing Thread!!! Grahame Booth rec.games.chess.analysis (Chess Analysis) 2 February 8th 04 11:08 PM
Missing Thread!!! Grahame Booth rec.games.chess.analysis (Chess Analysis) 0 February 7th 04 10:44 AM


All times are GMT +1. The time now is 10:41 AM.

Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Copyright ©2004-2019 ChessBanter.
The comments are property of their posters.
 

About Us

"It's about Chess"

 

Copyright © 2017