/StrongAI

My attempt at making a general purpose AI

Primary LanguageC++The UnlicenseUnlicense

StrongAI

Core principles

These core principles guide the project's development:

  • Quality - StrongAI must take intelligent decisions
  • Versatility - StrongAI must be adaptable to any type of problems
  • Simplicity - StrongAI must be easy to use and understand
  • Freedom - StrongAI must respect the user's freedom

Current plan

  • Make a general AI that can play any type of game
  • Transpose real world problems as games
  • Use the AI to solve them

Example

Let's pretend we want an AI to drive a car. We'll need to somehow hook it to its environment.

  • Input. It may need to know: its position, its destination, the position of obstacles, etc.
  • Output. It may need to control: the gas and break pedals, the force on the steering wheel, the turn signals, etc.

Now we need a way to measure its performance. We'll use what's called a fitness function that tests the AI and returns its fitness score. This score might:

  • Increase as the time of travel goes down
  • Decrease as it goes over the speed limit or crushes innocent citizens

This fitness function might initially test the AI in a simulated driving environment before moving on to a closed circuit and finally to the real world as our confidence in the AI increases.

If everything goes well, we now have our own car driving AI!

What we have

AI's

  • GeneralAI - Common interface of all AI's
  • RandomAI - Takes random decisions
  • HumanAI - You manually control the AI
  • CaseBasedAI - A brute force approach
  • NeuralNetAI - Simple mutating artificial neural network
  • DarwinAI - Evolves a NeuralNetAI population by natural selection

Others

  • Cereal - A C++11 library for serialization
  • UnitTest++ - A lightweight unit testing framework for C++

Brainstorm

Send your ideas at: webf0x@hotmail.com

AI's

  • NAND gates AI
  • Dispatcher - Separate tasks in subtasks

Worlds

  • Interface with any game/software - Audio/video input and keyboard/mouse output
  • Deterministic games - Chess, Checkers, Reversi, etc
  • Chance games - Poker, Blackjack, Backgammon, Minesweeper, Solitaire
  • Real-time games - Minecraft, Starcraft, Heroes of the Storm
  • Robots - Sensors and actuators

Build instructions

  • Linux: make tests

Unlicense:

Unlicense Yourself: Set Your Code Free