Junior

From Chessprogramming wiki
Revision as of 15:14, 31 October 2018 by GerdIsenberg (talk | contribs)
Jump to: navigation, search

Home * Engines * Junior

Junior class artwork [1]

Junior, (Deep Junior)
a chess engine by primary programmer Amir Ban and Shay Bushinsky. Junior is six times winner of the Shannon Trophy from WCCC 2002, WCCC 2004 [2] , WCCC 2006, WCCC 2009 (shared), WCCC 2011 [3] and WCCC 2013, and two times winner of the World Microcomputer Chess Championship, the WMCCC 1997 and WMCCC 2001 respectively, and thus most successful program ever. Book authors are Alon Greenfeld and Boris Alterman. In 2003, the multiprocessor version Deep Junior played a 6-game match against Garry Kasparov that resulted in a 3-3 tie. Junior is known for its entertaining, dynamic and sometimes speculative playing style [4] [5] . Until version 10.0 market as ChessBase engine in conjunction with the Fritz GUI [6] , Deep Junior 13 as pure UCI compatible engine is purchased as download product from the HIARCS site [7] , and requires a Windows PC and an external GUI supporting the UCI protocol.

Photos & Games

[8]

WCCC 2006 Round 4

JuniorShredder2006.JPG

Stefan Meyer-Kahlen, Amir Ban, Theo van der Storm, ..., and Johannes Zwanzger watching
WCCC 2006, round 4, Junior - Shredder [9]

[Event "WCCC 2006"]
[Site "Turin, Italy"]
[Date "2006.05.27"]
[Round "4"]
[White "Junior"]
[Black "Shredder"]
[Result "1/2-1/2"]

1.e4 c5 2.Nf3 d6 3.d4 cxd4 4.Nxd4 Nf6 5.Nc3 a6 6.Be3 e5 7.Nb3 Be6 8.f3 Nbd7
9.Qd2 Be7 10.g4 O-O 11.O-O-O b5 12.g5 Nh5 13.Nd5 Bxd5 14.exd5 b4 15.Kb1 a5
16.Bb5 a4 17.Nc1 a3 18.Nd3 Rb8 19.Bc6 axb2 20.Rhg1 Qc7 21.Rg4 f5 22.Rxb4 f4
23.Bf2 Bxg5 24.c3 Kh8 25.Qc2 Nhf6 26.Rg1 Bh6 27.Qa4 Nb6 28.Qa5 Nbxd5 29.Qxc7
Nxc7 30.Rxb8 Rxb8 31.Nb4 Ne6 32.Rd1 e4 33.a4 exf3 34.a5 Ng4 35.Rd2 Nxf2
36.Rxf2 Nc7 37.a6 Nxa6 38.Nxa6 Rb3 39.Rxf3 g5 40.Bd5 Rb5 41.Bc4 Rb7 42.Nb4 g4
43.Rd3 Bg7 44.Rxd6 Bxc3 45.Nd5 Bd2 46.Nf6 Bc3 47.Nxg4 Kg7 48.Rd5 Ra7 49.Ba2
h6 50.h4 Ra4 51.Nh2 Re4 52.Rd1 Re3 53.Rg1+ Rg3 54.Rf1 Re3 55.Nf3 Kg6 56.Bb3
Kf5 57.h5 Re7 58.Rd1 Kg4 59.Bd5 1/2-1/2

WCCC 2006 Shannon Trophy

AmirWithShannonTrophy2006.jpg

Jaap van den Herik awards Amir Ban with the Shannon Trophy. First prize for Junior, WCCC 2006

Description

given in 1995 from the ICGA page [10] :

Junior is a leading Israeli chess playing PC program. It was developed as a hobby by Amir Ban and Shay Bushinsky. Junior's breakthrough occurred during August 1994: The program scored a remarkable equal fourth place (with GM Alon Greenfeld) in the Kfar-Saba Open national chess tournament. The games were conducted under normal tournament time control. In the final round, Junior amazingly defeated GM Leonid Gopstein. During November 1994, Junior participated in the strongest international blitz tournament ever held in Israel. It beat GM Ilya Smirin and drew with GM Lev Psakhis and GM Alon Greenfeld. Amongst others, Junior reached a completely won position against GM Judit Polgar. Since then Junior has established itself as a well respected player in the Israeli chess scene and is the one and only software selected to play in Israel's national chess league. Junior is one of the top chess playing programs on the Internet Chess Server. 

Program Internals

Amir started chess programming in 1985 - Junior's predecessor was written in Turbo Pascal, later ported to C and C++. In 1993, Shay joins Amir's programming efforts, specializing in evaluation and optimisation [11] .

C++

Amir Ban in rgcc, June 1997 [12] [13] :

