<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Operations Research |</title><link>https://ad25aderram.github.io/my-portfolio/tags/operations-research/</link><atom:link href="https://ad25aderram.github.io/my-portfolio/tags/operations-research/index.xml" rel="self" type="application/rss+xml"/><description>Operations Research</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 01 Dec 2025 00:00:00 +0000</lastBuildDate><image><url>https://ad25aderram.github.io/my-portfolio/media/icon_hu_b93c5070c370bd46.png</url><title>Operations Research</title><link>https://ad25aderram.github.io/my-portfolio/tags/operations-research/</link></image><item><title>Pipeline Optimisation with Operations Research</title><link>https://ad25aderram.github.io/my-portfolio/projects/cicd-optimisation/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://ad25aderram.github.io/my-portfolio/projects/cicd-optimisation/</guid><description>&lt;p&gt;An operations research project that treats a real-world DevOps pipeline as a scheduling problem — applying classical OR methods to reduce deployment time for a critical banking application.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;CI/CD pipelines in high-stakes environments like banking have strict reliability and performance requirements. The challenge was to model the pipeline mathematically and find the minimum possible deployment duration while respecting task dependencies and enabling parallelism where possible.&lt;/p&gt;
&lt;h2 id="approach"&gt;Approach&lt;/h2&gt;
&lt;p&gt;The pipeline was modelled as a &lt;strong&gt;directed acyclic graph (DAG)&lt;/strong&gt; where each node is a pipeline stage and edges represent precedence constraints.&lt;/p&gt;
&lt;p&gt;Methods applied:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kahn&amp;rsquo;s topological sort&lt;/strong&gt; — to establish a valid execution order&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PERT/CPM&lt;/strong&gt; — to compute earliest and latest start dates for each task&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Critical path analysis&lt;/strong&gt; — to identify zero-slack tasks that directly determine total duration&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Slack analysis&lt;/strong&gt; — to find where parallelisation opportunities exist&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="results"&gt;Results&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Critical path: 64 minutes&lt;/strong&gt; — the theoretical minimum for a full deployment cycle&lt;/li&gt;
&lt;li&gt;Identified which pipeline stages offered the most optimisation potential&lt;/li&gt;
&lt;li&gt;Produced concrete managerial recommendations for resource prioritisation and risk mitigation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="architecture-diagram"&gt;Architecture diagram&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[Checkout] → [Build] → [Unit Tests] ─────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↘ ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Integration Tests] → [Security Scan] → [Deploy]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↗
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Docker Build] ──────
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Stages on the critical path have zero slack — any delay directly increases total deployment time.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="tech-stack"&gt;Tech stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Language&lt;/strong&gt;: Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Methods&lt;/strong&gt;: PERT/CPM, topological sort (Kahn&amp;rsquo;s algorithm), critical path analysis, graph theory&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="key-takeaways"&gt;Key takeaways&lt;/h2&gt;
&lt;p&gt;Operations research techniques that seem purely theoretical deliver actionable insights in modern software engineering — especially where reliability and time-to-market are critical. This project changed how I think about pipeline design.&lt;/p&gt;</description></item></channel></rss>