<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Optimization Software | Alexandre Amice</title><link>https://alexandreamice.github.io/tags/optimization-software/</link><atom:link href="https://alexandreamice.github.io/tags/optimization-software/index.xml" rel="self" type="application/rss+xml"/><description>Optimization Software</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 26 Apr 2026 00:00:00 +0000</lastBuildDate><image><url>https://alexandreamice.github.io/media/icon_hu_12f30033bf7ec525.png</url><title>Optimization Software</title><link>https://alexandreamice.github.io/tags/optimization-software/</link></image><item><title>CCosmo: A Custom First-Order Conic Solver</title><link>https://alexandreamice.github.io/project/ccosmo/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><guid>https://alexandreamice.github.io/project/ccosmo/</guid><description>&lt;h1 id="motivation"&gt;Motivation&lt;/h1&gt;
&lt;p&gt;Convex optimization appears throughout robotics, but in markedly different forms: small, dense quadratic programs (QPs) arise in online whole-body control, inverse-kinematics controllers, and reduced-order MPC controllers; moderately sized, sparse and dense quadratic and second-order cone programs (SOCPs) arise naturally in grasp selection and contact planning problems due to friction constraints; large, structured, and sparse problems arise in the context of trajectory optimization, with complicated semidefinite constraints becoming increasingly popular in the localization, perception, and motion planning communities.&lt;/p&gt;
&lt;p&gt;In many of these applications, solvers are part of a larger planning, control, or estimation loop that repeatedly solve closely related problems to moderate accuracy at high speeds.
This setting favors first-order methods, which have low memory requirements, are naturally warm started, and often converge rapidly to the accuracy required in the outer loop.
Moreover, the relative simplicity of first-order methods makes them easy to customize to different classes of instances, sizes, and hardware such as massive programs on compute clusters, tiny programs on embedded hardware, or batches of programs on GPUs.&lt;/p&gt;
&lt;h1 id="contribution"&gt;Contribution&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;CCosmo&lt;/code&gt; is a C++ implementation of a first-order conic optimization method designed to be customized around the problem family being solved. The core solver handles convex programs with quadratic costs.
&lt;code&gt;CCosmo&lt;/code&gt; is based on the same algorithm as the popular
and
solvers from the Oxford Control Group.&lt;/p&gt;
&lt;p&gt;In addition to the usual quadratic-cost, convex standard form program, &lt;code&gt;CCosmo&lt;/code&gt; supports programs in a matrix-standard-form that commonly arises when solving convex relaxations of non-convex programs. This is enabled by a custom matrix-linear-algebra backend.
Finally, &lt;code&gt;CCosmo&lt;/code&gt; also includes a GPU backend for solving large batches of very small programs.&lt;/p&gt;
&lt;h1 id="results"&gt;Results&lt;/h1&gt;
&lt;p&gt;PENDING CODE RELEASE&lt;/p&gt;
&lt;h1 id="code"&gt;Code&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;CCosmo&lt;/code&gt; will be released publicly soon!&lt;/p&gt;</description></item><item><title>VEGA: Decomposition Solver for Graphs of Convex Sets</title><link>https://alexandreamice.github.io/project/vega-gcs/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><guid>https://alexandreamice.github.io/project/vega-gcs/</guid><description>&lt;h1 id="motivation"&gt;Motivation&lt;/h1&gt;
&lt;p&gt;Graph of Convex Sets (GCS) is a powerful modeling framework for planning problems that combine discrete choices with continuous decisions.
A path through the graph selects a sequence of convex regions or modes, while the optimization variables choose continuous states inside those regions.&lt;/p&gt;
&lt;p&gt;This makes GCS a natural fit for robotics problems such as motion planning through convex regions, manipulation with contact modes, and mixed discrete-continuous task planning. The challenge is scale. A centralized relaxation can become very large, and the graph structure that made the model natural is no longer fully exploited by a generic conic solve.&lt;/p&gt;
&lt;h1 id="contribution"&gt;Contribution&lt;/h1&gt;
&lt;p&gt;VEGA is a decomposition solver for GCS programs written in C++. Instead of solving the full conic relaxation as one monolithic program, the method splits the problem into the pieces already present in the model: a local program at each vertex, a local program at each edge, and a global graph optimization update.&lt;/p&gt;
&lt;p&gt;At each iteration, these subproblems can be solved in parallel and then driven toward consensus. This creates a solver architecture that matches the original modeling structure and can scale to very large problems.&lt;/p&gt;
&lt;p&gt;In addition to VEGA, we provide a benchmark of GCS instances from the literature and distribute these instances as &lt;code&gt;GcsBench&lt;/code&gt;. We provide new C++ and Python based infrastructure in &lt;code&gt;GcsCpp&lt;/code&gt; for modelling, serializing, and deserializing instances so that other researchers can contribute their own instances to the benchmark. We also provide bridges to transform &lt;code&gt;Drake's&lt;/code&gt; GraphOfConvexSets objects and &lt;code&gt;gcsopt&lt;/code&gt; models to the standardized &lt;code&gt;GcsCpp&lt;/code&gt; instances.&lt;/p&gt;
&lt;p&gt;The benchmark set includes maze navigation, helicopter flight, shelf planning, bimanual manipulation, semidefinite pushing, and contact-graph instances. These programs take anywhere from less than a second to tens of minutes to solve with general-purpose convex solvers. The contact-graph instances are too large to be solved in a reasonable time by general-purpose methods.&lt;/p&gt;
&lt;h1 id="results"&gt;Results&lt;/h1&gt;
&lt;p&gt;VEGA is designed to solve GCS instances where the convex relaxation is too large to solve using a general-purpose, centralized solver.&lt;/p&gt;
&lt;p&gt;It is the only solver in the benchmark capable of solving any of the contact-graph instances.
On problems where centralized solvers do succeed, VEGA is typically slower as the additional overhead of coordinating the local solvers outweighs any benefits from using the decomposition-based method.&lt;/p&gt;</description></item></channel></rss>