Junior is written entirely in C++ (Borland). The entire search engine is the implementation of class 'Position'. One statement that cannot be said about Junior is that it is slow. I've heard these kinds of performance arguments about C++ several times in the past. As a C++ veteran in many projects, I'm quite mystified about what is supposed to be slow about the language.
Creating a new Position and detroying it for every node is indeed the classic OOP approach, and also exactly what my program does. Your assumption that this involves "malloc" (or "new) is the incorrect one. mallocing a Position whenever you need one is as unnecesary and silly as mallocing an int every time you want to do a loop. You should malloc something when you want it to have dynamic lifetime and/or scope.
You can create an object as you create an int, by putting it as an auto variable on the stack, e.g.: 
 alphabeta(...)
 {
   ...
   Position newPosition;
   ...
 }
 This constructs a Position at the point of declaration and destroys it on the exit from the block. The constructor and destructor do exactly what you code in them of course. No more, no less. The overhead for this is not low. It's zero. 

Search Depth

Amir Ban in rgcc, March 1998 [14] :

The brute-force ply depth is indeed half the publicized depth. All the rest are extensions (in conventional terminology, I don't think of them this way). If you set Junior to depth 12, e.g., then you should be able to find a 7-ply combination where it fails. If I am doing a good job, then you should have a hard time finding one.
The question of what this is equivalent to in terms of other programs, e.g. a null-mover with "standard" extensions is interesting, but I don't know the answer. In tournament conditions middlegame Junior typically gets 14-16 depths, and it looks competitive tactically. 

Amir Ban in CCC, April 1998 [15] ;

The Junior depth value measures half-plies, so if you insist, it's ply 6. I could have called it ply 12 or ply 9 with equal justification. Since nobody does brute-force anymore, and everybody does both pruning and extensions, what the depth indicator means is a bit vague. Very roughly, I would propose this equality:
 Genius depth 6 = Rebel depth 8 = Fritz5 depth 10 = Junior depth 12

which once said should be forgotten, since it's much more complicated than that. 

Razoring

Amir Ban in a CCC discussion with Robert Hyatt on Razoring versus Pruning, January 1999 [16] :

Razoring is supposed to be a sort of forward pruning where rather than skipping an entire subtree, you search it to a reduced depth, typically one less than normal depth. The advantage is that you get most of the saving but with much lower risk than pruning entire subtrees. Razoring is the only forward pruning technique Junior uses, with a depth reduction of one (half-ply). Seems like Crafty uses the same definition ... 

Release Dates

  • Junior 3.3
  • Junior 3.5
  • Junior 4.0
  • Junior 5.0 : 1998
  • Junior 6.0 : 2000
  • Junior 7 : 2002
  • Junior 8 : 2004
  • Junior 9 : 2005
  • Junior 10 : 2006-8
  • Junior 10.1 : 2007-6
  • Junior 11 : 2009-11
  • Junior 11.1 : 2010-3
  • Junior 11.2 : 2010-5
  • Junior 2010 : 2010
  • Junior 12 : 2010-11
  • Junior 12.5 : 2011-04
  • Junior 13 : 2012-02
  • Junior 13.3 : 2012-11
  • Deep Junior Yokohama: 2013-10-24

Matches

Publications

Forum Posts

1995 ...

2000 ...

2010 ...

External Links

Purchase

Reports

Misc

feat. Giovanni Tommaso, Franco D'Andrea, Gato Barbieri, Franco Ambrosetti

References

  1. Junior class artwork featured in East Texas State Normal College's 1920 Locust yearbook, Junior (education) from Wikipedia
  2. Junior thoughts by Amir Ban, CCC, July 12, 2004
  3. ריאיון עם שי בושינסקי, November 27, 2011 (Hebrew) Interview with Shay Bushinsky translated by Google Translate
  4. Programs and essentials by Steve Lopez, ChessBase News, March 13, 2005
  5. Nice article about Junior 9 by Steve Lopez by Jorge Pichard, CCC, March 12, 2005
  6. Chess software - Junior 10 from ChessBase
  7. Deep Junior 13 PC Chess Software from HIARCS Chess Software for PC, Mac, Pocket PC, iPhone, iPod and Palm Chess
  8. WCCC 2006, Photos by Gerd Isenberg
  9. Turin 2006 - Chess - Round 4 - Game 1 (ICGA Tournaments)
  10. Junior's ICGA Tournaments
  11. Deep Junior timeline by Jorn Barger, February 2003
  12. Search Degredation w/ C++ by Chris Jason Richards, rgcc, June 12, 1997, post 4 and 6 by Amir Ban
  13. Question to Amir Ban by Bas Hamstra, CCC, November 05, 1997
  14. Funny Junior Engine in CBLight / Junior Engine ply depth by Wolfgang Krietsch, rgcc, February 27, 1998, post 7 and 16 by Amir Ban
  15. Re: Junior by Amir Ban, CCC, April 20, 1998
  16. Re: Razoring? by Amir Ban, CCC, January 27, 1999
  17. "Deus Ex Machina - article by Shay Bushinsky by Lonnie Cook, CCC, August 26, 2016
  18. list of questions to ask to Amir and Shay ... by Vincent Lejeune, CCC, February 10, 2003
  19. Israel’s Deep Junior still the king at World Computer Chess Championship, Jerusalem Post, August 18, 2013
  20. Israel’s Deep Junior still the king at WCCC by Sean Evans, CCC, August 19, 2013

Up one level