Interactive Genetic Algorithm Knapsack Solver
A web-based educational tool using Python and Dash to visualize how evolutionary computation solves the classic Knapsack optimization problem.
Overview
This project is an interactive web application designed to solve the classic Knapsack Problem using a Genetic Algorithm (GA). Built with Python and the Dash framework, it provides a dynamic and visual way to understand how bio-inspired heuristics can tackle complex optimization challenges.
The Problem
The Knapsack Problem is a famous combinatorial optimization problem: given a set of items, each with a weight and a value, determine which items to include in a collection so that the total weight is less than or equal to a given limit and the total value is as large as possible.
How It Works: Genetic Algorithm
The solution implements an evolutionary approach inspired by natural selection:
- Initialization: Creates a random population of "genomes" (binary strings representing item selection).
- Fitness Evaluation: Calculates the total value of the selected items (penalizing over-capacity solutions).
- Selection: Uses tournament selection to pick the best "parents."
- Crossover & Mutation: Combines parents to create offspring and introduces random mutations to maintain diversity.
Key Features
- Interactive Interface: Users can input custom item values, weights, and capacity constraints via a web UI.
- Dynamic Visualization: Uses Plotly to generate real-time graphs showing how the "fitness" (solution quality) improves over generations.
- Detailed Analytics: Displays the best solution found, total value, total weight, and specific items selected.
Tech Stack
- Core Logic: Python (NumPy, Pandas)
- Web Framework: Dash (by Plotly)
- Visualization: Plotly
- Testing: Unittest