Skip to content

Commit

Permalink
Support for COPT exponential cone and fix bugs.
Browse files Browse the repository at this point in the history
  • Loading branch information
XiongPengNUS committed Oct 29, 2024
1 parent 35c6b54 commit 33b863f
Show file tree
Hide file tree
Showing 54 changed files with 286 additions and 265 deletions.
Binary file modified .DS_Store
Binary file not shown.
Binary file added .coverage
Binary file not shown.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v2
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
![GitHub issues](https://img.shields.io/github/issues-raw/XiongPengNUS/rsome)

- Website: [RSOME for Python](https://xiongpengnus.github.io/rsome/)
- PyPI: [RSOME 1.3.0](https://pypi.org/project/rsome/)
- PyPI: [RSOME 1.3.1](https://pypi.org/project/rsome/)

RSOME (Robust Stochastic Optimization Made Easy) is an open-source Python package for generic modeling of optimization problems (subject to uncertainty). Models in RSOME are constructed by variables, constraints, and expressions that are formatted as N-dimensional arrays. These arrays are consistent with the NumPy library in terms of syntax and operations, including broadcasting, indexing, slicing, element-wise operations, and matrix calculation rules, among others. In short, RSOME provides a convenient platform to facilitate developments of robust optimization models and their applications.

Expand Down
2 changes: 1 addition & 1 deletion docs/_site/about.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/dro_rsome.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_finpl.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_inv.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_ls.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_mas.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_nv.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_rs_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_vehicle.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_dro_wass_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ls.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_max_volume_box.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
18 changes: 10 additions & 8 deletions docs/_site/example_min_ellipsoid.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down Expand Up @@ -89,7 +89,7 @@ <h3 id="minimal-enclosing-ellipsoid">Minimal Enclosing Ellipsoid</h3>
&amp;\left(
\begin{array}{cc}
\pmb{P} &amp; \pmb{Z} \\
\pmb{Z} &amp; \text{diag}(\pmb{Z})
\pmb{Z}^{\top} &amp; \text{diag}(\pmb{Z})
\end{array}
\right) \succeq 0 \\
&amp;\pmb{Z}\text{ if lower triangular}.
Expand All @@ -103,7 +103,7 @@ <h3 id="minimal-enclosing-ellipsoid">Minimal Enclosing Ellipsoid</h3>
&amp;\left(
\begin{array}{cc}
\pmb{P} &amp; \pmb{Z} \\
\pmb{Z} &amp; \text{diag}(\pmb{Z})
\pmb{Z}^{\top} &amp; \text{diag}(\pmb{Z})
\end{array}
\right) \succeq 0 \\
&amp;\|\pmb{Px}_i - \pmb{c}\|_2 \leq 1, &amp;i=1, 2, ..., m \\
Expand All @@ -125,7 +125,7 @@ <h3 id="minimal-enclosing-ellipsoid">Minimal Enclosing Ellipsoid</h3>
<p>The Python code for implementing the model above is presented below.</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">rsome</span> <span class="kn">import</span> <span class="n">ro</span>
<span class="kn">from</span> <span class="nn">rsome</span> <span class="kn">import</span> <span class="n">msk_solver</span> <span class="k">as</span> <span class="n">msk</span>
<span class="kn">from</span> <span class="nn">rsome</span> <span class="kn">import</span> <span class="n">cpt_solver</span> <span class="k">as</span> <span class="n">cpt</span>
<span class="kn">import</span> <span class="nn">rsome</span> <span class="k">as</span> <span class="n">rso</span>

<span class="n">model</span> <span class="o">=</span> <span class="n">ro</span><span class="p">.</span><span class="n">Model</span><span class="p">()</span>
Expand All @@ -143,12 +143,14 @@ <h3 id="minimal-enclosing-ellipsoid">Minimal Enclosing Ellipsoid</h3>
<span class="n">model</span><span class="p">.</span><span class="n">st</span><span class="p">(</span><span class="n">rso</span><span class="p">.</span><span class="n">norm</span><span class="p">(</span><span class="n">P</span><span class="o">@</span><span class="n">xs</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">-</span> <span class="n">c</span><span class="p">)</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">model</span><span class="p">.</span><span class="n">st</span><span class="p">(</span><span class="n">P</span> <span class="o">&gt;&gt;</span> <span class="mi">0</span><span class="p">)</span>

<span class="n">model</span><span class="p">.</span><span class="n">solve</span><span class="p">(</span><span class="n">msk</span><span class="p">)</span>
<span class="n">model</span><span class="p">.</span><span class="n">solve</span><span class="p">(</span><span class="n">cpt</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">'Determinant: </span><span class="si">{</span><span class="n">np</span><span class="p">.</span><span class="n">exp</span><span class="p">(</span><span class="n">model</span><span class="p">.</span><span class="n">get</span><span class="p">())</span><span class="si">}</span><span class="s">'</span><span class="p">)</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Being solved by Mosek...
Solution status: Optimal
Running time: 0.0223s
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Being solved by COPT...
Solution status: 1
Running time: 0.0185s
Determinant: 0.23537956658491654
</code></pre></div></div>

<p>The boundary of the ellipsoid is achieved by the following code using the solution of \(\pmb{P}\) and \(\pmb{c}\).</p>
Expand Down
16 changes: 9 additions & 7 deletions docs/_site/example_min_ellipsoid.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ $$
&\left(
\begin{array}{cc}
\pmb{P} & \pmb{Z} \\
\pmb{Z} & \text{diag}(\pmb{Z})
\pmb{Z}^{\top} & \text{diag}(\pmb{Z})
\end{array}
\right) \succeq 0 \\
&\pmb{Z}\text{ if lower triangular}.
Expand All @@ -49,7 +49,7 @@ $$
&\left(
\begin{array}{cc}
\pmb{P} & \pmb{Z} \\
\pmb{Z} & \text{diag}(\pmb{Z})
\pmb{Z}^{\top} & \text{diag}(\pmb{Z})
\end{array}
\right) \succeq 0 \\
&\|\pmb{Px}_i - \pmb{c}\|_2 \leq 1, &i=1, 2, ..., m \\
Expand All @@ -74,7 +74,7 @@ The Python code for implementing the model above is presented below.

```python
from rsome import ro
from rsome import msk_solver as msk
from rsome import cpt_solver as cpt
import rsome as rso

model = ro.Model()
Expand All @@ -92,13 +92,15 @@ for i in range(m):
model.st(rso.norm(P@xs[i] - c) <= 1)
model.st(P >> 0)

model.solve(msk)
model.solve(cpt)
print(f'Determinant: {np.exp(model.get())}')
```

```
Being solved by Mosek...
Solution status: Optimal
Running time: 0.0223s
Being solved by COPT...
Solution status: 1
Running time: 0.0185s
Determinant: 0.23537956658491654
```

The boundary of the ellipsoid is achieved by the following code using the solution of \\(\pmb{P}\\) and \\(\pmb{c}\\).
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_moment_uncertainty_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_mv_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_opf.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ro_cvar_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ro_inv.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ro_knapsack.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ro_portfolio.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ro_vehicle.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_sudoku.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/example_ucp.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
2 changes: 1 addition & 1 deletion docs/_site/examples.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<link rel="icon" type="image/png" href="assets/img/favicon.png">
<title>Robust Stochastic Optimization Made Easy by XiongPengNUS</title>

<link rel="stylesheet" href="/assets/css/styles.css?v=552f0095bb978cceee79a8fd1480ca4a1ed0c4f7">
<link rel="stylesheet" href="/assets/css/styles.css?v=35c6b54b256086c854e1efe39f9eb0491005f2a6">
<meta name="viewport" content="width=device-width">

<!-- Place this tag in your head or just before your close body tag. -->
Expand Down
Loading

0 comments on commit 33b863f

Please sign in to comment.