Classical artificial intelligence and reinforcement learning, implemented in Python. Each project uses the standard optimisation for its problem class rather than a naive baseline.
Stack: Python · NumPy · Jupyter
Navigation modelled as a Grid World Markov Decision Process — discrete states, actions, transition dynamics and rewards — with custom world maps containing terminal states, obstacles and reward zones.
- Value iteration / policy iteration — dynamic programming on a known MDP
- Monte Carlo methods — learning from sampled episodes where the transition model is unknown
- Reward shaping for goal-directed and collision-avoiding navigation, with policy-convergence analysis
- Comparison of learned policies against classical planning approaches
- Also includes a Blackjack Monte Carlo agent for episodic learning and policy evaluation
Implementing both model-based (value iteration) and model-free (Monte Carlo) control makes the contrast between them explicit.
Sliding-tile puzzle solved with A* search using a custom admissible heuristic.
Adversarial game agent using minimax with alpha-beta pruning.
Constraint-satisfaction solver using backtracking with constraint propagation rather than brute-force search.