Finding a program
All I could find is that the developer of this program, Luke Pellen, goes by the pseudonym of vw_westy68.
The chess program itself has no hardcoded instructions on how to play chess. Octavius "deduces the rules and tactics of chess heuristically via positional interpolation."
So from that definition, you can probably start programming your own Octavius. I see from a few of your posts that you are interested in artificial intelligence. I think you should give it a go.
Here's what I would do:
turn-based system;
build chess grid and pieces;
know all pieces and their movement limitations;
while (opponent pieces exist or our pieces exist):
if our turn:
remove a piece if possible;
if a piece is vulnerable:
move the piece;
if opponent's turn:
record when opponent removes our piece;
The recording will be used in future games and any future piece removals (not sure what that's called in chess) will be appended to that file.
Your move recording system should use short symbols which make sense (like Luke Pellen did): b5a4 f8c5, g1f3 e8g8, e1g1 d7d6. <- these are moves 4-6 of Luke vs Octavius (P4Oct4.ann).
Implement that and give it a go.
I have no idea about finding the links you are looking for. But I would say the best way to go for a chess AI is something like what ellipsis said. I would also hardcode a lookup table for the optimal beginning-game and end-game moves. However far you can know ahead of time what the best possible move would be, put it in a lookup table for the beginning and end game, because those are pretty well-known among chess experts (which I am not at all), which would mean they are publicly well-known and accessible as well.
I think that essentially all strategic two-player board games (tic-tac-toe, chess, checkers, go, connect4) can be most optimally played by an AI program using the min-max algorithm with alpha-beta pruning.
A neural network doesn't really do that well with gameplaying such as this in my opinion. They are great for domain-specific generalization problems. Gameplaying however, is a turn-based search problem. I thought about coding a genetic algorithm to play optimal connect4 once but I ended that plan once I realized how large the search space is for that. All possible board configurations would be 2^(7*6) + C which is a huge number (connect4 is a "solved" game I have heard, using some algorithm). Tic-tac-toe can be optimally played using a GA though, the search space isn't near as large. Though, encoding the game-board into a binary representation requires a few tricks, but nothing too complicated to understand. You can train a neural network to play these types of games though. You'll have to have very good training data (useful board configurations) in order for it to generalize well. The reason an ANN might not work at all though is that the weights may never converge. The number of layers and number of hidden neurons in each layer is hard to imagine, if even it is possible to find an architecture that works. You'd have to try things out. 1 hidden layer is usually sufficient, but hidden neurons are never known. I suggest also, with ellipsis, that you give it a go :)
I know his nick names and I found him on chess.com so I will try to contact him.
And there is a big problem in the way you try to make this work. The board representation. You can't give the ANN a regular board representation since a small change in the position will mean a lot. I have thought of some ways to do it, but can't seem to get it to work. It's mindbogglingly complicated. Any geniuses have any idea on how to represent the board?
Mtutnid wrote:
And there is a big problem in the way you try to make this work. The board representation. You can't give the ANN a regular board representation since a small change in the position will mean a lot. I have thought of some ways to do it, but can't seem to get it to work. It's mindbogglingly complicated. Any geniuses have any idea on how to represent the board?
Is this a response to my algorithm listed above? I seriously hope not. I know nothing about ANN, and I don't intend on learning anything about it either.
ellipsis wrote: [quote]Mtutnid wrote:
And there is a big problem in the way you try to make this work. The board representation. You can't give the ANN a regular board representation since a small change in the position will mean a lot. I have thought of some ways to do it, but can't seem to get it to work. It's mindbogglingly complicated. Any geniuses have any idea on how to represent the board?
Is this a response to my algorithm listed above? I seriously hope not. I know nothing about ANN, and I don't intend on learning anything about it either.[/quote] I looked at the code and the response was not to the code. I intend to use an ANN not a 100000000000000000000000000000000000 if statements
Yes, this is pretty complicated but not impossible; others have had success so you should be able to also. I've not applied ANN to chess but it should work similar to any sort of strategy board game. I've not tried it because I think it's not really the optimal way to play games. Now, you may think, "but chess experts are experts by using their brains, which are neural networks right?" And that is essentially true, any system which models a network of neurons could be given that label, but your brain is not a simple feed-forward back-prop ANN. Nor is it any sort of the more complex recurrent neural net, although those are slightly more realistic. Having said that, I believe you can get your ANN to make some progress, but training it will take some effort. Encoding board representations to numeric arrays will take some serious thinking, but eventually you could come up with a way which works. You could probably find some ideas on Google if not decent pseudocode. You will have to figure out where each piece is on the board and make the move with the highest probability for being a useful move based on the games which the net was trained on. You need to decide what your input neurons represent first. Maybe have a neuron for each position on the board with one of three values, for good guy, bad guy, and empty. I don't really have time to think this whole thing out but I have a feeling you can figure it out.
Also, you definitely do not want to do this with some enormous number of if's (that's never the way), so why don't you implement a heuristic search algorithm instead of an ANN? Build a search tree given the current board layout and then do either a depth-first-search or breadth-first-search and implement minimax since it's a two-player strategy game. You should also add alpha-beta pruning to speed up the search and save some memory. If you don't know those algorithms, they are pretty simple to understand and are definitely the way to go if you want an expert Chess algorithm.
If your heart is set on using an ANN then maybe you could apply one to a different problem such as OCR or something similar. But if you insist on using an ANN for Chess then you should still go for it. I'm not really sure if this post will help your decision making or address any of your issues.