Stockfish – Strong Open-Source Chess Engine
stockfishchess.org
stockfishchess.org
The chess community in general is pretty technical. lichess.org is an absolute marvel of a website. It's full of brilliance and it's all open source. Interestingly it's computer analysis feature went through a notable progressions of approaches:
First it was server sided stockfish. Later they compiled stockfish via emscripten to .js so that analysis could run locally. This recently became PNACL for speed and finally even more recently WebAssembly for portability. Pretty cutting edge for the community of such an old game!
The value proposition of Scala.js, GHCJS, Bucklescript, etc. are static types, 2-way interop, and all the features of the host language representable in javascript (which is incredible).
Lichess' approach works quite well, I have no issue with jQuery on the client while doing the heavy lifting on the server; not everything needs to be a 20MB SPA.
[0] https://en.wikipedia.org/wiki/Top_Chess_Engine_Championship#...
It's because if they do, white has no legal moves, but king isn't in check. This condition, where a player can't move, but the king currently isn't in check, results in a stalemate (which is considered a draw).
Therefore, white's baiting of black into that position by sacrificing pieces is interesting.
White was in trouble before throwing away the bishop as the black queen was in a deadly position, so it looked to get any free pieces it had blocked from moving as a viable strategy at aiming for a draw.
As for the stalemate, I assume the 50-move rule, part (a)? It was either going to draw through losing the rook or via 50 moves without losing/taking a piece.
"The game is drawn, upon a correct claim by the player having the move, if (a) he writes on his scoresheet, and declares to the arbiter his intention to make a move which shall result in the last 50 moves having been made by each player without the movement of any pawn and without the capture of any piece, or [snipped]"
This game is particularly special because before 46. Bb3 White has six pieces, all of which have legal moves, making stalemate apparently unlikely and checkmate inevitable from Black's aggressively placed Queen and Knights. It's surprising to a human that within a few moves, White is able to force Black to capture or block all 6 of those pieces and give stalemate. There are famous combinations from human play where one side manages to sacrifice "desperado" pieces for stalemate [2][3], but nothing so ingenious as this one.
Specifically, Queen to f4 forces Black to both capture the Queen and block the pawn on f3.
[0]https://en.m.wikipedia.org/wiki/Stalemate [1]https://en.m.wikipedia.org/wiki/Threefold_repetition [2]http://www.chessgames.com/perl/chessgame?gid=1252040 a famous example [3]https://chess-db.com/public/game.jsp?id=4500512.14117908.508... a less well known example I witnessed in person. An amateur woman shocks a top grandmaster.
Currently for example, there 87 machines, contributing 341 cores of computing power for testing patches. That's pretty awesome for completely volunteer driven community!
http://lesswrong.com/lw/hmx/prisoners_dilemma_with_visible_s...
https://f-droid.org/repository/browse/?fdfilter=droidfish&fd...
https://play.google.com/store/apps/details?id=org.petero.dro...
It should be a study in itself.
I found myself applying this to day to day life situations.
Shameless plug I know but I'm posting it for those who want to give it a shot against stockfish.
As for "magic numbers", parameters are done by automated tuning. Disclaimer: I'm not an expert at this. There are too many parameters to attempt to optimize everything globally, so it looks like only certain variables are selected (this probably requires lots of domain knowledge) and optimized at a time using something that resembles a gradient descent of sorts. You can read more about it here: https://chessprogramming.wikispaces.com/Stockfish%27s+Tuning...
There are also other tuning methods. notably, the one used by another chess engine, Texel. Which is also interesting and used by several strong engines. The chess programming wiki is a really good resource if you want to read more.
Finally,I can't find it, but I've read that Stockfish is so strong, that Andscacs, another strong chess engine that participates in the TCEC, was tuned by minimizing the standard deviation of its evaluation function with that of Stockfish. That sort of blew my mind when I first read it.
To play against...no. It will crush you like a cockroachh. it will crush a grandmaster like a cockroach....running on a smartphone.
For anyone interested in playing with it yourself, you can use python-chess (https://pypi.python.org/pypi/python-chess) to set up / play against the engine (or make engines play against each other) without having to directly use the UCI commands.
edit: It looks like there are quite a few other front-ends that will work with Stockfish. Fritz and PyChess look popular. I just used python-chess for a project a while ago.
Magnus Carlsen spends very very little time on memorizing openings.
It's just like using a calculator while learning math: do the work first and then check for mistakes with the calculator.
It's tough - maybe impossible - for engines to really accurately simulate lower level play. You usually get one of two outcomes : A) an opponent who plays 10 moves like God and then drops a rook out of thin air or B) essentially random moves.
Beginners have little use or value from the deep analysis engines can provide as well. Once they're stronger then they benefit more but until then it's just an opponent who stomps you every game and you can't even understand it when it tries to tell you why.
The most effective tools for beginning players will be playing other players (online or OTB) who are around the same level or slightly stronger and daily tactics training via tactical puzzles see: http://chesstempo.com, http://chess24.com and a host of others.
As well, the St. Louis Chess Club has a ton of great videos with GMs Seirawan, Finegold, Akobian, and others, starting at the beginner range and going up. I think beginners can get a lot of value out of their lectures.
Get PCID vs SCID and have it analyze your games. Generally speaking, beginners make obvious mistakes, and Stockfish will automatically find those mistakes you make.
Every now and then, you miss an obscure "Checkmate in 12-moves" that Stockfish will see... just ignore those that are too difficult for you to visualize yourself. Otherwise, its excellent to have a 3300+ Elo player double-checking your moves after each game.
http://www.computerchess.org.uk/ccrl/404/
Stockfish has the highest ELO of all engines... but how can an open-source engine be best? How don't the other engines learn from it and become at least as good, if not better?