Commit 25b755fe authored by Dr.李's avatar Dr.李

update example

parent 94f1faf8
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -10,17 +10,19 @@ ...@@ -10,17 +10,19 @@
"source": [ "source": [
"import numpy as np\n", "import numpy as np\n",
"import pandas as pd\n", "import pandas as pd\n",
"import sqlalchemy as sa\n", "import sqlalchemy as sahttp://localhost:8888/notebooks/optimizer%20check.ipynb#\n",
"from cvxpy import *\n", "from cvxpy import *\n",
"from cvxopt import *\n", "from cvxopt import *\n",
"from alphamind.data.neutralize import neutralize\n", "from alphamind.data.neutralize import neutralize\n",
"from alphamind.data.winsorize import winsorize_normal\n",
"from alphamind.data.standardize import standardize\n",
"\n", "\n",
"engine = sa.create_engine('mysql+mysqldb://sa:We051253524522@rm-bp1psdz5615icqc0yo.mysql.rds.aliyuncs.com/uqer?charset=utf8')" "engine = sa.create_engine('mysql+mysqldb://sa:We051253524522@rm-bp1psdz5615icqc0yo.mysql.rds.aliyuncs.com/uqer?charset=utf8')"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -43,7 +45,7 @@ ...@@ -43,7 +45,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -55,17 +57,9 @@ ...@@ -55,17 +57,9 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 1.18 s\n"
]
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"\n", "\n",
...@@ -87,7 +81,7 @@ ...@@ -87,7 +81,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -98,17 +92,9 @@ ...@@ -98,17 +92,9 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 2 ms\n"
]
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"factor_values = factor_data[factor_list].values\n", "factor_values = factor_data[factor_list].values\n",
...@@ -118,71 +104,44 @@ ...@@ -118,71 +104,44 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 95.1 ms\n"
]
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"ne_factor_values = neutralize(risk_exposure_values, factor_values)\n", "ne_factor_values = neutralize(risk_exposure_values, standardize(winsorize_normal(factor_values)))\n",
"signal_full = ne_factor_values @ weights" "signal_full = ne_factor_values @ weights / 5"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"(3236, 38)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"risk_exposure_values.shape" "risk_exposure_values.shape"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 96.6 ms\n"
]
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"risk_cov_values = risk_cov_data.loc[risk_factor_columns, risk_factor_columns].astype(float)\n", "risk_cov_values = risk_cov_data.loc[risk_factor_columns, risk_factor_columns].astype(float) \n",
"sec_cov_values_full = risk_exposure_values @ risk_cov_values @ risk_exposure_values.T + np.diag(specific_risk.SRISK.values)" "sec_cov_values_full = (risk_exposure_values @ risk_cov_values @ risk_exposure_values.T + np.diag(specific_risk.SRISK.values ** 2)) / 100."
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"n = 500\n", "n = 200\n",
"\n", "\n",
"sec_cov_values = sec_cov_values_full[:n, :n]\n", "sec_cov_values = sec_cov_values_full[:n, :n]\n",
"signal = signal_full[:n]" "signal = signal_full[:n]"
...@@ -198,17 +157,9 @@ ...@@ -198,17 +157,9 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 40.5 ms\n"
]
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"w = Variable(n)\n", "w = Variable(n)\n",
...@@ -226,57 +177,9 @@ ...@@ -226,57 +177,9 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"ECOS 2.0.4 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n",
"\n",
"It pcost dcost gap pres dres k/t mu step sigma IR | BT\n",
" 0 -1.877e-01 -1.780e+03 +3e+05 9e-01 7e-05 1e+00 3e+02 --- --- 1 1 - | - - \n",
" 1 -1.602e+03 -1.632e+03 +5e+03 2e-01 1e-06 4e-02 5e+00 0.9827 1e-04 2 3 3 | 0 0\n",
" 2 -2.076e+02 -2.079e+02 +3e+02 3e-03 1e-08 3e-03 3e-01 0.9890 3e-04 3 6 6 | 0 0\n",
" 3 -1.051e+02 -1.052e+02 +2e+02 1e-03 6e-09 1e-02 2e-01 0.5385 7e-02 5 7 8 | 0 0\n",
" 4 -8.891e+01 -8.897e+01 +1e+02 1e-03 5e-09 6e-02 1e-01 0.6989 6e-01 4 8 7 | 0 0\n",
" 5 -4.536e+01 -4.538e+01 +5e+01 5e-04 2e-09 3e-02 5e-02 0.6049 1e-01 5 8 8 | 0 0\n",
" 6 -2.019e+01 -2.020e+01 +2e+01 1e-04 7e-10 1e-02 2e-02 0.8600 2e-01 3 8 8 | 0 0\n",
" 7 -2.056e+01 -2.056e+01 +2e+01 1e-04 7e-10 1e-02 2e-02 0.1776 8e-01 3 7 7 | 0 0\n",
" 8 -1.649e+01 -1.649e+01 +1e+01 1e-04 5e-10 1e-02 1e-02 0.9885 7e-01 4 8 8 | 0 0\n",
" 9 -1.367e+01 -1.367e+01 +7e+00 7e-05 3e-10 6e-03 7e-03 0.9890 6e-01 3 7 7 | 0 0\n",
"10 -1.061e+01 -1.061e+01 +3e+00 3e-05 1e-10 3e-03 3e-03 0.7242 2e-01 3 7 7 | 0 0\n",
"11 -1.013e+01 -1.013e+01 +2e+00 3e-05 1e-10 2e-03 2e-03 0.8257 8e-01 3 7 6 | 0 0\n",
"12 -9.405e+00 -9.405e+00 +1e+00 2e-05 5e-11 1e-03 1e-03 0.7934 4e-01 3 7 6 | 0 0\n",
"13 -8.799e+00 -8.799e+00 +3e-01 1e-05 1e-11 3e-04 3e-04 0.8278 1e-01 3 7 6 | 0 0\n",
"14 -8.665e+00 -8.665e+00 +1e-01 8e-06 4e-12 9e-05 1e-04 0.9890 3e-01 3 6 6 | 0 0\n",
"15 -8.620e+00 -8.620e+00 +2e-02 2e-06 7e-13 1e-05 2e-05 0.9483 1e-01 3 5 5 | 0 0\n",
"16 -8.612e+00 -8.612e+00 +9e-04 8e-07 4e-14 8e-07 9e-07 0.9663 2e-02 3 4 4 | 0 0\n",
"17 -8.611e+00 -8.611e+00 +4e-05 2e-07 2e-15 4e-08 4e-08 0.9642 1e-02 3 4 4 | 0 0\n",
"18 -8.611e+00 -8.611e+00 +8e-06 5e-08 4e-16 7e-09 8e-09 0.8511 3e-02 2 3 3 | 0 0\n",
"19 -8.611e+00 -8.611e+00 +2e-06 3e-08 6e-17 2e-09 2e-09 0.9047 2e-01 3 4 4 | 0 0\n",
"20 -8.611e+00 -8.611e+00 +3e-07 6e-09 4e-18 3e-10 3e-10 0.9043 9e-02 2 2 2 | 0 0\n",
"21 -8.611e+00 -8.611e+00 +2e-08 9e-10 8e-19 2e-11 2e-11 0.9360 9e-03 3 3 3 | 0 0\n",
"\n",
"OPTIMAL (within feastol=8.6e-10, reltol=2.8e-09, abstol=2.4e-08).\n",
"Runtime: 1.907916 seconds.\n",
"\n",
"Wall time: 2.08 s\n"
]
},
{
"data": {
"text/plain": [
"-8.611391732276179"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"prob.solve(verbose=True)" "prob.solve(verbose=True)"
...@@ -284,67 +187,18 @@ ...@@ -284,67 +187,18 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"('optimal', -8.611391732276179)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"prob.status, prob.value" "prob.status, prob.value"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
" pcost dcost gap pres dres k/t\n",
" 0: -2.3819e-01 -1.8511e+03 1e+05 2e+01 2e-03 1e+00\n",
" 1: -1.2862e+03 -1.4195e+03 7e+03 1e+00 2e-04 4e-02\n",
" 2: -5.5826e+01 -7.2123e+01 3e+02 2e-01 2e-05 4e-01\n",
" 3: -2.7307e+01 -3.2510e+01 9e+01 5e-02 6e-06 1e-01\n",
" 4: -1.7701e+01 -1.9666e+01 3e+01 2e-02 2e-06 4e-02\n",
" 5: -1.9140e+01 -2.0915e+01 3e+01 2e-02 2e-06 3e-02\n",
" 6: -1.5705e+01 -1.6831e+01 2e+01 1e-02 1e-06 2e-02\n",
" 7: -1.2820e+01 -1.3398e+01 8e+00 6e-03 7e-07 1e-02\n",
" 8: -1.1756e+01 -1.2160e+01 6e+00 4e-03 5e-07 7e-03\n",
" 9: -9.8873e+00 -1.0053e+01 2e+00 2e-03 2e-07 3e-03\n",
"10: -9.7630e+00 -9.9076e+00 2e+00 2e-03 2e-07 2e-03\n",
"11: -8.9206e+00 -8.9597e+00 5e-01 4e-04 5e-08 6e-04\n",
"12: -8.7573e+00 -8.7765e+00 2e-01 2e-04 2e-08 3e-04\n",
"13: -8.6970e+00 -8.7087e+00 1e-01 1e-04 1e-08 2e-04\n",
"14: -8.6316e+00 -8.6344e+00 4e-02 3e-05 3e-09 4e-05\n",
"15: -8.6130e+00 -8.6133e+00 3e-03 3e-06 3e-10 3e-06\n",
"16: -8.6114e+00 -8.6114e+00 8e-05 7e-08 7e-12 9e-08\n",
"17: -8.6114e+00 -8.6114e+00 8e-06 6e-09 1e-11 8e-09\n",
"Optimal solution found.\n",
"Wall time: 2.16 s\n"
]
},
{
"data": {
"text/plain": [
"-8.611395800843123"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"prob.solve(verbose=True, solver='CVXOPT')" "prob.solve(verbose=True, solver='CVXOPT')"
...@@ -352,54 +206,18 @@ ...@@ -352,54 +206,18 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 15, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"('optimal', -8.611395800843123)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"prob.status, prob.value" "prob.status, prob.value"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 16, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
" pcost dcost gap pres dres\n",
" 0: -3.5750e+02 -4.1776e+02 2e+04 1e+02 5e-14\n",
" 1: -3.1011e+02 -2.5923e+02 1e+04 8e+01 4e-14\n",
" 2: -6.7480e+01 -1.4607e+02 2e+03 1e+01 5e-14\n",
" 3: -1.5291e+01 -1.3022e+02 4e+02 1e+00 1e-14\n",
" 4: -8.9120e+00 -5.0845e+01 6e+01 1e-01 3e-15\n",
" 5: -8.1091e+00 -1.9295e+01 1e+01 2e-02 2e-15\n",
" 6: -8.1870e+00 -1.1578e+01 4e+00 5e-03 2e-15\n",
" 7: -8.2484e+00 -9.7661e+00 2e+00 9e-04 1e-15\n",
" 8: -8.4016e+00 -9.1567e+00 8e-01 2e-16 2e-15\n",
" 9: -8.5308e+00 -8.7593e+00 2e-01 2e-16 1e-15\n",
"10: -8.5717e+00 -8.6888e+00 1e-01 2e-16 2e-15\n",
"11: -8.6012e+00 -8.6299e+00 3e-02 2e-16 2e-15\n",
"12: -8.6086e+00 -8.6152e+00 7e-03 9e-16 1e-15\n",
"13: -8.6114e+00 -8.6114e+00 9e-05 1e-15 2e-15\n",
"14: -8.6114e+00 -8.6114e+00 1e-06 4e-16 1e-15\n",
"Optimal solution found.\n",
"Wall time: 789 ms\n"
]
}
],
"source": [ "source": [
"%%time\n", "%%time\n",
"P = matrix(sec_cov_values)\n", "P = matrix(sec_cov_values)\n",
...@@ -435,7 +253,7 @@ ...@@ -435,7 +253,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 17, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -446,7 +264,7 @@ ...@@ -446,7 +264,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -460,7 +278,7 @@ ...@@ -460,7 +278,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 19, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -470,7 +288,7 @@ ...@@ -470,7 +288,7 @@
" w = Variable(n)\n", " w = Variable(n)\n",
"\n", "\n",
" lbound = 0.\n", " lbound = 0.\n",
" ubound = 1. / n * 20\n", " ubound = 0.2\n",
"\n", "\n",
" objective = Minimize(risk_penlty * quad_form(w, sec_cov_values) - signal * w)\n", " objective = Minimize(risk_penlty * quad_form(w, sec_cov_values) - signal * w)\n",
" constraints = [w >= lbound,\n", " constraints = [w >= lbound,\n",
...@@ -478,12 +296,13 @@ ...@@ -478,12 +296,13 @@
" sum_entries(w) == 1,]\n", " sum_entries(w) == 1,]\n",
"\n", "\n",
" prob = Problem(objective, constraints)\n", " prob = Problem(objective, constraints)\n",
" prob.solve(verbose=False, solver='CVXOPT', display=False)" " prob.solve(verbose=False, solver='CVXOPT', display=False)\n",
" #print('cvxpy({0}): '.format(n), prob.value)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 20, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -497,7 +316,7 @@ ...@@ -497,7 +316,7 @@
" h = np.zeros(2*n)\n", " h = np.zeros(2*n)\n",
" for i in range(n):\n", " for i in range(n):\n",
" G[i, i] = 1.\n", " G[i, i] = 1.\n",
" h[i] = 0.01\n", " h[i] = 0.2\n",
" G[i+n, i] = -1.\n", " G[i+n, i] = -1.\n",
" h[i+n] = 0.\n", " h[i+n] = 0.\n",
"\n", "\n",
...@@ -511,65 +330,34 @@ ...@@ -511,65 +330,34 @@
" b = matrix(b)\n", " b = matrix(b)\n",
" \n", " \n",
" solvers.options['show_progress'] = False\n", " solvers.options['show_progress'] = False\n",
" sol = solvers.qp(P, q, G, h, A, b)" " sol = solvers.qp(P, q, G, h, A, b)\n",
" #print('cvxopt({0}): '.format(n), sol['dual objective'])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 21, "execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.712124\n"
]
}
],
"source": [ "source": [
"s = time_function(cvxopt, n)\n", "n_steps = list(range(200, 3001, 200))\n",
"print(s)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Scale for 200\n",
"Scale for 400\n",
"Scale for 600\n",
"Scale for 800\n",
"Scale for 1000\n",
"Scale for 1200\n",
"Scale for 1400\n",
"Scale for 1600\n",
"Scale for 1800\n",
"Scale for 2000\n"
]
}
],
"source": [
"n_steps = list(range(200, 2001, 200))\n",
"cvxpy_times = [None] * len(n_steps)\n", "cvxpy_times = [None] * len(n_steps)\n",
"cvxopt_times = [None] * len(n_steps)\n", "cvxopt_times = [None] * len(n_steps)\n",
"\n", "\n",
"print(\"{0:<8}{1:>12}{2:>12}\".format('Scale(n)', 'cvxpy', 'cvxopt'))\n",
"\n",
"for i, n in enumerate(n_steps):\n", "for i, n in enumerate(n_steps):\n",
" print(\"Scale for {0}\".format(n))\n",
" sec_cov_values = sec_cov_values_full[:n, :n]\n", " sec_cov_values = sec_cov_values_full[:n, :n]\n",
" signal = signal_full[:n]\n", " signal = signal_full[:n]\n",
" cvxpy_times[i] = time_function(cvxpy, n) * 1000\n", " cvxpy_times[i] = time_function(cvxpy, n) * 1000\n",
" cvxopt_times[i] = time_function(cvxopt, n) * 1000" " cvxopt_times[i] = time_function(cvxopt, n) * 1000\n",
" \n",
" print(\"{0:<8}{1:>12.2f}{2:>12.2f}\".format(n, cvxpy_times[i], cvxopt_times[i]))"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 23, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
...@@ -583,369 +371,98 @@ ...@@ -583,369 +371,98 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 24, "execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"ipopt_times = [63.4241, 157.568, 208.774, 436.105, 522.81, 744.118, 1133.87, 1685.59, 1409.36, 3364.33]" "df['ipopt'] = ipopt_times"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"risk_penlty"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 25, "execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"np.array(sol['x']).flatten()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"np.linalg.det(sec_cov_values_full)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"sec_cov_values_full.diagonal().mean()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"np.linalg.svd(sec_cov_values_full)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": { "metadata": {
"collapsed": true "collapsed": true
}, },
"outputs": [], "outputs": [],
"source": [ "source": [
"df['ipopt'] = ipopt_times" "np.savetxt(\"sec_cov_values.csv\", sec_cov_values_full, delimiter=\",\")"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 26, "execution_count": null,
"metadata": {}, "metadata": {
"outputs": [ "collapsed": true
{ },
"data": { "outputs": [],
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>cvxopt</th>\n",
" <th>cvxpy</th>\n",
" <th>ipopt</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Problem Scale (n)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>200</th>\n",
" <td>49.534</td>\n",
" <td>201.142</td>\n",
" <td>63.4241</td>\n",
" </tr>\n",
" <tr>\n",
" <th>400</th>\n",
" <td>426.353</td>\n",
" <td>1254.889</td>\n",
" <td>157.5680</td>\n",
" </tr>\n",
" <tr>\n",
" <th>600</th>\n",
" <td>1427.580</td>\n",
" <td>3833.469</td>\n",
" <td>208.7740</td>\n",
" </tr>\n",
" <tr>\n",
" <th>800</th>\n",
" <td>3404.400</td>\n",
" <td>9154.496</td>\n",
" <td>436.1050</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1000</th>\n",
" <td>6363.836</td>\n",
" <td>17391.481</td>\n",
" <td>522.8100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1200</th>\n",
" <td>12835.927</td>\n",
" <td>29585.606</td>\n",
" <td>744.1180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1400</th>\n",
" <td>20837.407</td>\n",
" <td>47275.402</td>\n",
" <td>1133.8700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1600</th>\n",
" <td>26858.257</td>\n",
" <td>66219.215</td>\n",
" <td>1685.5900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1800</th>\n",
" <td>37523.647</td>\n",
" <td>104994.916</td>\n",
" <td>1409.3600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2000</th>\n",
" <td>57507.285</td>\n",
" <td>111186.259</td>\n",
" <td>3364.3300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cvxopt cvxpy ipopt\n",
"Problem Scale (n) \n",
"200 49.534 201.142 63.4241\n",
"400 426.353 1254.889 157.5680\n",
"600 1427.580 3833.469 208.7740\n",
"800 3404.400 9154.496 436.1050\n",
"1000 6363.836 17391.481 522.8100\n",
"1200 12835.927 29585.606 744.1180\n",
"1400 20837.407 47275.402 1133.8700\n",
"1600 26858.257 66219.215 1685.5900\n",
"1800 37523.647 104994.916 1409.3600\n",
"2000 57507.285 111186.259 3364.3300"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"df" "np.savetxt(\"signal.csv\", signal_full., delimiter=\",\")"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 27, "execution_count": null,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'dual infeasibility': 1.458726131447995e-15,\n",
" 'dual objective': -8.611392389649453,\n",
" 'dual slack': 2.1901323532949252e-08,\n",
" 'gap': 1.1402692474473834e-06,\n",
" 'iterations': 14,\n",
" 'primal infeasibility': 4.440892098500626e-16,\n",
" 'primal objective': -8.611391249380205,\n",
" 'primal slack': 5.626639017385082e-12,\n",
" 'relative gap': 1.3241405650096933e-07,\n",
" 's': <1000x1 matrix, tc='d'>,\n",
" 'status': 'optimal',\n",
" 'x': <500x1 matrix, tc='d'>,\n",
" 'y': <1x1 matrix, tc='d'>,\n",
" 'z': <1000x1 matrix, tc='d'>}"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sol"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/plain": [
"array([ 3.99999999e-02, 1.52782206e-02, 2.84044580e-10,\n",
" 3.07558142e-10, 7.78993110e-10, 3.35930031e-03,\n",
" 1.84550927e-09, 6.61073273e-10, 1.03430679e-02,\n",
" 1.34263821e-09, 5.69064297e-10, 3.05219658e-10,\n",
" 2.60845020e-10, 2.85509339e-10, 2.39306928e-09,\n",
" 2.98985475e-10, 2.33668730e-10, 3.47879281e-10,\n",
" 1.07586264e-06, 2.75856470e-10, 3.74775516e-10,\n",
" 3.38483745e-10, 3.68146995e-10, 8.52512820e-10,\n",
" 5.44855174e-10, 3.81254595e-10, 4.78878576e-10,\n",
" 5.69867403e-10, 3.06132868e-03, 3.77214754e-10,\n",
" 2.77278553e-10, 4.99240016e-10, 8.93210563e-10,\n",
" 4.34630996e-10, 5.91226248e-10, 9.55333837e-10,\n",
" 1.73775760e-10, 2.37724800e-10, 4.02462022e-10,\n",
" 2.09311560e-08, 2.94670815e-10, 8.30709967e-10,\n",
" 8.57422068e-10, 9.60387593e-10, 2.86417375e-10,\n",
" 1.94831139e-10, 2.59797059e-09, 1.25078637e-09,\n",
" 1.87196022e-10, 2.67694440e-10, 2.49804831e-02,\n",
" 1.02914259e-08, 2.86354629e-10, 3.51133854e-10,\n",
" 1.32508438e-09, 3.06881729e-10, 4.75562140e-10,\n",
" 5.95537564e-03, 3.64720100e-02, 3.44563375e-10,\n",
" 6.01326913e-10, 6.13169542e-10, 3.54813091e-10,\n",
" 2.40069893e-10, 2.75389796e-10, 3.08538284e-10,\n",
" 6.91465656e-03, 2.83503307e-10, 8.74846275e-10,\n",
" 7.65771738e-10, 4.56615636e-03, 3.47863841e-02,\n",
" 2.92575956e-10, 1.18387152e-09, 1.50144091e-08,\n",
" 1.76787398e-09, 3.87377323e-10, 8.14788939e-10,\n",
" 3.46230159e-10, 2.44240866e-10, 6.69485256e-10,\n",
" 5.17130830e-10, 7.96599256e-10, 3.99999999e-02,\n",
" 4.94998417e-10, 9.72509195e-10, 6.07492064e-10,\n",
" 2.67176175e-10, 3.15198817e-10, 4.53926076e-10,\n",
" 2.93766589e-10, 1.18003900e-09, 4.38567777e-10,\n",
" 9.06949745e-10, 3.78857702e-02, 2.48726790e-03,\n",
" 4.44820075e-10, 2.96561353e-10, 1.92713608e-09,\n",
" 8.77874115e-10, 3.87507851e-10, 2.76350871e-09,\n",
" 3.00640517e-10, 2.26342030e-10, 2.76316948e-10,\n",
" 4.00000000e-02, 6.59856706e-03, 7.86853880e-10,\n",
" 5.11873730e-10, 3.58240168e-10, 5.14954662e-10,\n",
" 3.61635892e-10, 4.46058611e-09, 2.81567065e-10,\n",
" 4.05940157e-10, 2.89242449e-10, 2.72513238e-10,\n",
" 1.51074280e-02, 4.28549870e-10, 2.68265123e-10,\n",
" 4.50221662e-10, 3.07973437e-10, 6.99783169e-10,\n",
" 3.99999999e-02, 5.32622908e-10, 6.11228497e-10,\n",
" 1.50915232e-09, 3.38116839e-10, 2.75728345e-10,\n",
" 2.39851328e-10, 4.17953908e-10, 3.29750895e-09,\n",
" 2.92206553e-10, 1.75582319e-02, 4.69712358e-10,\n",
" 3.79903062e-10, 1.77790656e-09, 3.44658233e-10,\n",
" 8.06697379e-05, 9.37194023e-10, 3.87665692e-10,\n",
" 5.48697424e-10, 1.71258942e-09, 4.80379421e-10,\n",
" 4.95673576e-10, 3.78256539e-02, 2.99091863e-10,\n",
" 2.88085206e-09, 3.23625662e-10, 2.47503528e-10,\n",
" 2.25750985e-10, 3.88717216e-10, 3.01416977e-10,\n",
" 2.72122355e-10, 5.62723291e-10, 7.92172432e-10,\n",
" 3.99431880e-10, 6.07081882e-10, 2.40422726e-10,\n",
" 5.52270922e-03, 5.98145453e-10, 1.27306297e-09,\n",
" 5.48260894e-10, 3.36809564e-10, 3.34424650e-10,\n",
" 2.96076228e-08, 1.76038473e-03, 1.03800673e-09,\n",
" 2.37067319e-10, 2.69621890e-10, 1.98072151e-10,\n",
" 3.89917271e-10, 2.26385315e-10, 2.36141894e-10,\n",
" 3.78402900e-10, 1.26992435e-09, 3.30696674e-10,\n",
" 4.02871184e-10, 1.63023090e-10, 8.94202901e-10,\n",
" 3.37533602e-10, 7.21421243e-10, 3.00712880e-10,\n",
" 1.42746739e-09, 6.90657341e-10, 4.83134323e-10,\n",
" 4.85545869e-10, 1.78566936e-10, 5.80314243e-10,\n",
" 7.86431976e-10, 2.92305854e-10, 7.65542509e-10,\n",
" 6.56450591e-10, 1.89619574e-09, 1.73804329e-10,\n",
" 3.99999984e-02, 6.42022127e-10, 2.62054710e-10,\n",
" 3.40358996e-10, 3.75278305e-02, 2.68884283e-02,\n",
" 2.11310670e-10, 9.54374751e-10, 5.32195682e-10,\n",
" 1.61592397e-03, 8.52312748e-03, 2.85815714e-10,\n",
" 2.36565902e-10, 2.37562803e-10, 4.26814374e-03,\n",
" 6.55804515e-10, 7.00905949e-10, 2.85611939e-10,\n",
" 2.49921651e-10, 4.13285630e-10, 1.36641147e-02,\n",
" 6.97544939e-10, 1.98099809e-09, 9.12481603e-10,\n",
" 6.67085137e-10, 2.07848620e-10, 1.75711670e-09,\n",
" 1.15210076e-09, 3.02580047e-10, 2.92106639e-10,\n",
" 3.15385762e-10, 2.28906082e-10, 1.49884957e-10,\n",
" 2.40967432e-10, 3.25252939e-10, 1.14927776e-09,\n",
" 4.00878373e-10, 2.36676373e-10, 4.98809103e-10,\n",
" 4.28493417e-10, 2.30458575e-10, 2.37370250e-10,\n",
" 5.40373057e-10, 2.13856083e-10, 1.11963535e-09,\n",
" 8.85662563e-03, 3.57270318e-02, 8.90077719e-10,\n",
" 3.17374248e-10, 4.39800988e-10, 3.04612964e-10,\n",
" 2.42589842e-10, 4.01844974e-10, 3.23905290e-10,\n",
" 2.43905460e-10, 3.43675563e-10, 5.13613505e-10,\n",
" 3.74611553e-10, 4.68298672e-10, 4.26075972e-10,\n",
" 2.75814946e-09, 3.79198165e-10, 6.63990037e-10,\n",
" 3.89294325e-10, 7.74683887e-10, 2.81002783e-10,\n",
" 2.67442507e-09, 2.03936612e-10, 4.99771152e-10,\n",
" 2.12806037e-10, 2.04972827e-10, 2.05058550e-02,\n",
" 3.70741331e-10, 2.48772126e-10, 1.70808944e-10,\n",
" 9.52046528e-10, 1.42795621e-09, 3.25593569e-02,\n",
" 3.73463405e-04, 5.52095041e-03, 2.75900720e-10,\n",
" 1.78025500e-09, 4.41509671e-10, 5.32367576e-10,\n",
" 4.19461165e-10, 3.48155060e-10, 3.96689482e-10,\n",
" 5.18741371e-10, 2.20201621e-03, 1.61746868e-09,\n",
" 3.23270913e-10, 7.42363957e-10, 5.89608973e-10,\n",
" 2.61714702e-10, 3.36496326e-10, 8.31038102e-10,\n",
" 3.58997676e-10, 2.63556541e-10, 7.97130662e-10,\n",
" 2.19103735e-10, 3.33853371e-10, 2.39362492e-10,\n",
" 1.60735856e-09, 4.88196702e-10, 4.06626177e-10,\n",
" 5.25811581e-03, 3.99999969e-02, 6.25495534e-10,\n",
" 1.87181179e-09, 3.12839550e-10, 1.74343212e-09,\n",
" 4.38295221e-10, 1.31864196e-09, 2.13593800e-10,\n",
" 6.88995567e-03, 2.50885620e-10, 3.39621513e-10,\n",
" 2.92559932e-10, 2.31567474e-10, 8.35872332e-10,\n",
" 5.23707275e-10, 1.38507684e-09, 7.27652171e-10,\n",
" 2.07920648e-10, 2.97169815e-10, 4.94814597e-10,\n",
" 4.97787089e-10, 1.68166627e-10, 2.46521474e-10,\n",
" 5.67132580e-10, 3.27936772e-03, 6.72131064e-10,\n",
" 8.56955701e-11, 3.73205858e-10, 5.37322211e-10,\n",
" 2.95855269e-10, 2.24002677e-09, 2.10352883e-10,\n",
" 1.72886018e-09, 9.37536042e-10, 3.32900253e-10,\n",
" 1.46131104e-09, 4.79478628e-10, 6.93480009e-10,\n",
" 1.88242915e-09, 2.70472591e-10, 1.00591618e-09,\n",
" 1.10101316e-09, 2.17604688e-10, 4.86098844e-10,\n",
" 5.23443217e-03, 2.91877340e-10, 3.34803117e-10,\n",
" 5.50527474e-10, 3.79913346e-10, 1.85193941e-10,\n",
" 2.93878860e-03, 2.77281871e-10, 4.52618892e-10,\n",
" 3.26266372e-10, 3.61367986e-10, 3.03754379e-03,\n",
" 2.57897603e-02, 7.43949956e-10, 2.11515289e-10,\n",
" 1.33557641e-10, 3.13187219e-10, 2.46362986e-10,\n",
" 2.88635033e-10, 3.57526589e-10, 4.29776154e-10,\n",
" 1.44393545e-02, 1.10936316e-09, 1.13995023e-09,\n",
" 6.09914742e-10, 7.73858755e-09, 2.20948146e-10,\n",
" 8.59197569e-03, 2.60929643e-10, 8.76978973e-10,\n",
" 5.57883437e-10, 1.13325836e-09, 3.39593411e-10,\n",
" 2.39511673e-10, 6.68584655e-10, 1.14491200e-09,\n",
" 9.23434159e-10, 3.46590302e-10, 8.51580988e-10,\n",
" 5.03454758e-10, 3.21181523e-10, 3.95273791e-10,\n",
" 8.19250641e-10, 3.83512479e-10, 4.08700338e-10,\n",
" 2.43173594e-10, 1.99020265e-10, 2.10813650e-10,\n",
" 4.23374048e-10, 1.92755421e-10, 3.99999999e-02,\n",
" 5.07885007e-10, 5.97508451e-10, 9.74969104e-03,\n",
" 2.13074976e-10, 4.05644867e-10, 3.67294697e-10,\n",
" 3.40095260e-10, 3.19857414e-10, 4.84094361e-10,\n",
" 8.83113456e-10, 4.02785427e-10, 7.69995355e-10,\n",
" 2.75839993e-10, 7.90942640e-03, 2.35347157e-10,\n",
" 3.59524109e-10, 3.31143166e-10, 3.31547342e-10,\n",
" 4.47930536e-10, 7.05046082e-10, 3.22886470e-10,\n",
" 1.93432598e-09, 2.29960757e-03, 3.07870191e-10,\n",
" 2.87934367e-10, 4.40769375e-10, 2.75485973e-10,\n",
" 4.31162354e-10, 3.12280557e-10, 1.24029867e-10,\n",
" 3.32281829e-10, 2.62743845e-10, 4.64367160e-10,\n",
" 6.29502695e-10, 5.92090057e-10, 7.83481706e-10,\n",
" 8.98232819e-10, 4.24756611e-09, 4.47175015e-10,\n",
" 3.03333934e-10, 1.09941506e-09, 7.05433000e-03,\n",
" 5.07493811e-10, 1.92444847e-03, 5.47108021e-10,\n",
" 2.44846668e-10, 3.72595829e-10, 1.99755991e-09,\n",
" 1.06136504e-09, 3.51314608e-10, 5.46012542e-10,\n",
" 3.21813201e-10, 3.02771776e-10, 3.88423155e-10,\n",
" 2.65136713e-10, 7.96177869e-10, 3.95339100e-10,\n",
" 2.20704940e-10, 6.68909256e-10, 4.76989894e-10,\n",
" 5.50652700e-09, 3.05732962e-10, 2.06929911e-10,\n",
" 3.57421753e-10, 5.98405195e-10, 5.42748761e-03,\n",
" 1.02375894e-09, 4.31296153e-10, 2.38410182e-10,\n",
" 1.75062181e-02, 7.50440280e-10, 5.13550144e-10,\n",
" 1.04557111e-09, 9.09235537e-10, 4.32680652e-10,\n",
" 5.12945130e-10, 7.48263434e-03, 1.28484049e-02,\n",
" 5.35157051e-10, 2.62473038e-02, 2.67230539e-10,\n",
" 3.21651739e-10, 5.45512347e-03, 2.98484843e-10,\n",
" 5.08132389e-10, 2.94145614e-10, 2.90235145e-10,\n",
" 4.23583265e-10, 6.27217842e-10, 4.75078208e-10,\n",
" 3.95909614e-10, 4.32008742e-10, 4.16133042e-10,\n",
" 3.87299556e-02, 9.43658042e-10, 1.16478522e-09,\n",
" 1.65489455e-02, 1.65791553e-02, 1.34821203e-09,\n",
" 3.31736699e-10, 3.78954127e-10, 4.09699106e-10,\n",
" 2.27903500e-08, 6.18015443e-10])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"np.array(sol['x']).flatten()" "sol['dual objective']"
] ]
}, },
{ {
...@@ -960,7 +477,7 @@ ...@@ -960,7 +477,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python [default]",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment