<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by VectorWorks Academy on Medium]]></title>
        <description><![CDATA[Stories by VectorWorks Academy on Medium]]></description>
        <link>https://medium.com/@VectorWorksAcademy?source=rss-450a05fdd47c------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*Noo1OIJkyQNrYQNS4k--1w.png</url>
            <title>Stories by VectorWorks Academy on Medium</title>
            <link>https://medium.com/@VectorWorksAcademy?source=rss-450a05fdd47c------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 21:56:55 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@VectorWorksAcademy/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[A Practical Introduction to Optimization Solvers for Business]]></title>
            <link>https://medium.com/@VectorWorksAcademy/a-practical-introduction-to-optimization-solvers-for-business-59f409844e80?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/59f409844e80</guid>
            <category><![CDATA[cplex]]></category>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[gurobi]]></category>
            <category><![CDATA[mosek]]></category>
            <category><![CDATA[mathematical-programming]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Thu, 05 Nov 2026 21:58:05 GMT</pubDate>
            <atom:updated>2026-11-05T21:58:05.333Z</atom:updated>
            <content:encoded><![CDATA[<p>Many important business problems have the same underlying structure.</p><p>A company has a set of decisions it can make. Those decisions affect outcomes such as revenue, cost, service quality, risk, or customer experience. At the same time, the company operates under constraints: budgets are limited, warehouses have finite capacity, employees cannot work unlimited hours, and real-time systems have strict latency requirements.</p><p>At a high level, optimization asks:</p><blockquote>Among all feasible decisions, which one gives us the best outcome?</blockquote><p>This can often be written compactly as</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*ZTmdRiqm_x9h6cOa4SEAkQ.png" /></figure><p>This abstraction is simple, but it covers a surprisingly large number of real systems.</p><p>A retailer deciding where to place inventory, an airline assigning aircraft to routes, an advertising platform allocating budget, a marketplace matching supply to demand, and a financial institution constructing a portfolio are all solving different versions of the same basic problem.</p><p>The software ecosystem around optimization can look confusing at first because tools such as Gurobi, CPLEX, MOSEK, AMPL, and JuMP are often discussed together. The key is to separate two ideas:</p><p><strong>modeling the problem</strong> and <strong>solving the problem</strong>.</p><p>Gurobi, CPLEX, and MOSEK are primarily solver engines. AMPL and JuMP are primarily modeling layers that help us express a problem before sending it to a solver.</p><p>Once that distinction is clear, the rest becomes much easier to understand.</p><h3>From a business question to a mathematical model</h3><p>Suppose a company has a fixed budget (B) and wants to allocate it across a collection of opportunities.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dxhW78qp4r7nBXFRoeHuGw.png" /></figure><p>The first equation says: maximize total expected return.</p><p>The second says: total spending cannot exceed the available budget.</p><p>The last says: each individual opportunity may have its own upper bound (u_i).</p><p>This is already a complete optimization problem.</p><p>The vector (x) contains the <strong>decision variables</strong>. The expression \sum_i r_i x_i is the <strong>objective function</strong>. The remaining equations are the <strong>constraints</strong>.</p><p>A solver takes this mathematical representation and searches for the best feasible (x).</p><p>In a tiny model, the answer may be obvious. But real systems can have millions of variables, millions of constraints, and complicated interactions between decisions.</p><p>That is where optimization solvers become valuable.</p><h3>What a solver is actually doing</h3><p>A solver does not understand a warehouse, an ad campaign, or an airline.</p><p>It understands mathematics. If the model says</p><p>\max_x c^\top x</p><p>subject to<br>Ax \leq b,</p><p>the solver sees a structured mathematical problem and applies algorithms designed to exploit that structure.</p><p>For a linear program, or LP, both the objective and constraints are linear. A typical form is as follows.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/706/1*RXAICh1LDsxux83oEP2pQA.png" /></figure><p>Many allocation and planning problems can be expressed this way.</p><p>The problem becomes more difficult when some decisions must be discrete.</p><p>For example, a warehouse is either opened or not opened, A driver is either assigned to a shift or not, A machine may be purchased only in integer quantities. When continuous and integer variables appear together, we often get a <strong>mixed-integer program</strong>, or MIP. This distinction matters because integer decisions create combinatorial complexity.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/866/1*BLtyiVRfiYo-MES1gpEcBw.png" /></figure><p>Enumerating every possible combination is therefore impossible in practice.</p><p>Modern solvers do not brute-force this search space. They use techniques such as relaxations, branch-and-bound, cutting planes, presolve, and heuristics to eliminate large portions of the search space.</p><p>That is one of the core strengths of solvers such as Gurobi and CPLEX.</p><h3>Where Gurobi and CPLEX fit?</h3><p>Gurobi and IBM CPLEX are general-purpose commercial optimization engines.</p><p>They are commonly used for linear programming, mixed-integer programming, quadratic optimization, scheduling, allocation, network design, supply-chain planning, and many other operational problems.</p><p>Consider a facility-location problem as below</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yXIjV1Fnc56WktNKMMavWw.png" /></figure><p>This is the kind of problem where mixed-integer optimization is particularly natural.</p><p>Gurobi and CPLEX both provide highly optimized algorithms for problems like this. In many organizations, choosing between them is less about one being universally better and more about performance on the actual workload, licensing, integration, operational maturity, and existing expertise.</p><p>The solver should ultimately be evaluated on the problems the business actually needs to solve.</p><h3>Where MOSEK fits</h3><p>MOSEK is also a solver, but it is especially well known for convex and conic optimization.</p><p>These problem classes appear frequently in finance, risk management, robust optimization, energy systems, and some machine-learning applications.</p><p>Consider a basic portfolio problem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1020/1*ffmhcJ85UIDllxt_ZIhwSg.png" /></figure><p>A larger λputs more weight on reducing risk. A smaller λ puts more weight on expected return.</p><p>This is no longer a purely linear optimization problem because the risk term x^\top \Sigma x is quadratic.</p><p>More advanced formulations may involve second-order cones, exponential cones, or semidefinite constraints. MOSEK is particularly strong in this family of structured convex optimization problems.</p><p>There is significant overlap among solver capabilities, so these categories should not be treated as rigid boundaries. The better question is:</p><blockquote>What mathematical structure does my problem have, and which solver handles that structure well?</blockquote><h3>Modeling layers: where AMPL and JuMP fit</h3><p>AMPL and JuMP solve a different problem: they make optimization models easier to express, maintain, and connect to solver engines.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/754/1*PouRdxw9CqUzbl0782vUew.png" /></figure><p>A modeling system lets us write something close to the mathematical structure itself instead of manually constructing low-level matrix representations.</p><p>AMPL was designed specifically for mathematical modeling. It lets users describe sets, parameters, variables, objectives, and constraints in a form that closely resembles mathematical notation.</p><p>JuMP provides a similar abstraction inside Julia.</p><p>A JuMP model might look conceptually like this:</p><pre>model = Model(Gurobi.Optimizer)<br><br>@variable(model, x &gt;= 0)<br>@variable(model, y &gt;= 0)<br><br>@objective(model, Max, 5x + 3y)<br><br>@constraint(model, 2x + y &lt;= 100)<br><br>optimize!(model)</pre><p>Here, JuMP describes the model while Gurobi performs the optimization.</p><p>The important architectural separation is:</p><pre>Business logic<br>      ↓<br>Mathematical model<br>      ↓<br>Modeling layer<br>      ↓<br>Solver<br>      ↓<br>Solution</pre><p>The modeling layer says what should be solved.</p><p>The solver determines how to solve it efficiently.</p><p>This separation is useful because the mathematical model often represents durable business logic, while the underlying solver can potentially change.</p><h3>Optimization often sits downstream of prediction</h3><p>One of the most important patterns in modern decision systems is the combination of machine learning and optimization.</p><p>Machine learning often estimates uncertain quantities. Optimization uses those estimates to make decisions. Suppose an advertising system considers opportunity (i).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/804/1*ouRLo-H2RYNpoBzFJUlx-g.png" /></figure><p>This distinction is useful far beyond advertising.</p><p>In logistics, machine learning may predict travel time while optimization chooses routes.</p><p>In retail, machine learning may predict demand while optimization allocates inventory.</p><p>In cloud infrastructure, machine learning may forecast load while optimization determines capacity allocation.</p><p>In marketplaces, machine learning may estimate conversion or fulfillment probability while optimization chooses which opportunities to prioritize.</p><p>A concise way to think about the relationship is</p><p>[<br>\text{Prediction}<br>\longrightarrow<br>\text{Decision}.<br>]</p><p>Machine learning primarily helps with the first part.</p><p>Optimization primarily helps with the second.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/1*CWSUPdYfD6Q6piy82uxVog.png" /></figure><h3>Constraints often reveal the real business problem</h3><p>Objectives are usually easy to state.</p><p>Maximize revenue.</p><p>Minimize cost.</p><p>Maximize conversions.</p><p>Minimize delivery time.</p><p>The harder part is usually specifying the constraints correctly.</p><p>Consider a delivery system. Minimizing distance alone may produce an operationally invalid plan.</p><p>The actual problem may need to satisfy</p><pre>truck load &lt; =capacity<br>driver hours&lt; 8<br>arrivel time ≤ deadline</pre><p>Similarly, maximizing ad conversions without budget constraints is not the real business problem.</p><p>Portfolio optimization without risk limits is not the real investment problem.</p><p>Workforce scheduling without labor rules is not the real scheduling problem.</p><p>A useful lesson is that <strong>constraints encode much of the operational reality of the business</strong>.</p><p>The optimization model becomes valuable only when those constraints are modeled correctly.</p><h3>Hard constraints and soft constraints</h3><p>Not every requirement should necessarily be treated as absolute.</p><p>Suppose a staffing system would ideally have 100 employees during a particular hour, but occasionally operating with 98 is acceptable.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8B12rwBcBjzJ3UUyUwNl-A.png" /></figure><p>The parameter λ represents how expensive understaffing is relative to labor cost.</p><p>A larger value of λ means the optimizer will work harder to avoid staffing shortages.</p><p>This conversion from a hard constraint into a penalty is extremely common in real optimization systems.</p><p>It also exposes an important modeling question:</p><blockquote><em>Is this rule </em>truly<em> impossible to violate, or is violating it merely expensive?</em></blockquote><p>That distinction can dramatically affect feasibility and system behavior.</p><h3>Lagrange multipliers provide another useful mental model</h3><p>Suppose we want to maximize value subject to a budget:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*MQoEkzrVAOpC5W9JPlEKEw.png" /></figure><p>When budget is scarce, the shadow price <strong>λ</strong> tends to be larger, meaning an opportunity needs to provide more value per unit of cost to be worthwhile.</p><p>When budget is abundant, <strong>λ</strong> can be smaller.</p><p>This idea appears repeatedly in resource-allocation systems.</p><p>The same intuition can apply to compute capacity, warehouse space, labor hours, inventory, or any other constrained resource.</p><p>Optimization therefore does more than return a decision. It can also reveal the marginal value of scarce resources.</p><h3>Offline optimization and online decisions are different problems</h3><p>Many solver-based systems work best when they have time to compute.</p><p>A supply-chain model may run overnight.</p><p>A workforce schedule may be generated once per week.</p><p>A financial portfolio may be optimized once per day.</p><p>These are naturally suited to batch optimization.</p><p>Real-time systems operate under very different constraints.</p><p>Imagine an advertising decision that must be made within 10 milliseconds.</p><p>Running a large MIP for every request would usually be unrealistic.</p><p>Instead, a common architecture is to solve a larger problem offline and turn the result into a lightweight online policy.</p><p>For example, an offline optimization process may estimate a shadow price λ, and the online system may apply a rule such as</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N9bhiojSv6tSSdXhJymzgg.png" /></figure><p>The original optimization may be complex.</p><p>The production decision becomes extremely simple.</p><p>This pattern is important because it separates two questions:</p><blockquote>What is the right decision policy?</blockquote><p>and</p><blockquote>How fast can that policy be executed?</blockquote><p>A production system often uses sophisticated optimization to answer the first question and simple arithmetic to answer the second.</p><h3>Uncertainty changes the problem</h3><p>Most business inputs are not known exactly.</p><p>Demand is forecasted.</p><p>Travel time is estimated.</p><p>CTR and CVR are predicted.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/742/1*LMJRGMbon2JbAfJ6unLpDA.png" /></figure><p>This creates a potential failure mode: an optimizer can aggressively exploit prediction errors.</p><p>If one opportunity is accidentally overestimated, the optimizer may allocate too much resource to it.</p><p>This is why production optimization often includes ideas such as conservative forecasts, regularization, scenario optimization, robust optimization, or risk penalties.</p><p>A simple example is</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/120/1*N_XqeOo7jlhTW9FzkMdogw.png" /></figure><p>The first term rewards expected value. The second term discourages excessively concentrated decisions.</p><p>Another approach is to optimize across multiple scenarios:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/288/1*w3PEujV5Kzva0i7X4HsTtA.png" /></figure><p>where scenario (s) represents a possible future state and (p_s) is its probability, with</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/212/1*4KH9iRbar2UdyRROB0knWQ.png" /></figure><p>A more conservative formulation might optimize for the worst case:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/268/1*Qkgr-giEWnsuJ8zc31wkAQ.png" /></figure><p>The practical lesson is that an optimizer should rarely be treated as if its inputs were perfectly known.</p><p>Prediction uncertainty is part of the optimization problem.</p><h3>A solver can be mathematically correct and still produce a bad product</h3><p>Suppose a model is defined as maximizing revenue , If customer experience, fairness, latency, reliability, or long-term effects are absent from the formulation, the solver cannot account for them. It may find the exact optimum of the wrong problem.For example, perhaps the real objective should be closer to</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6dB8dG28aA2iq0bT92lcOQ.png" /></figure><p>This is one of the most important distinctions in applied optimization.</p><p>There are really two notions of correctness.</p><p>The first is <strong>solver correctness</strong>:</p><blockquote>Did the solver correctly optimize the mathematical model?</blockquote><p>The second is <strong>model correctness</strong>:</p><blockquote>Did the mathematical model represent the business problem we actually care about?</blockquote><p>The first problem is largely handled by mature optimization software.The second remains a modeling and product problem. In practice, model correctness is often harder.</p><h3>Optimality is also a business decision</h3><p>For difficult mixed-integer problems, the solver may return a strong feasible solution before it can prove that the solution is globally optimal.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1004/1*57sYqc9DvZZRzZ0kKNb_zg.png" /></figure><p>The company now knows that its current solution is within roughly 1% of the best theoretically possible solution.</p><p>That may be more than sufficient.</p><p>This creates a practical trade-off between computation time and solution quality.</p><p>A system might prefer 1% optimality gap in 30 seconds over 0% optimality gap in 4 hours.</p><p>The appropriate choice depends on the economics of the problem.</p><p>If a (0.1%) improvement is worth millions of dollars, more computation may be justified.</p><p>If the inputs themselves have approximately (10%) forecast error, spending hours chasing mathematical optimality may add little real value.</p><h3>Optimization should compete with simpler alternatives</h3><p>A mathematical optimization formulation does not automatically imply that a solver should be used in production.</p><p>Suppose opportunities can be ranked according to: \frac{v_i}{c_i}, where (v_i) is expected value and (c_i) is expected cost.</p><p>A simple greedy policy might sort opportunities by \frac{v_i}{c_i}</p><p>and allocate resources in descending order.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zO6hBwtMnqAVbr3FlZ9WWQ.png" /></figure><p>If the heuristic runs in milliseconds, is easy to debug, and scales effortlessly, that (0.7%) difference may or may not justify solver complexity.</p><p>The correct comparison is not</p><blockquote>sophisticated optimization versus no optimization.</blockquote><p>It is</p><blockquote>solver-based optimization versus the best simpler alternative.</blockquote><p>That comparison should include not only objective value but also latency, reliability, implementation complexity, operational cost, explainability, and ease of experimentation.</p><h3>How to approach a new optimization problem</h3><p>When faced with a new problem, the most useful first step is not choosing a solver.</p><p>Start by writing down the decision variable.</p><p>Ask:</p><blockquote>What exactly is the system allowed to choose?</blockquote><p>If that cannot be written clearly, the problem is not yet ready to be optimized.</p><p>For example:</p><p>amount of resource allocated to opportunity i</p><p>Then define the objective mathematically.</p><p>\max_x \operatorname{ExpectedProfit}(x)</p><p>or</p><p>\min_x \operatorname{OperatingCost}(x).</p><p>Next , write down the major constraints.</p><p>For example,</p><p>\operatorname{Spend}(x) \leq B,<br>\operatorname{Capacity}(x) \leq C,<br>\operatorname{Risk}(x) \leq R.</p><p>Then classify the decision variables.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yvYFFIQqeOsCBYke8FPRyA.png" /></figure><p>This immediately tells you something about the likely difficulty of the problem.</p><p>Next, inspect the objective and constraints.</p><p>Are they linear? f(x)=c^\top x.</p><p>Quadratic? f(x)=x^\top Qx+c^\top x.</p><p>Convex?</p><p>Nonconvex?</p><p>That mathematical structure largely determines which solver families are relevant.</p><p>Only after this step does choosing between Gurobi, CPLEX, MOSEK, or another solver become meaningful.</p><h3>A practical workflow</h3><p>A strong first implementation is usually small.</p><p>Take a representative subset of the real problem and build the simplest mathematically correct formulation.</p><p>Suppose the production problem has ten million candidate decisions. Start with ten thousand.</p><p>Solve it.</p><p>Then inspect the solution manually.</p><p>Does it behave the way you expect?</p><p>Which constraints are binding?</p><p>How much does the objective change if the budget increases by (1%)?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5PwLLH0ipFFCBcayFoUYAg.png" /></figure><p>This sensitivity analysis is often more valuable than immediately scaling the model.</p><p>Only after understanding the small version should the system be scaled to realistic data.</p><p>At that point, solver runtime, memory, numerical stability, decomposition, and distributed architecture become relevant engineering concerns.</p><p>The development process therefore looks roughly like</p><pre>Business question<br>      ↓<br>Decision variable<br>      ↓<br>Objective<br>      ↓<br>Constraints<br>      ↓<br>Small mathematical model<br>      ↓<br>Validate behavior<br>      ↓<br>Choose modeling framework and solver<br>      ↓<br>Scale<br>      ↓<br>Integrate into production<br>      ↓<br>Measure business impact</pre><p>The solver sits in the middle of this process, not at the beginning.</p><h3>How to evaluate the system after launch</h3><p>Optimization systems should not be judged only by whether the solver reports “optimal.”</p><p>A mathematically optimal model can still create no business value.</p><p>The evaluation needs to connect the optimization objective to real outcomes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/984/1*HR7ZseaEB8iLIkzk0DKPcw.png" /></figure><p>If the system minimizes delivery cost, check whether customer delivery-time metrics degrade.</p><p>If it optimizes inventory allocation, measure stockouts, holding cost, and fulfillment speed.</p><p>It is useful to distinguish three layers of evaluation.</p><p>First is mathematical performance:</p><p>[<br>\text{objective value},<br>\qquad<br>\text{optimality gap},<br>\qquad<br>\text{runtime}.<br>]</p><p>Second is operational performance:</p><p>[<br>\text{latency},<br>\qquad<br>\text{failure rate},<br>\qquad<br>\text{constraint violation rate}.<br>]</p><p>Third is business performance:</p><p>[<br>\text{revenue},<br>\qquad<br>\text{cost},<br>\qquad<br>\text{conversion},<br>\qquad<br>\text{service quality}.<br>]</p><p>A production optimization system needs all three.</p><h3>The optimization stack in one picture</h3><p>The overall architecture can be summarized as</p><pre>Data and forecasts<br>        ↓<br>Business decision problem<br>        ↓<br>Decision variables, objective, constraints<br>        ↓<br>Mathematical model<br>        ↓<br>AMPL / JuMP / solver API<br>        ↓<br>Gurobi / CPLEX / MOSEK<br>        ↓<br>Optimal or near-optimal solution<br>        ↓<br>Business rules and execution layer<br>        ↓<br>Real-world outcome<br>        ↓<br>Measurement and feedback</pre><p>This is a more useful mental model than memorizing individual tool names.</p><p>The modeling layer expresses the problem.</p><p>The solver performs the numerical search.</p><p>The production system executes the decision.</p><p>The measurement system tells us whether the mathematical model actually improved the business.</p><h3>What to take away</h3><p>The most important lesson is that optimization is not primarily about solvers.</p><p>It is about turning a decision problem into a mathematical structure.</p><p>When approaching a new problem, try to answer the following questions in mathematical form.</p><p>First, what can the system decide?</p><p>[<br>x = \text{decision variables}.<br>]</p><p>Second, what outcome should it optimize?</p><p>[<br>\max_x f(x)<br>]</p><p>or</p><p>[<br>\min_x f(x).<br>]</p><p>Third, what constraints must it respect?</p><p>[<br>g_i(x)\leq 0.<br>]</p><p>Fourth, which inputs are uncertain?</p><p>\theta+\varepsilon.<br>]</p><p>And finally, how quickly must a decision be made?</p><p>That last question determines whether a full solver can run directly in the decision path or whether optimization should instead produce a simpler policy for an online system.</p><p>A linear or mixed-integer planning problem may naturally lead to Gurobi or CPLEX.</p><p>A convex or conic formulation may make MOSEK attractive.</p><p>AMPL may be useful when the team wants a solver-independent mathematical modeling language.</p><p>JuMP may be a natural choice when the optimization stack lives in Julia.</p><p>But the tool should follow the formulation, not the other way around.</p><p>A useful first exercise is to take one real business decision and write it in three lines.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1006/1*zZHsSsgxYccBL50nbdvlrw.png" /></figure><p>Once a business problem can be expressed at that level, you have crossed the most important conceptual boundary.</p><p>You are no longer asking:</p><blockquote>Which solver should I use?</blockquote><p>You are asking the more valuable question:</p><blockquote>What is the decision problem, what mathematical structure does it have, and what is the simplest reliable system that can solve it well?</blockquote><p>That is the starting point for building useful optimization systems.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=59f409844e80" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why SGD Looks Like a Random Walk: Batch Size, Sparsity, and the Noise Behind Deep Learning]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">One of the most useful ways to understand stochastic gradient descent is to start somewhere completely outside deep learning: a simple&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/why-sgd-looks-like-a-random-walk-batch-size-sparsity-and-the-noise-behind-deep-learning-f76c757acfab?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/why-sgd-looks-like-a-random-walk-batch-size-sparsity-and-the-noise-behind-deep-learning-f76c757acfab?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/f76c757acfab</guid>
            <category><![CDATA[dl-optimization]]></category>
            <category><![CDATA[batch-size]]></category>
            <category><![CDATA[random-walk]]></category>
            <category><![CDATA[sgd]]></category>
            <category><![CDATA[gradient-noise]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Mon, 19 Oct 2026 23:00:16 GMT</pubDate>
            <atom:updated>2026-10-19T23:00:16.916Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Inverse Propensity Scoring (IPS), Self-Normalized IPS (SNIPS), and Doubly Robust (DR) Estimation in…]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@VectorWorksAcademy/inverse-propensity-scoring-ips-self-normalized-ips-snips-and-doubly-robust-dr-estimation-in-a95895aa1772?source=rss-450a05fdd47c------2"><img src="https://cdn-images-1.medium.com/max/626/1*cdB8kodWaOv_l4Uv2E7EWA.png" width="626"></a></p><p class="medium-feed-snippet">One of the biggest challenges in advertising and recommendation systems is that we only observe the outcomes of actions that were actually&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/inverse-propensity-scoring-ips-self-normalized-ips-snips-and-doubly-robust-dr-estimation-in-a95895aa1772?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/inverse-propensity-scoring-ips-self-normalized-ips-snips-and-doubly-robust-dr-estimation-in-a95895aa1772?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/a95895aa1772</guid>
            <category><![CDATA[doubly-robust-estimation]]></category>
            <category><![CDATA[off-policy-evaluation]]></category>
            <category><![CDATA[offline-policy-evaluation]]></category>
            <category><![CDATA[ip]]></category>
            <category><![CDATA[counterfactual-learning]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Fri, 31 Jul 2026 01:08:51 GMT</pubDate>
            <atom:updated>2026-07-31T01:08:51.260Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Hot MLE interview Question Deep Dive: L1 vs L2 Regularization: Why They Behave So Differently]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">One of the most common interview questions in machine learning is:</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/hot-mle-interview-question-deep-dive-l1-vs-l2-regularization-why-they-behave-so-differently-9f4d89481798?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/hot-mle-interview-question-deep-dive-l1-vs-l2-regularization-why-they-behave-so-differently-9f4d89481798?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/9f4d89481798</guid>
            <category><![CDATA[l2-regularization]]></category>
            <category><![CDATA[l1-regularization]]></category>
            <category><![CDATA[elastic-net]]></category>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[weight-decay]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Fri, 31 Jul 2026 00:59:31 GMT</pubDate>
            <atom:updated>2026-07-31T00:59:31.695Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Focal Loss Explained: When It Helps, When It Hurts, and How to Think About It in Production ML]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@VectorWorksAcademy/focal-loss-explained-when-it-helps-when-it-hurts-and-how-to-think-about-it-in-production-ml-8c94aa258eb5?source=rss-450a05fdd47c------2"><img src="https://cdn-images-1.medium.com/max/728/1*VMcbAohnQ_AgebBa3MWFSg.png" width="728"></a></p><p class="medium-feed-snippet">One of the first challenges engineers encounter when training large-scale machine learning models is class imbalance. Suppose you&#x2019;re&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/focal-loss-explained-when-it-helps-when-it-hurts-and-how-to-think-about-it-in-production-ml-8c94aa258eb5?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/focal-loss-explained-when-it-helps-when-it-hurts-and-how-to-think-about-it-in-production-ml-8c94aa258eb5?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/8c94aa258eb5</guid>
            <category><![CDATA[ctr-prediction]]></category>
            <category><![CDATA[imbalanced-data]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[focal-loss]]></category>
            <category><![CDATA[deep-learning]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Sun, 26 Jul 2026 22:57:25 GMT</pubDate>
            <atom:updated>2026-07-26T22:57:25.357Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Hard Negative Sampling, Calibration, and Offline Evaluation: Avoiding Hidden Pitfalls in…]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">One of the biggest transitions from building ML models in academia to deploying them in large-scale advertising systems is realizing that&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/hard-negative-sampling-calibration-and-offline-evaluation-avoiding-hidden-pitfalls-in-b52d5355c4a0?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/hard-negative-sampling-calibration-and-offline-evaluation-avoiding-hidden-pitfalls-in-b52d5355c4a0?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/b52d5355c4a0</guid>
            <category><![CDATA[ads-ranking]]></category>
            <category><![CDATA[offline-evaluation]]></category>
            <category><![CDATA[model-calibration]]></category>
            <category><![CDATA[recommendation-system]]></category>
            <category><![CDATA[ctr-prediction]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Sun, 26 Jul 2026 21:47:24 GMT</pubDate>
            <atom:updated>2026-07-26T21:47:24.595Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[The AUC–FLOPs Trade-off: Balancing Prediction Quality and Inference Efficiency in Production…]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@VectorWorksAcademy/the-auc-flops-trade-off-balancing-prediction-quality-and-inference-efficiency-in-production-5f2ee76a43de?source=rss-450a05fdd47c------2"><img src="https://cdn-images-1.medium.com/max/1322/1*vOJ-T_H1bGj7cyHakmbHaw.png" width="1322"></a></p><p class="medium-feed-snippet">Before diving into deep learning architectures or feature engineering, every machine learning practitioner eventually encounters the same&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/the-auc-flops-trade-off-balancing-prediction-quality-and-inference-efficiency-in-production-5f2ee76a43de?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/the-auc-flops-trade-off-balancing-prediction-quality-and-inference-efficiency-in-production-5f2ee76a43de?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/5f2ee76a43de</guid>
            <category><![CDATA[flop]]></category>
            <category><![CDATA[recommendation-system]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[auc]]></category>
            <category><![CDATA[model-efficiency]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Thu, 23 Jul 2026 02:30:59 GMT</pubDate>
            <atom:updated>2026-07-23T02:30:59.845Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[LeetCode 1723: Find Minimum Time to Finish All Jobs — How Senior and Staff Engineers Decompose Hard…]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">One of the biggest misconceptions about coding interviews is that they&#x2019;re about writing code.</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/leetcode-1723-find-minimum-time-to-finish-all-jobs-how-senior-and-staff-engineers-decompose-hard-078da5125035?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/leetcode-1723-find-minimum-time-to-finish-all-jobs-how-senior-and-staff-engineers-decompose-hard-078da5125035?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/078da5125035</guid>
            <category><![CDATA[coding-interviews]]></category>
            <category><![CDATA[leetcode-1723]]></category>
            <category><![CDATA[branch-and-bound]]></category>
            <category><![CDATA[backtracking-algorithm]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Sat, 18 Jul 2026 06:13:52 GMT</pubDate>
            <atom:updated>2026-07-18T06:13:52.149Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Value Maximizers vs. Quasi-Linear Utility Maximizers: A Gentle Guide for Ad Auctions]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@VectorWorksAcademy/value-maximizers-vs-quasi-linear-utility-maximizers-a-gentle-guide-for-ad-auctions-22cf5267068f?source=rss-450a05fdd47c------2"><img src="https://cdn-images-1.medium.com/max/1276/1*dheb93x9zq_agc4GqE7lDQ.png" width="1276"></a></p><p class="medium-feed-snippet">Most auction theory starts with a simple assumption: bidders want to maximize profit.</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/value-maximizers-vs-quasi-linear-utility-maximizers-a-gentle-guide-for-ad-auctions-22cf5267068f?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/value-maximizers-vs-quasi-linear-utility-maximizers-a-gentle-guide-for-ad-auctions-22cf5267068f?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/22cf5267068f</guid>
            <category><![CDATA[auto-bidding]]></category>
            <category><![CDATA[ad-auction]]></category>
            <category><![CDATA[quasi-linear-utility]]></category>
            <category><![CDATA[price-of-anarchy]]></category>
            <category><![CDATA[value-maximization]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Tue, 07 Jul 2026 06:10:03 GMT</pubDate>
            <atom:updated>2026-07-07T06:10:03.809Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[The Price of Anarchy: Why Rational Bidders Can Make Ad Markets Inefficient]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-snippet">Online advertising looks like a machine for finding the highest-value match.</p><p class="medium-feed-link"><a href="https://medium.com/@VectorWorksAcademy/the-price-of-anarchy-why-rational-bidders-can-make-ad-markets-inefficient-b084af52310f?source=rss-450a05fdd47c------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@VectorWorksAcademy/the-price-of-anarchy-why-rational-bidders-can-make-ad-markets-inefficient-b084af52310f?source=rss-450a05fdd47c------2</link>
            <guid isPermaLink="false">https://medium.com/p/b084af52310f</guid>
            <category><![CDATA[first-price-auction]]></category>
            <category><![CDATA[price-of-anarchy]]></category>
            <category><![CDATA[second-price-auction]]></category>
            <category><![CDATA[ad-auction]]></category>
            <dc:creator><![CDATA[VectorWorks Academy]]></dc:creator>
            <pubDate>Mon, 06 Jul 2026 17:30:23 GMT</pubDate>
            <atom:updated>2026-07-06T17:30:23.673Z</atom:updated>
        </item>
    </channel>
</rss>