{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "4cd1da0e", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "import pandas as pd\n", "import numpy as np\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from synthetic_task.plot_results import load_results_QP, load_results_CP, plot_total_loss_vs_method_by_ydim, plot_total_time_vs_method_by_ydim, plot_total_time_vs_ydim_for_methods, plot_time_scaling_vs_ydim, load_results_across_batches, plot_time_scaling_vs_batch" ] }, { "cell_type": "code", "execution_count": 2, "id": "6f2b2dea", "metadata": {}, "outputs": [], "source": [ "sns.set_theme(style=\"whitegrid\", context=\"talk\")\n", "palette = sns.color_palette()" ] }, { "cell_type": "code", "execution_count": 4, "id": "d24a0bbc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method: ffocp_eq\n", "method: ffocp_eq\n", "method: ffocp_eq\n", "method: ffocp_eq\n", "method: ffocp_eq\n", "method: ffocp_eq\n" ] } ], "source": [ "# PLOT BATCH ABLATION\n", "ROOT = \"..\"\n", "\n", "METHODS = [\n", " \"ffocp_eq\",\n", "]\n", "METHODS_LEGEND = {\n", " \"ffocp_eq\": \"FFOCP\",\n", "}\n", "\n", "method_order = [METHODS_LEGEND[m] for m in METHODS]\n", "\n", "df_all = load_results_across_batches(\n", " root_dir=ROOT,\n", " batch_sizes=None,\n", " loader_fn=load_results_CP,\n", " methods=METHODS,\n", " methods_legend=METHODS_LEGEND,\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "id": "18f79b4b", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_ts_losstest_ts_losstrain_df_losstest_df_lossforward_timebackward_timemethodseednlrydimbatch_size
0057.4523110.0-0.4644790.0434.527348428.260238FFOCP1NaN0.0018001
1050.2331870.0-0.4658430.0468.582487462.893587FFOCP2NaN0.0018001
2058.0977210.0-0.4647820.0480.707573475.793314FFOCP3NaN0.0018001
3056.5411650.0-0.4707880.0478.779373474.103904FFOCP4NaN0.0018001
4054.1267850.0-0.4636820.0482.228468477.997777FFOCP5NaN0.0018001
..........................................
6901.5966740.0-0.4417060.089.30509597.298301FFOCP5NaN0.00180016
7000.9880280.0-0.3890090.085.06364895.986092FFOCP1NaN0.00180032
7100.9821310.0-0.3886800.082.73489394.441057FFOCP2NaN0.00180032
7200.9879930.0-0.3902480.083.12476293.911058FFOCP3NaN0.00180032
7300.9742030.0-0.3872420.090.870878102.601617FFOCP5NaN0.00180032
\n", "

74 rows × 13 columns

\n", "
" ], "text/plain": [ " epoch train_ts_loss test_ts_loss train_df_loss test_df_loss \\\n", "0 0 57.452311 0.0 -0.464479 0.0 \n", "1 0 50.233187 0.0 -0.465843 0.0 \n", "2 0 58.097721 0.0 -0.464782 0.0 \n", "3 0 56.541165 0.0 -0.470788 0.0 \n", "4 0 54.126785 0.0 -0.463682 0.0 \n", ".. ... ... ... ... ... \n", "69 0 1.596674 0.0 -0.441706 0.0 \n", "70 0 0.988028 0.0 -0.389009 0.0 \n", "71 0 0.982131 0.0 -0.388680 0.0 \n", "72 0 0.987993 0.0 -0.390248 0.0 \n", "73 0 0.974203 0.0 -0.387242 0.0 \n", "\n", " forward_time backward_time method seed n lr ydim batch_size \n", "0 434.527348 428.260238 FFOCP 1 NaN 0.001 800 1 \n", "1 468.582487 462.893587 FFOCP 2 NaN 0.001 800 1 \n", "2 480.707573 475.793314 FFOCP 3 NaN 0.001 800 1 \n", "3 478.779373 474.103904 FFOCP 4 NaN 0.001 800 1 \n", "4 482.228468 477.997777 FFOCP 5 NaN 0.001 800 1 \n", ".. ... ... ... ... .. ... ... ... \n", "69 89.305095 97.298301 FFOCP 5 NaN 0.001 800 16 \n", "70 85.063648 95.986092 FFOCP 1 NaN 0.001 800 32 \n", "71 82.734893 94.441057 FFOCP 2 NaN 0.001 800 32 \n", "72 83.124762 93.911058 FFOCP 3 NaN 0.001 800 32 \n", "73 90.870878 102.601617 FFOCP 5 NaN 0.001 800 32 \n", "\n", "[74 rows x 13 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_all" ] }, { "cell_type": "code", "execution_count": 8, "id": "af45fabd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'../syn_batch_scaling_3panels.pdf'" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_all[\"method\"] = pd.Categorical(df_all[\"method\"], categories=method_order, ordered=True)\n", "\n", "plot_time_scaling_vs_batch(\n", " df_all,\n", " plot_path=ROOT,\n", " methods_order=method_order,\n", ")" ] }, { "cell_type": "code", "execution_count": 9, "id": "334a179a", "metadata": {}, "outputs": [], "source": [ "# PLOT GENERAL TASK -- SOC\n", "\n", "batch_size = 8\n", "SOC_DIR = f\"../synthetic_results_general_{batch_size}\"\n", "METHODS = [\n", " \"cvxpylayer\",\n", " \"lpgd\",\n", " \"bpqp\",\n", " \"ffocp_eq\",\n", "]\n", "METHODS_LEGEND = {\n", " \"cvxpylayer\": \"CvxpyLayer\",\n", " \"lpgd\": \"LPGD\",\n", " \"bpqp\": \"BPQP\",\n", " \"ffocp_eq\": \"FFOCP\",\n", "}\n", "\n", "METHODS_STEPS = [method+\"_steps\" for method in METHODS]\n", "\n", "method_order = [METHODS_LEGEND[m] for m in METHODS]\n", "\n", "markers = [\"o\", \"s\", \"D\", \"^\", \"v\", \"x\"]\n", "markers_dict = {method: markers[i] for i, method in enumerate(method_order)}\n", "\n", "LINEWIDTH = 1.5" ] }, { "cell_type": "code", "execution_count": 10, "id": "4570a792", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method: cvxpylayer\n", "method: lpgd\n", "method: bpqp\n", "method: ffocp_eq\n" ] } ], "source": [ "df = load_results_CP(base_dir=SOC_DIR, methods=METHODS, methods_legend=METHODS_LEGEND)\n", "df = df.rename(columns=lambda c: c.strip() if isinstance(c, str) else c)\n", "df[\"method\"] = pd.Categorical(df[\"method\"], categories=method_order, ordered=True)" ] }, { "cell_type": "code", "execution_count": 11, "id": "ddf3423e", "metadata": {}, "outputs": [], "source": [ "plot_total_time_vs_method_by_ydim(df, SOC_DIR, ('forward_time','backward_time'), tag=\"syn\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "e9a629f8", "metadata": {}, "outputs": [], "source": [ "plot_time_scaling_vs_ydim(df, plot_path=SOC_DIR, methods_order=method_order)" ] }, { "cell_type": "code", "execution_count": 13, "id": "70a1da48", "metadata": {}, "outputs": [], "source": [ "# plot all ydim\n", "# selected_methods = [\"FFOCP\", \"BPQP\"]\n", "# plot_total_time_vs_ydim_for_methods(\n", "# df,\n", "# methods_subset=selected_methods,\n", "# time_names=('forward_time', 'backward_time'),\n", "# plot_path=SOC_DIR,\n", "# plot_name_tag=\"syn_steps_solve_ffocp_bpqp\"\n", "# )" ] }, { "cell_type": "code", "execution_count": 14, "id": "2bec5350", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method: cvxpylayer\n", "method: lpgd\n", "method: bpqp\n", "method: ffocp_eq\n" ] } ], "source": [ "df = load_results_CP(base_dir=SOC_DIR, methods=METHODS_STEPS, methods_legend=METHODS_LEGEND)\n", "df = df.rename(columns=lambda c: c.strip() if isinstance(c, str) else c)\n", "df[\"method\"] = pd.Categorical(df[\"method\"], categories=method_order, ordered=True)" ] }, { "cell_type": "code", "execution_count": 15, "id": "d6d6b860", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1000, 200, 300, 400, 500, 600, 700, 800, 900])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df[\"method\"] == \"FFOCP\"].ydim.unique()" ] }, { "cell_type": "code", "execution_count": 16, "id": "759d526c", "metadata": {}, "outputs": [], "source": [ "plot_total_loss_vs_method_by_ydim(df, SOC_DIR)" ] }, { "cell_type": "code", "execution_count": 21, "id": "6b090796", "metadata": {}, "outputs": [], "source": [ "# PLOT SYNTHETIC TASK -- QP\n", "\n", "batch_size = 8\n", "QP_DIR = f\"../synthetic_results_{batch_size}\"\n", "METHODS = [\n", " \"cvxpylayer\",\n", " \"lpgd\",\n", " \"bpqp\",\n", " \"ffocp_eq\",\n", " \"dqp\",\n", " \"qpth\",\n", " \"ffoqp_eq_schur\", \n", "]\n", "METHODS_LEGEND = {\n", " \"cvxpylayer\": \"CvxpyLayer\",\n", " \"lpgd\": \"LPGD\",\n", " \"bpqp\": \"BPQP\",\n", " \"ffocp_eq\": \"FFOCP\",\n", " \"dqp\": \"dQP\",\n", " \"qpth\": \"qpth\",\n", " \"ffoqp_eq_schur\": \"FFOQP\",\n", "}\n", "\n", "METHODS_STEPS = [method+\"_steps\" for method in METHODS]\n", "\n", "method_order = [METHODS_LEGEND[m] for m in METHODS]\n", "\n", "markers = [\"o\", \"s\", \"D\", \"^\", \"v\", \"x\", \"P\", \"s\"]\n", "markers_dict = {method: markers[i] for i, method in enumerate(method_order)}\n", "\n", "LINEWIDTH = 1.5" ] }, { "cell_type": "code", "execution_count": 22, "id": "c814b993", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method: cvxpylayer\n", "method: lpgd\n", "method: bpqp\n", "method: ffocp_eq\n", "method: dqp\n", "method: qpth\n", "method: ffoqp_eq_schur\n" ] } ], "source": [ "df = load_results_QP(base_dir=QP_DIR, methods=METHODS, methods_legend=METHODS_LEGEND)\n", "df = df.rename(columns=lambda c: c.strip() if isinstance(c, str) else c)\n", "df[\"method\"] = pd.Categorical(df[\"method\"], categories=method_order, ordered=True)" ] }, { "cell_type": "code", "execution_count": 23, "id": "0a794b66", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_ts_losstest_ts_losstrain_df_losstest_df_lossforward_timebackward_timemethodseednlrydimbackwardTol
43602.0022290.0-0.4680390.099.56111435.265574FFOQP1NaN0.0011000NaN
43702.0040480.0-0.4686030.093.98984427.312217FFOQP10NaN0.0011000NaN
43801.9814460.0-0.4687940.0101.13030336.416768FFOQP2NaN0.0011000NaN
43902.0140300.0-0.4683290.0100.51945734.933484FFOQP3NaN0.0011000NaN
44001.9941760.0-0.4682580.098.74768035.228853FFOQP4NaN0.0011000NaN
..........................................
52101.9886790.0-0.4691080.080.72069429.228782FFOQP5NaN0.001900NaN
52201.9907800.0-0.4690060.078.61658420.049297FFOQP6NaN0.001900NaN
52301.9922760.0-0.4689680.089.44219622.292826FFOQP7NaN0.001900NaN
52401.9934430.0-0.4694140.0100.18193927.915672FFOQP8NaN0.001900NaN
52501.9956570.0-0.4688180.084.64561028.476709FFOQP9NaN0.001900NaN
\n", "

90 rows × 13 columns

\n", "
" ], "text/plain": [ " epoch train_ts_loss test_ts_loss train_df_loss test_df_loss \\\n", "436 0 2.002229 0.0 -0.468039 0.0 \n", "437 0 2.004048 0.0 -0.468603 0.0 \n", "438 0 1.981446 0.0 -0.468794 0.0 \n", "439 0 2.014030 0.0 -0.468329 0.0 \n", "440 0 1.994176 0.0 -0.468258 0.0 \n", ".. ... ... ... ... ... \n", "521 0 1.988679 0.0 -0.469108 0.0 \n", "522 0 1.990780 0.0 -0.469006 0.0 \n", "523 0 1.992276 0.0 -0.468968 0.0 \n", "524 0 1.993443 0.0 -0.469414 0.0 \n", "525 0 1.995657 0.0 -0.468818 0.0 \n", "\n", " forward_time backward_time method seed n lr ydim backwardTol \n", "436 99.561114 35.265574 FFOQP 1 NaN 0.001 1000 NaN \n", "437 93.989844 27.312217 FFOQP 10 NaN 0.001 1000 NaN \n", "438 101.130303 36.416768 FFOQP 2 NaN 0.001 1000 NaN \n", "439 100.519457 34.933484 FFOQP 3 NaN 0.001 1000 NaN \n", "440 98.747680 35.228853 FFOQP 4 NaN 0.001 1000 NaN \n", ".. ... ... ... ... .. ... ... ... \n", "521 80.720694 29.228782 FFOQP 5 NaN 0.001 900 NaN \n", "522 78.616584 20.049297 FFOQP 6 NaN 0.001 900 NaN \n", "523 89.442196 22.292826 FFOQP 7 NaN 0.001 900 NaN \n", "524 100.181939 27.915672 FFOQP 8 NaN 0.001 900 NaN \n", "525 84.645610 28.476709 FFOQP 9 NaN 0.001 900 NaN \n", "\n", "[90 rows x 13 columns]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df[\"method\"] == \"FFOQP\"]" ] }, { "cell_type": "code", "execution_count": 24, "id": "9a46b4f7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "filtered_method_order: ['BPQP', 'FFOCP']\n", "available method: {'FFOCP', 'BPQP'}\n", "groups: ['BPQP', 'FFOCP']\n", "methods: ['BPQP', 'FFOCP']\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'LPGD', 'FFOCP', 'FFOQP', 'BPQP', 'CvxpyLayer'}\n", "groups: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['CvxpyLayer', 'qpth', 'LPGD', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "filtered_method_order: ['qpth', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "available method: {'dQP', 'qpth', 'FFOCP', 'FFOQP', 'BPQP'}\n", "groups: ['qpth', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n", "methods: ['qpth', 'BPQP', 'dQP', 'FFOCP', 'FFOQP']\n" ] } ], "source": [ "plot_total_time_vs_method_by_ydim(df, QP_DIR, ('forward_time','backward_time'), tag=\"syn\")" ] }, { "cell_type": "code", "execution_count": 27, "id": "abc2735a", "metadata": {}, "outputs": [], "source": [ "plot_time_scaling_vs_ydim(df, plot_path=QP_DIR, methods_order=method_order)" ] }, { "cell_type": "code", "execution_count": 9, "id": "fe392971", "metadata": {}, "outputs": [], "source": [ "# plot all ydim\n", "selected_methods = [\"FFOQP\", \"BPQP\"]\n", "plot_total_time_vs_ydim_for_methods(\n", " df,\n", " methods_subset=selected_methods,\n", " time_names=('forward_time', 'backward_time'),\n", " plot_path=QP_DIR,\n", " plot_name_tag=\"syn_steps_solve_ffocp_bpqp\"\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "id": "8707e692", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "method: cvxpylayer\n", "method: lpgd\n", "method: bpqp\n", "method: ffocp_eq\n", "method: dqp\n", "method: qpth\n", "method: ffoqp_eq_schur\n" ] } ], "source": [ "df = load_results_QP(base_dir=QP_DIR, methods=METHODS_STEPS, methods_legend=METHODS_LEGEND)\n", "df = df.rename(columns=lambda c: c.strip() if isinstance(c, str) else c)\n", "df[\"method\"] = pd.Categorical(df[\"method\"], categories=method_order, ordered=True)" ] }, { "cell_type": "code", "execution_count": null, "id": "97c4aeb0", "metadata": {}, "outputs": [], "source": [ "plot_total_loss_vs_method_by_ydim(df, QP_DIR)" ] }, { "cell_type": "code", "execution_count": null, "id": "3cb8e08c", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "rl", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.14" } }, "nbformat": 4, "nbformat_minor": 5 }