  Robust optimization is a very popular means to address decision-making
problems affected by uncertainty. Its success has been fueled by its attractive
robustness and scalability properties, by ease of modeling, and by the limited
assumptions it needs about the uncertain parameters to yield meaningful
solutions. Robust optimization techniques can address both single- and
multi-stage decision-making problems involving real-valued and/or binary
decisions, and exogenous and/or endogenous uncertain parameters. Many of these
techniques apply to problems with either robust (worst-case) or stochastic
(expectation) objectives and can thus be tailored to the risk preferences of
the decision-maker. Robust optimization techniques rely on duality theory
(potentially augmented with approximations) to transform a semi-infinite
optimization problem to a finite program of benign complexity (the ``robust
counterpart''). While writing down the model for a robust or stochastic
optimization problem is usually a simple task, obtaining the robust counterpart
requires expertise in robust optimization. To date, very few solutions are
available that can facilitate the modeling and solution of such problems. This
has been a major impediment to their being put to practical use. In this paper,
we propose ROC++, a C++ based platform for automatic robust optimization,
applicable to a wide array of single- and multi-stage stochastic and robust
problems with both exogenous and endogenous uncertain parameters. We also
propose the ROB file format that generalizes the LP file format to robust
optimization. Our platform can help streamline the modeling and solution of
stochastic and robust optimization problems for both researchers and
practitioners. It comes with detailed documentation to facilitate its use and
expansion. ROC++ is freely distributed for academic use.
