From 9d71b1f21b468f431e32274693045bb491158b91 Mon Sep 17 00:00:00 2001 From: Luciano Silva do Lago Date: Mon, 22 Jun 2026 09:09:15 -0300 Subject: [PATCH] Docs: Update math formulation in Solver tab to reflect true operational constraints --- app/dashboard.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/dashboard.py b/app/dashboard.py index a6a3c4d..d88779b 100644 --- a/app/dashboard.py +++ b/app/dashboard.py @@ -207,20 +207,24 @@ with tab2: # --- TAB 3: SOLVER --- with tab3: st.header("Mathematical Formulation") - st.latex(r"\min \sum_{t} \sum_{r} (c_{r} \cdot x_{r,t}) + \sum_{t} \sum_{d} (M \cdot s_{d,t})") - st.latex(r"\text{s.t.} \quad \sum_{m,e} (\text{cap}_{m} \cdot x_{m,e,r,t}) + s_{r,t} \ge \text{PAX}_{r,t} \quad \forall r, t") + st.latex(r"\min \sum_{m,e,r,t} (c_{m,e,r} \cdot x_{m,e,r,t})") + st.latex(r"\text{s.t.} \quad \sum_{m,e} (\text{cap}_{m} \cdot x_{m,e,r,t}) \ge \text{PAX}_{r,t} \quad \forall r, t") st.latex(r"\sum_{t_{start} \le T \le t_{start} + \text{pernoites}} x_{m,e,r,t_{start}} \le \text{MaxFleet}_{m,e} \quad \forall m, e, T") + st.latex(r"\text{TempoVoo}_{m,r} \cdot x_{m,e,r,t} \le \text{MaxHorasDia} \quad \forall m,e,r,t") + st.latex(r"\text{TempoMissao}_{m,r} \le \text{MaxDiasFora} \quad \forall m,r") st.markdown(r""" - **Dictionary of Variables:** + **Dictionary of Variables & Constraints:** - $x_{m,e,r,t}$: Decision Variable (Integer). Number of aircraft of model $m$, from squadron $e$, allocated to route $r$ on day $t$. - - $c_r$: Estimated total fuel cost for the route $r$ mission, including overnight stay penalties if applicable. - - $s_{r,t}$: Slack Variable. Represents the passenger demand that could **not** be met on that day due to fleet limitations. - - $M$: High Penalty (Big M). Imposed on the system for each unit of slack activated, forcing the solver to meet demand whenever possible. + - $c_{m,e,r}$: Total fuel cost function: $c_{m,e,r} = \left( \frac{\text{Dist}_r \cdot \text{PenAlcance}}{\text{Consumo}_m} \right) + (\text{Pernoites} \cdot \text{PenDiaria}_m)$. + - $\text{PenAlcance}$: Range Penalty. Applies a **25% penalty** multiplier ($1.25$) to the fuel burn if any leg of the mission exceeds the aircraft's maximum range. + - $\text{PenDiaria}_m$: Overnight Penalty. Equivalent to an extra daily fuel expenditure quota for each day the aircraft spends out of its base. - $\text{cap}_m$: Maximum passenger capacity (seats) of aircraft $m$. - $\text{PAX}_{r,t}$: Actual number of Air Force passengers needing to fly on route $r$ on day $t$. - $\text{MaxFleet}_{m,e}$: Total physical aircraft available in squadron $e$ for model $m$. - $T$: Temporal inspection window. Ensures aircraft blockade during overnight stays, preventing fleet duplication. + - $\text{MaxHorasDia}$: Maximum allowed flight time per day per aircraft (typically $12$ hours). + - $\text{MaxDiasFora}$: Maximum allowable time for a mission before returning to base (hard limit of $96$ hours / 4 days). """) if st.button("🚀 Run Global Optimization", type="primary"):