• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Julia
  • License
    MIT License
  • Created over 8 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Julia implementation of algorithms from Russell And Norvig's "Artificial Intelligence - A Modern Approach"

aima-julia

Build Status

Julia (v1.1) implementation of the algorithms found in "Artificial Intelligence: A Modern Approach".

This project is not intended to be a standard Julia package (i.e. the Julia package manager).

We're looking for solid contributors to help.

Structure of the Project

When complete, this project will have Julia implementations for all the pseudocode algorithms in the book, as well as tests and examples of use. For each major topic, such as nlp (natural language processing), we provide the following files:

  • nlp.jl: Implementations of all the pseudocode algorithms, and necessary support functions/datatypes/data.
  • tests/test_nlp.jl: A lightweight test suite using Base.Test macros.
  • nlp.ipynb: A Jupyter (IJulia) notebook that explains and gives examples of how to use the code.
  • nlp_apps.ipynb: A Jupyter notebook that gives example applications of the code.

Using aima-julia for portable purposes

Include the following lines in all files within the same directory.

include("aimajulia.jl");
using Main.aimajulia;

Index of Algorithms

Figure Name (in 3rd edition) Name (in repository) File
2.1 Environment Environment agents.jl
2.1 Agent Agent agents.jl
2.3 Table-Driven-Vacuum-Agent TableDrivenVacuumAgent agents.jl
2.7 Table-Driven-Agent TableDrivenAgentProgram agents.jl
2.8 Reflex-Vacuum-Agent ReflexVacuumAgent agents.jl
2.10 Simple-Reflex-Agent SimpleReflexAgent agents.jl
2.12 Model-Based-Reflex-Agent ModelBasedReflexAgentProgram agents.jl
3 Problem Problem search.jl
3 Node Node search.jl
3 Queue Queue utils.jl
3.1 Simple-Problem-Solving-Agent SimpleProblemSolvingAgent search.jl
3.2 Romania romania search.jl
3.7 Tree-Search tree_search search.jl
3.7 Graph-Search graph_search search.jl
3.11 Breadth-First-Search breadth_first_search search.jl
3.14 Uniform-Cost-Search uniform_cost_search search.jl
3.17 Depth-Limited-Search depth_limited_search search.jl
3.18 Iterative-Deepening-Search iterative_deepening_search search.jl
3.22 Best-First-Search best_first_graph_search search.jl
3.24 A*-Search astar_search search.jl
3.26 Recursive-Best-First-Search recursive_best_first_search search.jl
4.2 Hill-Climbing hill_climbing search.jl
4.5 Simulated-Annealing simulated_annealing search.jl
4.8 Genetic-Algorithm genetic_algorithm search.jl
4.11 And-Or-Graph-Search and_or_graph_search search.jl
4.21 Online-DFS-Agent OnlineDFSAgentProgram search.jl
4.24 LRTA*-Agent LRTAStarAgentProgram search.jl
5.3 Minimax-Decision minimax_decision games.jl
5.7 Alpha-Beta-Search alphabeta_search games.jl
6 CSP CSP csp.jl
6.3 AC-3 AC3 csp.jl
6.5 Backtracking-Search backtracking_search csp.jl
6.8 Min-Conflicts min_conflicts csp.jl
6.11 Tree-CSP-Solver tree_csp_solver csp.jl
7 KB KnowledgeBase logic.jl
7.1 KB-Agent KnowledgeBaseAgentProgram logic.jl
7.7 Propositional Logic Sentence Expression logic.jl
7.10 TT-Entails tt_entails logic.jl
7.12 PL-Resolution pl_resolution logic.jl
7.14 Convert to CNF to_conjunctive_normal_form logic.jl
7.15 PL-FC-Entails? pl_fc_resolution logic.jl
7.17 DPLL-Satisfiable? dpll_satisfiable logic.jl
7.18 WalkSAT walksat logic.jl
7.20 Hybrid-Wumpus-Agent
7.22 SATPlan sat_plan logic.jl
9 Subst substitute logic.jl
9.1 Unify unify logic.jl
9.3 FOL-FC-Ask fol_fc_ask logic.jl
9.6 FOL-BC-Ask fol_bc_ask logic.jl
9.8 Append
10.1 Air-Cargo-problem air_cargo_pddl planning.jl
10.2 Spare-Tire-problem spare_tire_pddl planning.jl
10.3 Three-Block-Tower three_block_tower_pddl planning.jl
10.7 Cake-problem have_cake_and_eat_cake_too_pddl planning.jl
10.9 Graphplan graphplan planning.jl
10.13 Partial-Order-Planner
11.1 Job-Shop-Problem-With-Resources job_shop_scheduling_pddl planning.jl
11.5 Hierarchical-Search hierarchical_search planning.jl
11.8 Angelic-Search
11.10 Doubles-Tennis-problem doubles_tennis_pddl planning.jl
13 Discrete Probability Distribution ProbabilityDistribution probability.jl
13.1 DT-Agent DecisionTheoreticAgentProgram probability.jl
14.9 Enumeration-Ask enumeration_ask probability.jl
14.11 Elimination-Ask elimination_ask probability.jl
14.13 Prior-Sample prior_sample probability.jl
14.14 Rejection-Sampling rejection_sample probability.jl
14.15 Likelihood-Weighting likelihood_weighting probability.jl
14.16 Gibbs-Ask gibbs_ask probability.jl
15.4 Forward-Backward forward_backward probability.jl
15.6 Fixed-Lag-Smoothing fixed_lag_smoothing probability.jl
15.17 Particle-Filtering particle_filtering probability.jl
16.9 Information-Gathering-Agent
17.4 Value-Iteration value_iteration mdp.jl
17.7 Policy-Iteration policy_iteration mdp.jl
17.7 POMDP-Value-Iteration
18.5 Decision-Tree-Learning decision_tree_learning learning.jl
18.8 Cross-Validation cross_validation learning.jl
18.11 Decision-List-Learning decision_list_learning learning.jl
18.24 Back-Prop-Learning back_propagation_learning! learning.jl
18.34 AdaBoost adaboost! learning.jl
19.2 Current-Best-Learning current_best_learning kl.jl
19.3 Version-Space-Learning version_space_learning kl.jl
19.8 Minimal-Consistent-Det minimal_consistent_determination kl.jl
19.12 FOIL foil kl.jl
21.2 Passive-ADP-Agent PassiveADPAgentProgram rl.jl
21.4 Passive-TD-Agent PassiveTDAgentProgram rl.jl
21.8 Q-Learning-Agent QLearningAgentProgram rl.jl
22.1 HITS HITS nlp.jl
23 Chart-Parse Chart nlp.jl
23.5 CYK-Parse cyk_parse nlp.jl
25.9 Monte-Carlo-Localization monte_carlo_localization probability.jl

Running tests

All Test tests for the aima-julia project can be found in the tests directory.

Acknowledgements

The algorithms implemented in this project are found from both Russell And Norvig's "Artificial Intelligence - A Modern Approach" and aima-pseudocode.