From 024f6d4132291131548dcf904e37bafff0950de4 Mon Sep 17 00:00:00 2001 From: Daniel Rosel Date: Sun, 15 Feb 2026 17:10:13 +0100 Subject: [PATCH] banner addition --- paper/src/chapters/03-methodology.tex | 1 + paper/src/graphics/banner.png | Bin 0 -> 42284 bytes paper/src/graphics/banner.py | 14 ++++++++++++++ paper/src/graphics/banner.txt | 23 +++++++++++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 paper/src/graphics/banner.png create mode 100644 paper/src/graphics/banner.py create mode 100644 paper/src/graphics/banner.txt diff --git a/paper/src/chapters/03-methodology.tex b/paper/src/chapters/03-methodology.tex index 79e5ca7..2109814 100644 --- a/paper/src/chapters/03-methodology.tex +++ b/paper/src/chapters/03-methodology.tex @@ -316,6 +316,7 @@ This yields two centroid-like heuristics that guide contamination estimation at In implementation, we maintain an alternating game-history stack (our \textit{Limbo} stack) and execute it explicitly every epoch with exactly two transitions: first the platform publishes a price vector (leader move), then the market responds with trajectory-derived demand (follower move). % Mention discretized action space and the clipping and over shotting in continuous action spaces +% Also talk about catastrophic economics, we add termination on bankrupcy or zero demand so market collaps \subsubsection{Ambiguity Set Construction} We define an ambiguity set $\mathcal{U}_\epsilon(\hat{P}_N)$ centered around our empirical reference distribution $\hat{P}_N$ (derived from the generator $\mathcal{G}$). We utilize the Wasserstein distance metric to define the set of plausible demand distributions the agent might face: diff --git a/paper/src/graphics/banner.png b/paper/src/graphics/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..232186ec43b6e98cc63ff36f6468565b76f819ef GIT binary patch literal 42284 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 EALH`SbpQYW literal 0 HcmV?d00001 diff --git a/paper/src/graphics/banner.py b/paper/src/graphics/banner.py new file mode 100644 index 0000000..4b77f43 --- /dev/null +++ b/paper/src/graphics/banner.py @@ -0,0 +1,14 @@ +from PIL import Image, ImageDraw, ImageFont + +text = open("banner.txt", "r", encoding="utf-8").read() +font = ImageFont.truetype("DejaVuSansMono.ttf", 18) + +dummy = Image.new("RGB", (1, 1)) +d = ImageDraw.Draw(dummy) +bbox = d.multiline_textbbox((0,0), text, font=font) +w, h = bbox[2]-bbox[0], bbox[3]-bbox[1] + +img = Image.new("RGB", (w+20, h+20), "white") +d = ImageDraw.Draw(img) +d.multiline_text((10,10), text, font=font, fill="black") +img.save("banner.png") diff --git a/paper/src/graphics/banner.txt b/paper/src/graphics/banner.txt new file mode 100644 index 0000000..f4d3cb9 --- /dev/null +++ b/paper/src/graphics/banner.txt @@ -0,0 +1,23 @@ +Actors Trajectories +■════■ interact ┌────────────┐ ┌──┐ +║Agent──────┬──────▻Web Platform├──┐ │τ1│ ┌▻Q (demand estimate)─┐ +║Human──────┘ └──────△─────┘ └──▻..│──┘ │ +╚════■ │ │τK│ │ + △ │ └──┘ │ + │motivate │ │ + └────────┐ │Setting ┌──┐ Pricing Engine │ + ▲ ┌──┐│ │Prices │p1│ ┌──────────────┐ │ + │ ┌─┘ ││ └───────────┤..│◅────│▒▒▒▒▒▒▒▒▒▒▒▒▒▒│◅──┘ + │ │ └──┐ │pN│ └─────┬──┬─────┘ + │ ┌─┘ │ └──┘ │ │ + └─┴─────────┴─▶ │ │ + Private Valuations │ │ + │ │ + ╔═══════════════════════════════════════════════════╧══╧════════╗ + ║ Training Loop / SAC PPO DQN A2C ║ + ║ ■═════════════════════════════■ ║ + ║ Q̂_t,i = Σ_s Σ_k ω(a_s,k) · 1[i_s,k = i] │ ║ + ║ f(τ') from KL( T' || T_H ) and KL( T' || T_A ) │ ║ + ║ α* = argmin_{α ∈ Aε(α0)} [ Revenue(p, Q^α) - λ·COI_leak ] │ ║ + ║ r_t = Revenue - λ·f(τ') | a* ▽ ║ + ╚═══════════════════════════════════════════════════════════════╝