# varunnaikr/multi-objective-uav-route-optimization-and-simulation architecture

> Architecture diagram of the GitHub repository varunnaikr/multi-objective-uav-route-optimization-and-simulation, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation
- Repository: https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation

## Overview

This repository is a UAV medical-delivery route-planning demo with a Streamlit interface and a command-line entry point. Its workflow generates candidate delivery routes, evaluates energy, fatigue, and time, selects an algorithm using mission context, and presents route comparisons and step-by-step simulation. Both entry points also retrieve relevant knowledge through a local embedding-and-FAISS RAG module. The excerpts show the main orchestration and core algorithms; some Streamlit calls are in omitted lines, so uncertain wiring is not expanded.

Main entry points: [`app.py`](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/app.py) (Streamlit App), [`main.py`](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/main.py) (CLI Runner), [`optimizer.py`](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py) (Route Evaluation), [`rag.py`](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/rag.py) (RAG Retrieval)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User Interfaces"]
  node_streamlit["Streamlit App<br/>[app.py]"]
  node_cli["CLI Runner<br/>[main.py]"]
  node_plotting["Route Plotting<br/>[utils.py]"]
end

subgraph group_knowledge["Knowledge Retrieval"]
  node_knowledge_file["Knowledge Text<br/>[knowledge.txt]"]
  node_rag["RAG Retrieval<br/>[rag.py]"]
  node_embedding_model["Embedding Model"]
  node_faiss[("FAISS Index")]
end

subgraph group_planning["Route Planning"]
  node_route_generation["Route Generation<br/>[optimizer.py]"]
  node_mpdd["MPDD Optimizer<br/>[optimizer.py]"]
  node_milp["MILP Optimizer<br/>[optimizer.py]"]
  node_pareto["Pareto Search<br/>[optimizer.py]"]
  node_metrics["Route Evaluation<br/>[optimizer.py]"]
  node_simulation["Route Simulation<br/>[optimizer.py]"]
  node_agent["Algorithm Scoring<br/>[agent.py]"]
end

subgraph group_mission["Mission Model"]
  node_mission_data[("Locations And Loads<br/>[data.py]")]
  node_battery["Battery Limit<br/>[config.py]"]
end

node_operator(("Operator"))

node_operator -->|"sets mission"| node_streamlit
node_streamlit -->|"requests retrieval"| node_rag
node_streamlit -->|"generates routes"| node_route_generation
node_streamlit -->|"requests MPDD"| node_mpdd
node_streamlit -->|"requests MILP"| node_milp
node_streamlit -->|"requests Pareto"| node_pareto
node_streamlit -->|"evaluates routes"| node_metrics
node_streamlit -->|"scores algorithms"| node_agent
node_streamlit -->|"simulates routes"| node_simulation
node_streamlit -->|"renders routes"| node_plotting
node_operator -->|"runs planner"| node_cli
node_cli -->|"requests retrieval"| node_rag
node_cli -->|"generates routes"| node_route_generation
node_cli -->|"requests decision"| node_agent
node_cli -->|"selects optimizer"| node_mpdd
node_cli -->|"selects optimizer"| node_milp
node_cli -->|"selects Pareto route"| node_pareto
node_cli -->|"plots route"| node_plotting
node_rag -->|"loads text"| node_knowledge_file
node_rag -->|"encodes text"| node_embedding_model
node_rag -->|"builds and searches"| node_faiss
node_route_generation -->|"uses locations"| node_mission_data
node_metrics -->|"reads locations and loads"| node_mission_data
node_metrics -->|"checks capacity"| node_battery
node_mpdd -->|"evaluates candidates"| node_metrics
node_milp -->|"evaluates candidates"| node_metrics
node_pareto -->|"evaluates candidates"| node_metrics
node_simulation -->|"reads locations and loads"| node_mission_data
node_simulation -->|"uses capacity setting"| node_battery
node_plotting -->|"reads coordinates"| node_mission_data

click node_streamlit "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/app.py"
click node_cli "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/main.py"
click node_knowledge_file "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/knowledge.txt"
click node_rag "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/rag.py"
click node_route_generation "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py"
click node_mpdd "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py"
click node_milp "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py"
click node_pareto "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py"
click node_metrics "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py"
click node_simulation "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py"
click node_agent "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/agent.py"
click node_mission_data "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/data.py"
click node_battery "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/config.py"
click node_plotting "https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/utils.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_streamlit,node_cli,node_plotting toneBlue
class node_knowledge_file,node_rag,node_embedding_model,node_faiss toneAmber
class node_route_generation,node_mpdd,node_milp,node_pareto,node_metrics,node_simulation,node_agent toneMint
class node_mission_data,node_battery toneRose
class node_operator toneIndigo
```

## Components

### User Interfaces

- [Streamlit App](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/app.py): `app.py`
- [CLI Runner](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/main.py): `main.py`
- [Route Plotting](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/utils.py): `utils.py`

### Knowledge Retrieval

- [Knowledge Text](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/knowledge.txt): `knowledge.txt`
- [RAG Retrieval](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/rag.py): `rag.py`
- **Embedding Model**
- **FAISS Index**

### Route Planning

- [Route Generation](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py): `optimizer.py`
- [MPDD Optimizer](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py): `optimizer.py`
- [MILP Optimizer](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py): `optimizer.py`
- [Pareto Search](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py): `optimizer.py`
- [Route Evaluation](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py): `optimizer.py`
- [Route Simulation](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/optimizer.py): `optimizer.py`
- [Algorithm Scoring](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/agent.py): `agent.py`

### Mission Model

- [Locations And Loads](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/data.py): `data.py`
- [Battery Limit](https://github.com/varunnaikr/multi-objective-uav-route-optimization-and-simulation/blob/main/config.py): `config.py`

### Other components

- **Operator**

## Connections

- Operator → Streamlit App: sets mission
- Streamlit App → RAG Retrieval: requests retrieval
- Streamlit App → Route Generation: generates routes
- Streamlit App → MPDD Optimizer: requests MPDD
- Streamlit App → MILP Optimizer: requests MILP
- Streamlit App → Pareto Search: requests Pareto
- Streamlit App → Route Evaluation: evaluates routes
- Streamlit App → Algorithm Scoring: scores algorithms
- Streamlit App → Route Simulation: simulates routes
- Streamlit App → Route Plotting: renders routes
- Operator → CLI Runner: runs planner
- CLI Runner → RAG Retrieval: requests retrieval
- CLI Runner → Route Generation: generates routes
- CLI Runner → Algorithm Scoring: requests decision
- CLI Runner → MPDD Optimizer: selects optimizer
- CLI Runner → MILP Optimizer: selects optimizer
- CLI Runner → Pareto Search: selects Pareto route
- CLI Runner → Route Plotting: plots route
- RAG Retrieval → Knowledge Text: loads text
- RAG Retrieval → Embedding Model: encodes text
- RAG Retrieval → FAISS Index: builds and searches
- Route Generation → Locations And Loads: uses locations
- Route Evaluation → Locations And Loads: reads locations and loads
- Route Evaluation → Battery Limit: checks capacity
- MPDD Optimizer → Route Evaluation: evaluates candidates
- MILP Optimizer → Route Evaluation: evaluates candidates
- Pareto Search → Route Evaluation: evaluates candidates
- Route Simulation → Locations And Loads: reads locations and loads
- Route Simulation → Battery Limit: uses capacity setting
- Route Plotting → Locations And Loads: reads coordinates
