{"id":1152118,"date":"2025-10-15T13:41:49","date_gmt":"2025-10-15T20:41:49","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-project&p=1152118"},"modified":"2025-11-20T10:20:11","modified_gmt":"2025-11-20T18:20:11","slug":"robusta-how-we-build-robust-by-design-algorithms","status":"publish","type":"msr-project","link":"https:\/\/www.microsoft.com\/en-us\/research\/project\/robusta-how-we-build-robust-by-design-algorithms\/","title":{"rendered":"Robusta: how we build robust-by-design algorithms"},"content":{"rendered":"
\n\t
\n\t\t
\n\t\t\t\"Automated\t\t<\/div>\n\t\t\n\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n

Robusta<\/h1>\n\n\n\n

How we build robust-by-design algorithms<\/strong><\/p>\n\n\n\n

Heuristic algorithms power nearly every production system — from scheduling to routing to resource allocation — because exact solutions are intractable. Yet, when inputs deviate from the designers’ base assumptions, these heuristics can collapse and perform poorly. Robusta aims to close this gap and help operators create robust-by-design algorithms.<\/p>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/section>\n\n\n\n

\n

Robusta generalizes our prior work on MetaOpt<\/a>, MetaEase*, and XPlain (opens in new tab)<\/span><\/a> from analysis to design.<\/p>\n<\/blockquote>\n\n\n\n\n\n

We use heuristics to solve computationally difficult problems where optimal solutions are too expensive to deploy, hard to manage, or otherwise inefficient. Our prior work, MetaOpt, shows many of the heuristics academics have developed and operators deploy can severely underperform under certain workloads. With MetaOpt, we enabled operators to find and mitigate such scenarios when possible. <\/p>\n\n\n\n

In Robusta we take a different approach: we aim to design algorithms that are Robust by design. Our approach is inspired by FunSearch and AlphaEvolve that combine LLMs and genetic search to generate “better performing” algorithms. In each step of the genetic search, FunSearch and AlphaEvolve use the LLM to generate new heuristics, “evaluate” the heuristic (though simulations), and use the result in the evolutionary process. Robusta takes this idea one step further. Unlike FunSearch\/AlphaEvolve that rely solely on simulation scores, Robusta uses analytical explanations<\/em> of why and when a heuristic underperforms.<\/p>\n\n\n\n

\"The<\/figure>\n\n\n\n

Robusta is a giant leap forward in automated algorithm design. It extends MetaOpt’s reach as a productivity booster and enables operators to design heuristics that are guaranteed to perform well in practice.<\/p>\n\n\n\n

How it works<\/h2>\n\n\n\n
\"text\"
The Robusta workflow. Here we show the Robusta workflow when it designs heuristics for a traffic engineering (where we route demands in a wide-area network in a way that respects link capacities) use-case. <\/figcaption><\/figure>\n\n\n\n

Step1: <\/strong>Find adversarial examples (inputs that cause the heuristic to underperform compared to the optimal) using MetaOpt or MetaEase.<\/p>\n\n\n\n

Step 2: <\/strong>Explain why performance drops under adversarial samples using XPlain<\/p>\n\n\n\n

Step 3: <\/strong>Feed distilled explanations to the LLM -> Generate suggestions on how to improve it<\/p>\n\n\n\n

Step 4:<\/strong> Feed suggestions into the LLM -> Uses genetic search or reinforcement learning to improve the heuristic<\/p>\n\n\n\n

We repeat the above process for each adversarial subspace we find for the base heuristic.<\/p>\n\n\n\n

We built Robusta based on the following observations:<\/p>\n\n\n\n

(1) To robust-ify algorithm design, we should evaluate the heuristic on examples where it is likely to underperform. We use our prior work on MetaOpt (which analyzes a mathematical model of a heuristic to find when it underperforms), MetaEase (which can analyze the heuristic’s code instead), and XPlain (which uses the output of MetaOpt\/MetaEase to find adversarial subspaces where the heuristic underperforms and explains why) to produce such examples. We find even such a simple change can help improve the quality of the heuristics we generate.<\/p>\n\n\n\n