Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

title Optimization Agent
emoji 🎯
colorFrom blue
colorTo purple
sdk streamlit
sdk_version 1.40.0
app_file src/ui/app.py
pinned false

OR-Tools & LangGraph Optimization System

Multi-agent orchestration that pairs LangGraph LLM nodes with deterministic Google OR-Tools solving and a Streamlit UI.

Architecture

flowchart LR
    UI[Streamlit UI] --> F[Formulator]
    F --> C[Coder]
    C --> E[Executor]
    E -->|success| R[Reporter]
    E -->|error / infeasible| V[Reviewer]
    V --> C
    R --> UI
Loading
Node Role
Formulator Business prompt + baseline params → Pydantic StructuredOptimizationModel
Coder Fills CP-SAT or VRP templates (no free-form OR-Tools syntax)
Executor Subprocess sandbox; captures stdout / tracebacks
Reviewer Self-correction loop on errors or infeasibility (max 3 retries)
Reporter Human-readable markdown summary

Requirements

  • Python 3.12
  • uv

Setup

cd optimisation-agent
cp .env.example .env
# Optional: set OPENAI_API_KEY for LLM nodes (heuristic fallback works offline)

uv sync --extra dev

Run UI

uv run streamlit run src/ui/app.py

The UI is a guided 4-step workflow (problem type → parameters → data → Run optimizer).
By default it uses the direct OR-Tools engine (fast, no API key). Enable “AI pipeline” only for natural-language refinements.

Run tests

uv run pytest

Project layout

src/
  agents/          # formulator, coder, reviewer, reporter
  graph/           # OptimizationState + StateGraph builder
  schemas/         # Pydantic models
  solver_sandbox/  # executor + OR-Tools templates
  ui/              # Streamlit app
  utils/           # logging, LLM helpers
tests/

Environment variables

Variable Description
OPENAI_API_KEY Enables LLM-backed nodes (optional)
OPENAI_MODEL Default gpt-4o-mini
MAX_SOLVER_RETRIES Reviewer loop limit (default 3)

About

An agent that uses optimsation to solve resourcing, scheduling and other problems with linear programming

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages