Changes

Jump to: navigation, search

Bobby

10,569 bytes added, 20:16, 25 April 2018
Created page with "'''Home * Engines * Bobby''' '''Bobby''',<br/> a chess program by Hans-Joachim Kraas and Günther Schrüfer, competing at various World Computer C..."
'''[[Main Page|Home]] * [[Engines]] * Bobby'''

'''Bobby''',<br/>
a chess program by [[Hans-Joachim Kraas]] and [[Günther Schrüfer]], competing at various [[World Computer Chess Championship|World Computer]]- and [[World Microcomputer Chess Championship|World Microcomputer Chess Championships]] from 1983 until 1995 <ref>[https://www.game-ai-forum.org/icga-tournaments/program.php?id=200 Bobby's ICGA Tournaments]</ref> . Bobby had a strong [[WCCC 1986]] in [https://en.wikipedia.org/wiki/Cologne Cologne], [https://en.wikipedia.org/wiki/Germany Germany], defeating the later Champion [[Cray Blitz]] in round two, with some chances to tie first place until the last round loss against [[Jonathan Schaeffer|Schaeffer's]] [[Phoenix|Sun Phoenix]] <ref>[[Helmut Horacek]], ('''1986'''). ''The Fifth World Computer Chess Championship Cologne, 1986'', Research Unit for Information Science and Artificial Intelligence, [[University of Hamburg]], from '''''Kings move''' Welcome to the 1989 AGT World Computer Chess Championship.'' pg 21, available as [http://archive.computerhistory.org/projects/chess/related_materials/text/3-1%20and%203-2%20and%203-3%20and%204-3.1989_WCCC/1989%20WCCC.062302028.sm.pdf pdf reprint] from [[The Computer History Museum]]</ref> . In 1993, Bobby II won the [[IPCCC 1993|3rd International Paderborn Computer Chess Championship]].

The development of Bobby started in 1982 as part of Kraas' and Schrüfer's MSc thesis. It was written entirely in [[Pascal]] on the [[IBM 370|IBM 4341-2]] <ref>[http://www-03.ibm.com/ibm/history/reference/glossary_4.html IBM Reference / Glossary]</ref> of the [https://en.wikipedia.org/wiki/Technical_University_of_Braunschweig TU Braunschweig]. In 1987 Bobby II was a complete redesign in [[C]] on a [[Atari ST]] microcomputer. A commercial successor of Bobby II is the program [[Doctor?]], market by [[ChessBase]] as 16-bit engine in 1995 as analysis engine for [[ChessBase (Database)|ChessBase/Windows 1.0]], and in 1998 as 32-bit add-on engine of the [[Fritz|Fritz 5.32]] package <ref>[http://scleinzell.schachvereine.de/p_spielprogramme/fritz532.shtml Fritz 5.32 - mehr als nur ein Update!] by [[Peter Schreiner]] (German), [http://scleinzell.schachvereine.de/home/news.shtml Schachclub Leinzell]</ref> <ref>[http://www.schachversand.de/d/detail/software/76.html Doctor? 2.0 / Engine MacIntosh] from [[Schachversand Niggemann]]</ref>. According to ''Das große Computerschachbuch''. <ref>[http://www.rainerbartel.de/ Rainer Bartel], [[Hans-Joachim Kraas]], [[Günther Schrüfer]] ('''1985'''). ''Das große Computerschachbuch''. [https://en.wikipedia.org/wiki/Data_Becker Data Becker], Düsseldorf, ISBN 3-89011-117-3 (German), from [http://www.amazon.de/Das-gro%C3%9Fe-Computerschachbuch-Rainer-Bartel/dp/3890111173 amazon.de]</ref> , Bobby had a sophisticated [[Evaluation|evaluation]], with respect to [[King Safety|king safety]] and [[Passed Pawn|passed pawns]]. Bobby's search was a STC-Search (solution tree cost oriented search) <ref>[http://www.ajedrez-de-estilo.com.ar/int/Products/engines/doctor/index.htm Doctor? by Dr. Hans-Joachim Kraas and Dr. Gunther Schrüfer]</ref> , as elaborated in Schrüfer's 1988 PhD thesis <ref>[[Günther Schrüfer]] ('''1988'''). ''[http://www.worldcat.org/oclc/246856479&referer=brief_results Minimax-Suchen : Kosten, Qualität und Algorithmen]''. Braunschweig : Technische Universität. (German)</ref>

=Photos & Games=
==Mephisto==
[[FILE:SchrueferKraasWeinerLang1986.JPG|none|border|text-bottom|582px]]
[[Günther Schrüfer]], [[Hans-Joachim Kraas]], [[Ossi Weiner]] and [[Richard Lang]] <ref>[[László Lindner]], A SZÁMÍTÓGÉPES SAKK KÉPEKBEN című melléklete - The pictures of the Beginning of Chess Computers</ref>, [[WCCC 1986]], round 4, vs. [[Mephisto|Mephisto X]] <ref>[https://www.game-ai-forum.org/icga-tournaments/round.php?tournament=62&round=4&id=4 Cologne 1986, Chess, Round 4, Game 4]</ref>
<pre>
[Event "WCCC 1986"]
[Site "Cologne, Germany"]
[Date "1986.06.14"]
[Round "4"]
[White "Bobby"]
[Black "Mephisto X"]
[Result "1-0"]

1.e4 Nf6 2.e5 Nd5 3.d4 d6 4.c4 Nb6 5.exd6 exd6 6.Nc3 Be7 7.h3 O-O
8.Nf3 Nc6 9.Be2 Bf5 10.O-O Qd7 11.Bf4 Rae8 12.a4 Bf6 13.a5 Nc8 14.a6
b6 15.g4 Bxg4 16.hxg4 Qxg4+ 17.Bg3 Nxd4 18.Nxd4 Qxd4 19.Qc2 h6 20.Rfd1
Qc5 21.Nb5 Be5 22.Rd5 Qc6 23.Bxe5 Rxe5 24.Rxe5 dxe5 25.Bg4 Nd6 26.Nxa7
Qc5 27.Bd7 e4 28.Nb5 Nxb5 29.Bxb5 Qg5+ 30.Kf1 Qh4 31.Rd1 Qh1+ 32.Ke2
Qf3+ 33.Ke1 Qh1+ 34.Kd2 Qg2 35.Kc1 Qg6 36.Qb3 c6 37.Ba4 c5 38.Qg3 Ra8
39.Qxg6 fxg6 40.Bb5 g5 41.Rd7 h5 42.a7 e3 43.fxe3 Rf8 44.Bc6 h4
45.a8=Q Rxa8 46.Bxa8 h3 47.Rd5 1-0
</pre>

==Sun Phoenix==
[[FILE:WCCC1986R5Hort.JPG|none|border|text-bottom|588px|link=http://home.scarlet.be/vincentlejeune/jeux-et-strategie-040-1986-08-09-page007.jpg]]
[[WCCC 1986]], round 5, [https://en.wikipedia.org/wiki/Vlastimil_Hort Vlastimil Hort], [[Frans Morsch]], [[Hans van der Zijden]], [[Hans-Joachim Kraas]] <ref>Image from [[Pierre Nolot]] ('''1986'''). ''Echecs: Les Progès des Programmes''. [http://fr.wikipedia.org/wiki/Jeux_et_Strat%C3%A9gie Jeux et Stratégie]</ref>, Bobby vs. [[Phoenix|Sun Phoenix]]
<pre>
[Event "WCCC 1986"]
[Site "Cologne, Germany"]
[Date "1986.06.15"]
[Round "5"]
[White "Bobby"]
[Black "Sun Phoenix"]
[Result "0-1"]

1.e4 e6 2.b3 d5 3.Bb2 dxe4 4.Nc3 Nf6 5.Qe2 Be7 6.O-O-O Qd4 7.Re1 O-O
8.Nxe4 Qxe4 9.Qxe4 Nxe4 10.Rxe4 Nd7 11.Nf3 Bc5 12.d4 Nf6 13.Rh4 Be7
14.Kb1 e5 15.h3 e4 16.Ne5 Be6 17.Bc4 Bxc4 18.bxc4 c5 19.d5 e3 20.Rf4
exf2 21.Rxf2 Ne4 22.Rf4 Nd2+ 23.Ka1 Bd6 24.Re1 Rae8 25.Re2 f5 26.Rh4 Ne4
27.Nd3 Re7 28.Re3 g6 29.Nc1 Rfe8 30.a4 h5 31.Nb3 Kh7 32.Na5 Kh6 33.Rf3
Ng3 34.Rb3 b6 35.Nc6 Re1+ 36.Ka2 g5 37.Nxa7 Ra8 38.Nb5 Rxa4+ 39.Ba3 Be5
40.Nd4 0-1
</pre>
<span id="StrategicQuiescenceSearch"></span>
=Strategic Quiescence Search=
Bobby applied a so called ''Strategic Quiescence Search'' as described in a 1989 [[ICGA Journal|ICCA Journal]] paper by [[Günther Schrüfer]] <ref>[[Günther Schrüfer]] ('''1989'''). ''A Strategic Quiescence Search''. [[ICGA Journal|ICCA Journal]], Vol. 12, No. 1, pp. 3-9</ref>. Schrüfer claimed the inclusion of certain [[Quiet Moves|none tactical moves]] in [[Quiescence Search|quiescence search]] an improvement over a pure tactical search in Bobby. He also stated, for some programs it might be a significant speed penalty in the number of [[Nodes per second|moves searched per second]] to do so, i.e. in [[Move Generation|generating]] quiet moves. In Bobby this was irrelevant, since many of the values required have been precomputed for each node in any case. Beside the standard [[Quiescence Search#StandPat|standing pat]] [[Pruning|forward pruning]] conditions FP1 and FP2, all successors, not only [[Captures|captures]], [[Promotions|promotions]] and [[Check|checks]], were tested versus the forward pruning condition FP3.

==Pseudo Code==
<pre>
int StategicQS(CNode n, int α, int ß) {
int bestval = eval(n);
if ( bestval >= ß ) return bestval; // FP1, fail soft
if ( bestval > α ) α = bestval; // FP2
for all n´€ SUCC(n) do { // search loop
if ( evalPlus(n´) > α ) { // FP3
int actval = -StategicQS(n´, -ß, -α);
if ( actval > bestval ) {
bestval = actval;
if ( bestval >= ß ) return bestval;
if ( bestval > α ) α = bestval;
}
}
else if ( evalPlus(n´) > bestval ) bestval = evalPlus(n´);
}
return bestval;
}
</pre>

==Eval+==
The ''evalPlus'' value is +oo in case of checking moves near the horizon, but scaled to zero for deeper searches to avoid "infinite" checks and [[Search Explosion|search explosion]]. Otherwise ''evalPlus'' is [[Incremental Updates|incrementally calculated]] by eval(n) and [[Moves|move]] properties. In case of [[Tactical Moves|tactical moves]], the sum of eval(n) and the value of a captured and/or promoted piece and a constant representing half the value of a Pawn is taken. For [[Quiet Moves|quiet]] or strategical moves, evalPlus relies on maximum [[Score|score]] differences of two consecutive evaluations n´ and n, triggered by [[History Heuristic|history success counters]]:
<pre>
if ( isCheck )
return infiniteIfNearBelowHorizon(depth);
if ( isCapture && isPromotion )
return eval(n) - VALUE_PAWN/2 + Value(captured piece) + Value(promoted piece);
if ( isCapture )
return eval(n) + VALUE_PAWN/2 + Value(captured piece);
if ( isPromotion )
return eval(n) - VALUE_PAWN/2 + Value(promoted piece);
return eval(n) + hist[from][to].diff;
</pre>

==History Update==
Positive history based success counters are associated with the maximum difference of two consecutive evaluations n´ and n found so far, while zero saturated counters also have zero difference and are therefor always pruned by FP3. Following scheme is used to update the [[Butterfly Boards|butterfly boards]]:
<pre>
for all n´€ SUCC(n) do {
int actval = -search(n´, -ß, -α);
...
if ( none tactical ) {
// History update by quiet move n -> n´
if ( eval(n´) > eval(n) && actval > eval(n) ) {
hist[from][to].success += 10;
if ( eval(n´) - eval(n) > hist[from][to].diff )
hist[from][to].diff = eval(n´) - eval(n);
}
else if ( entry.success > 0 ) {
hist[from][to].success--;
if ( hist[from][to].success == 0 ) hist[from][to].diff = 0;
}
}
...
}
</pre>
=See also=
* [[Various Classifications#ChessLegend|Chess legends]]
* [[Doctor?]]
* [[Fischerle]]

=Publications=
* [http://www.rainerbartel.de/ Rainer Bartel], [[Hans-Joachim Kraas]], [[Günther Schrüfer]] ('''1985'''). ''Das große Computerschachbuch''. [https://en.wikipedia.org/wiki/Data_Becker Data Becker], Düsseldorf, ISBN 3-89011-117-3 (German), from [http://www.amazon.de/Das-gro%C3%9Fe-Computerschachbuch-Rainer-Bartel/dp/3890111173 amazon.de]
* [[Günther Schrüfer]] ('''1988'''). ''[http://www.worldcat.org/oclc/246856479&referer=brief_results Minimax-Suchen : Kosten, Qualität und Algorithmen]''. Braunschweig : Technische Universität. (German)
* [[Günther Schrüfer]] ('''1989'''). ''A Strategic Quiescence Search''. [[ICGA Journal|ICCA Journal]], Vol. 12, No. 1, pp. 3-9.

=External Links=
* [https://www.game-ai-forum.org/icga-tournaments/program.php?id=200 Bobby's ICGA Tournaments]
* [https://en.wikipedia.org/wiki/Bobby Bobby (disambiguation page) from Wikipedia]
* [https://en.wikipedia.org/wiki/Bobby_Fischer Bobby Fischer from Wikipedia]

=References=
<references />

'''[[Engines|Up one Level]]'''

Navigation menu