Optimization under uncertainty: understanding orders and testing programs with specifications
Nicola Botta, Patrik Jansson, Tim Richter
TL;DR
The paper tackles optimization under uncertainty by generalizing core concepts of ${\min}$ and ${\mathrm{argmin}}$ to two uncertainty paradigms: value-based and functorial. It develops a rigorous, functionally inspired framework using Pareto optimality for multi-objective problems and introduces ${\mathrm{min}_u}$ and ${\mathrm{argmin}_u}$ that rely on uncertainty measures $\mu$ and a chosen uncertainty functor $U$, with precise monotonicity conditions (M1, M2). The authors provide formal specifications, executable implementations (e.g., ${\mathrm{paretoOpt}}$, ${\mathrm{bump}}$) and extensive property-based tests (QuickCheck) to validate the methods across identity, probability, and interval-like uncertainty. They also discuss sampling strategies, robustness considerations, and the relationship between value uncertainty and functorial uncertainty, illustrating practical pathways for verification and disciplined decision-making in climate, economics, and engineering contexts. Overall, the work lays groundwork for generic, testable, and potentially verifiable optimization under uncertainty that can be extended to formal proof environments.
Abstract
One of the most ubiquitous problems in optimization is that of finding all the elements of a finite set at which a function $f$ attains its minimum (or maximum). When the codomain of $f$ is equipped with a total order, it is easy to specify, implement, and verify generic solutions to this problem. But what if $f$ is affected by uncertainties? What if one seeks values that minimize more than one objective, or if $f$ does not return a single result but a set of possible results, or even a probability distribution? Such situations are common in climate science, economics, and engineering. Developing trustworthy solution methods for optimization under uncertainty requires formulating and answering these questions rigorously, including deciding which order relations to apply in different cases. We show how functional programming can support this task, and apply it to specify and test solution methods for cases where optimization is affected by two conceptually different kinds of uncertainty: value and functorial uncertainty.
