# xgandibleux/metasppstu architecture

> Architecture diagram of the GitHub repository xgandibleux/metasppstu, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xgandibleux/metasppstu
- Repository: https://github.com/xgandibleux/metasppstu

## Overview

metaSPPstu is a small Julia teaching toolkit for Set Packing Problem instances and experiments. Its documented example loads an instance, builds a JuMP model, solves it with GLPK, and lists available instance files. Separately, the experiment script demonstrates a simulated GRASP-SPP protocol with graphical output. The graph follows only README-documented relationships; source excerpts were unavailable, so internal call details and plotting dependencies are not inferred.

Main entry points: [`main.jl`](https://github.com/xgandibleux/metasppstu/blob/master/main.jl) (Example workflow), [`experiment.jl`](https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl) (Experiment protocol), [`loadSPP.jl`](https://github.com/xgandibleux/metasppstu/blob/master/loadSPP.jl) (Instance loader), [`setSPP.jl`](https://github.com/xgandibleux/metasppstu/blob/master/setSPP.jl) (JuMP model builder)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_spp["SPP modeling"]
  node_main["Example workflow<br/>[main.jl]"]
  node_loader["Instance loader<br/>[loadSPP.jl]"]
  node_model["JuMP model builder<br/>[setSPP.jl]"]
  node_ju_mp["JuMP"]
  node_glpk["GLPK solver"]
end

subgraph group_experiment["Experiments"]
  node_experiment_script["Experiment protocol<br/>[experiment.jl]"]
  node_grasp["Simulated GRASP-SPP<br/>[experiment.jl]"]
  node_plots["Graphical results<br/>[experiment.jl]"]
end

subgraph group_instances["Instance data"]
  node_file_names["File name collector<br/>[getfname.jl]"]
  node_data["SPP instances"]
end

node_user(("User"))

node_user -->|"runs example"| node_main
node_main -->|"loads instance"| node_loader
node_loader -->|"reads"| node_data
node_main -->|"builds model"| node_model
node_model -->|"constructs model"| node_ju_mp
node_main -->|"solves exactly"| node_glpk
node_main -->|"collects names"| node_file_names
node_file_names -->|"lists files"| node_data
node_user -->|"runs protocol"| node_experiment_script
node_experiment_script -->|"demonstrates"| node_grasp
node_experiment_script -->|"produces"| node_plots

click node_main "https://github.com/xgandibleux/metasppstu/blob/master/main.jl"
click node_loader "https://github.com/xgandibleux/metasppstu/blob/master/loadSPP.jl"
click node_model "https://github.com/xgandibleux/metasppstu/blob/master/setSPP.jl"
click node_file_names "https://github.com/xgandibleux/metasppstu/blob/master/getfname.jl"
click node_data "https://github.com/xgandibleux/metasppstu/tree/master/Data"
click node_experiment_script "https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl"
click node_grasp "https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl"
click node_plots "https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl"

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_main,node_loader,node_model,node_ju_mp,node_glpk,node_user toneBlue
class node_experiment_script,node_grasp,node_plots toneAmber
class node_file_names,node_data toneMint
```

## Components

### SPP modeling

- [Example workflow](https://github.com/xgandibleux/metasppstu/blob/master/main.jl): `main.jl`
- [Instance loader](https://github.com/xgandibleux/metasppstu/blob/master/loadSPP.jl): `loadSPP.jl`
- [JuMP model builder](https://github.com/xgandibleux/metasppstu/blob/master/setSPP.jl): `setSPP.jl`
- **JuMP**
- **GLPK solver**

### Experiments

- [Experiment protocol](https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl): `experiment.jl`
- [Simulated GRASP-SPP](https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl): `experiment.jl`
- [Graphical results](https://github.com/xgandibleux/metasppstu/blob/master/experiment.jl): `experiment.jl`

### Instance data

- [File name collector](https://github.com/xgandibleux/metasppstu/blob/master/getfname.jl): `getfname.jl`
- [SPP instances](https://github.com/xgandibleux/metasppstu/tree/master/Data): `Data`

### Other components

- **User**

## Connections

- User → Example workflow: runs example
- Example workflow → Instance loader: loads instance
- Instance loader → SPP instances: reads
- Example workflow → JuMP model builder: builds model
- JuMP model builder → JuMP: constructs model
- Example workflow → GLPK solver: solves exactly
- Example workflow → File name collector: collects names
- File name collector → SPP instances: lists files
- User → Experiment protocol: runs protocol
- Experiment protocol → Simulated GRASP-SPP: demonstrates
- Experiment protocol → Graphical results: produces
