View on GitHub

ShallowRed

such chess

Download this project as a .zip file Download this project as a tar.gz file

Mid-Project Deliverables:

Design Review - Preparation and Framing

Background and Context

    Chess AIs generally start with a min-max search algorithm which looks a certain number of moves ahead and evaluates the board to find the best move. The "best move" is defined as the move which has the least risk associated with it, where risk is the outcome with the most loss. Loss is often measured by giving a value to each piece, which is then added or subtracted when that piece is captured or lost. There are some other methods of evaluating boards which are discussed below.
    Alpha-beta pruning is a meathod for speeding up the min-max algorithm by ignoring branches of the seach tree which are obviously worse than already checked branches.
    Evolutionary algorithms can be used to optimize min-max search algorithms by adjusting the weights of each piece to improve the AI's chances of winning. This was the focus of Michael and Dennis' project last year, showing that this project direction is within the scope of a soft-des project.
    Another machine learning approach is neural networks. These have taken two different approaches in the past. The first option is using a neural network to evaluate board positions, and tell whether or not it's good for the player. Computers working this way still use the classic min-max strategy, but are simply supposed to do their calculations more quickly. The other option is using a network to directly predict what move is best, rather than just evaluating what board positions are best. These networks are much more interesting, and much faster, but also more complicated to impliment.

Key Questions

    Is it better to make our own basic AI and work from there, or start with someome else's and focus on extensions?
    What is an interesting "new" direction to take chess AIs (for example, evolutionary algorithms for peice weights, neural networks for more informative board evaluations, other cool ideas)?

Agenda

Introduce problem:
  -Talk about how computers play chess
      -computers are effient but play in a boring and computationally intensive manner
  -We want to use a new approach to play chess in a more interesting manner

Ideation for ways to computationally play chass:
  -Get some ideas for potential approaches before we give any background on existing algorithms

Discuss existing algorithms:
  -Explain min-max searches and alpha-beta pruning
      -pieces are weighted and lost/captured pieces are used to value moves

Explain ideas for improvements:
  -Evolutionary algorithms
      -improve weighting for pieces in min-max searching by optimizing the weights with evolutionary algorithms
  -Neural networks
      -Use a database of past chess games to decide on a move based on analysis of board positions.