Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/quimpm/chess_ia
Chess Software with a basic AI to play against. This project can be used as a Playground for developing AI's to play against.
https://github.com/quimpm/chess_ia
Last synced: about 1 month ago
JSON representation
Chess Software with a basic AI to play against. This project can be used as a Playground for developing AI's to play against.
- Host: GitHub
- URL: https://github.com/quimpm/chess_ia
- Owner: quimpm
- License: gpl-3.0
- Created: 2020-02-09T11:54:32.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-01-17T16:45:51.000Z (10 months ago)
- Last Synced: 2024-01-18T00:36:29.585Z (10 months ago)
- Language: Python
- Homepage:
- Size: 247 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Chess_IA
Chess Software with a basic AI to play against. This project can be used as a Playground for developing AI's to play against.
## Usage
$ python Chess.py
* game_mode = 1: 2 Player
* game_mode = 2: Player vs AI## Technics
The following algorithms have been used to perform this Artificial Intelligence:
* Minimax
* Alpha-Beta Pruning
* Neightboor Search## Explanation
In this project I tried to make an AI capable of running on my computer. The typical practice when doing this type of chess AI is to use the minimax algorithm together with alpha-beta pruning. Even so, if you want the AI to make a prediction of a possible movement that you can make, the computational cost is still very large due to the number of different situations that exist in each state of the game.
For this reason, I have combined these two algorithms with a neightboor search algorith with which we make N random evaluations for each state of the game. This N is equivalent to the ramification factor, so I can control how much the tree expands at each prediction level.
In order to do it as quickly as possible, in the search for neighbors, evaluations can be repeated, since in the end the objective is to make the maximum number of evaluations possible in a reasonable time.