Junior

Home * Engines * Junior



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, WCCC 2006, WCCC 2009 (shared), WCCC 2011 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. Until version 10.0 market as ChessBase engine in conjunction with the Fritz GUI, Deep Junior 13 as pure UCI compatible engine is purchased as download product from the HIARCS site , and requires a Windows PC and an external GUI supporting the UCI protocol.

=Photos & Games=

WCCC 2006 Round 4
Stefan Meyer-Kahlen, Amir Ban, Theo van der Storm, ..., and Johannes Zwanzger watching WCCC 2006, round 4, Junior - Shredder [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
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 : 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.

C++
Amir Ban in rgcc, June 1997 : 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 : 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 ; 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 : 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=
 * Kasparov versus Deep Junior 2003
 * Deep Fritz versus Deep Junior 2007

=Publications=
 * Amir Ban (1996). Junior among the Grandmasters. ICCA Journal, Vol. 19, No. 4
 * Frank Schneider (2001). Deep Junior wins the 18th World Microcomputer Chess Championship. ICGA Journal, Vol. 24, No. 3 » WMCCC 2001
 * David Levy (2003). The State of the Art in Man vs. “Machine” Chess. ICGA Journal, Vol. 26, No. 1 » Kasparov versus Deep Junior 2003
 * Karsten Müller (2003). Man Equals Machine in Chess. ICGA Journal, Vol. 26, No. 1 » Kasparov versus Deep Junior 2003
 * Amir Ban (2004). Deep Junior Confirms its Strength. ICGA Journal, Vol. 27, No. 3 » WCCC 2004
 * Shay Bushinsky (2007). Showdown in Elista. ICGA Journal, Vol. 30, No, 2 » Deep Fritz versus Deep Junior 2007
 * Shay Bushinsky (2009). Deus Ex Machina— A Higher Creative Species in the Game of Chess. AI Magazine, Vol. 30, No. 3
 * Amir Ban (2012). Automatic Learning of Evaluation, with Applications to Computer Chess. Discussion Paper 613, The Hebrew University of Jerusalem - Center for the Study of Rationality, Givat Ram » Learning

=Forum Posts=

1995 ...

 * Question to Amir Ban by Bas Hamstra, CCC, November 05, 1997
 * Junior: "Fast" Searcher or "Deep" Searcher? by Fernando Villegas, CCC, April 19, 1998
 * Re: What is "pre-processing" by Amir Ban, May 08, 1998 » Pre-processing
 * Junior 4.6 and the null move technique by Sylvain Renard, CCC, March 14, 1998
 * Junior 5 ! by Dirk Frickenschmidt, rgcc, August 25, 1998
 * Re: Razoring? by Amir Ban, CCC, January 27, 1999 » Razoring

2000 ...

 * Junior chess program. Just version of Fritz 5? by Leonid, CCC, July 29, 2000 » Fritz
 * Answers by Amir Ban, CCC, February 15, 2003 » Kasparov versus Deep Junior 2003
 * Re: Shredder 8 secret: search depth? by Vasik Rajlich, CCC, March 23, 2004 » Depth, Shredder, Fritz

2010 ...

 * Patt-Bug, Junior 11.1a show mate and Ktulu 9.03 made patt! by Frank Quisinsky, CCC, March 23, 2010 » Stalemate
 * Deep Junior 12 now available by Graham Banks, CCC, October 27, 2010
 * Junior is World Computer Chess Champion! by Gerd Isenberg, CCC, August 17, 2013
 * WCCC 2013: Junior wins by Mike Scheidl, CCC, August 17, 2013
 * Israel’s Deep Junior still the king at WCCC by Sean Evans, CCC, August 19, 2013
 * Deep Junior Yokohama by Graham Banks, CCC, October 24, 2013
 * Deep Junior Yokohama by Graham Banks, CCC, November 29, 2013

=External Links=
 * Junior's ICGA Tournaments
 * Junior (chess) from Wikipedia
 * Deep Junior timeline by Jorn Barger, February 2003
 * Programs and essentials by Steve Lopez, ChessBase News, March 13, 2005 » Shredder 9
 * Amir Ban on Deep Junior from Combinatorics and more - Gil Kalai’s blog, June 25, 2008

Purchase

 * Deep Junior 13 PC Chess Software from HIARCS Chess Software for PC, Mac, Pocket PC, iPhone, iPod and Palm Chess
 * Download Junior from HIARCS Chess Software for PC, Mac, Pocket PC, iPhone, iPod and Palm Chess
 * Deep Junior 13.8 mulitprocessor version, ChessBase Shop, February 2014

Reports

 * Kasparov & Deep Junior fight to 3-3 draw!
 * Kasparov-Junior from HIARCS Chess Software for PC, Mac, Pocket PC, iPhone, iPod and Palm Chess
 * Israel’s Deep Junior still the king at World Computer Chess Championship, Jerusalem Post, August 18, 2013

Misc

 * Junior from Wikipedia
 * Franco Tonani - Junior's Idea, from Night In Fonorama, recorded Milan, May 31,1964, YouTube Video
 * feat. Giovanni Tommaso, Franco D'Andrea, Gato Barbieri, Franco Ambrosetti

=References= Up one level