aima-julia
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.