File size: 4,848 Bytes
1a5505d 0ed43fe 3c2c304 0ed43fe 2133376 0ed43fe 3c2c304 0ed43fe 2133376 3c2c304 2133376 0ed43fe 3c2c304 2133376 0ed43fe 3c2c304 0ed43fe 3c2c304 0ed43fe 3c2c304 0ed43fe 3c2c304 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | ---
title: EcoCart AI System
emoji: π
colorFrom: green
colorTo: blue
sdk: streamlit
sdk_version: "1.57.0"
app_file: app.py
pinned: false
---
# EcoCart AI System
An interactive AI-powered logistics simulation
**Live Demo:** [Launch on Streamlit](https://ecocart-ai-app-live.streamlit.app)
---
## What is EcoCart?
EcoCart is a mid-sized e-commerce company facing challenges in optimising its logistics network. This project proposes an AI-based solution across six tasks β from intelligent delivery agents to demand forecasting and business ROI analysis.
---
## Tasks Covered
### Task 1 β AI Agents
Demonstrates three types of AI agents navigating a delivery map in real time:
- **Reactive Agent** β goes to the nearest stop, no planning
- **Goal-Based Agent** β plans the full route before departing (2-opt optimised)
- **Utility-Based Agent** β balances urgency vs distance to prioritise high-value stops
### Task 2 β Bias Detection & Mitigation
Uses K-Means clustering to segment customers into value tiers. Detects urban/rural bias using **Disparate Impact (DI)** analysis and applies a three-step mitigation strategy:
- Oversample rural customers to balance the dataset
- Adjust spend for delivery cost premium (+β¬12)
- Adjust frequency for rural order batching (Γ1.5)
### Task 3 β Search Algorithms for Route Optimisation
Implements all four search algorithms on a 20-node urban/rural delivery network:
- **BFS** β Breadth-First Search
- **DFS** β Depth-First Search
- **A\*** β Best-first with Euclidean heuristic
- **IDA\*** β Iterative Deepening A*
Includes a live **exploration replay slider** β drag to watch the algorithm search node by node.
### Task 4 β A* vs IDA* Comparative Analysis
Benchmarks both algorithms on 10 origin-destination pairs (5 urban, 5 rural) over multiple timing runs. Compares nodes expanded, average time, and memory behaviour.
### Task 5 β Demand Forecasting
Trains two ML models on 730 days of synthetic sales data:
- **Linear Regression** β fast and interpretable
- **Random Forest** β captures non-linear seasonal patterns
Features a **what-if predictor** β enter any day, month, and promotion flag to get an instant sales prediction.
### Task 6 β Business Case *(Voluntary β AI Student)*
Quantifies the financial and environmental impact of the AI system with fully interactive sliders:
- **ROI calculator** β adjusts fleet size, fuel cost, wage rates and shows live annual savings
- **3-year ROI projection** β cumulative benefit vs cost with breakeven line
- **COβ impact** β tonnes saved per year, tree and car equivalents
- **Implementation roadmap** β 5-phase Gantt chart across 8 months
---
## Tech Stack
| Tool | Purpose |
|------|---------|
| Python 3.11 | Core language |
| Streamlit | Interactive web app |
| Plotly | Interactive charts |
| scikit-learn | K-Means, LR, Random Forest |
| NumPy / Pandas | Data processing |
---
## Run Locally
```bash
pip install -r requirements.txt
streamlit run app.py
```
---
## Project Structure
```
FAI SIMULATION/
βββ app.py # Main Streamlit app (all 6 tasks)
βββ task2_segmentation.py # Standalone Task 2 script
βββ task3_4_routing.py # Standalone Tasks 3 & 4 script
βββ task5_forecasting.py # Standalone Task 5 script
βββ data/ # Synthetic datasets (loaded by every task)
β βββ customers.csv # Task 2 β 400 customer records
β βββ sales_history.csv # Task 5 β 730 days of daily sales
β βββ network_nodes.csv # Tasks 3/4 β 20-node delivery network
β βββ network_edges.csv # Tasks 3/4 β edge weights + COβ cost
β βββ export_data.py # Regenerates the CSVs from a fixed seed
βββ requirements.txt # Python dependencies
βββ README.md
```
---
## Dataset
All data is **synthetic and reproducible**. The CSVs in `data/` are the
program's data source β every task script (`task2_segmentation.py`,
`task3_4_routing.py`, `task5_forecasting.py`) loads its inputs directly
from these files at runtime:
| File | Rows | Description |
|------|------|-------------|
| `customers.csv` | 400 | 300 urban + 100 rural customers (deliberately biased) |
| `sales_history.csv` | 730 | Daily sales with weekly + yearly seasonality + promos |
| `network_nodes.csv` | 20 | Delivery hubs (x, y, urban/rural) |
| `network_edges.csv` | 34 | Roads with distance (km) and COβ cost (kg) |
The CSVs themselves are generated from an inline source-of-truth with a
fixed random seed (`np.random.default_rng(42)`). To rebuild them:
`python data/export_data.py`
---
## Author
Esvanth Mohankumar
Student ID: 24311073
Programme: MSc Artificial Intelligence
College: National College of Ireland
Module: Foundations of AI
|