{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How to Migrate minto.v0 Experiment to minto.v1\n", "\n", "This notebook is a guide to help you migrate your minto.v0 experiment to minto.v1." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import minto\n", "import numpy as np\n", "import jijmodeling as jm" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "tsp = minto.problems.tsp.QuadTSP()\n", "tsp_problem = tsp.problem()\n", "tsp_data = tsp.data(n=8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## minto.v0 experiment\n", "\n", "You can use the `v0.x.x` version of the minto in `v1.x.x` with `minto.v1`.\n", "In the following, we create a simple experiment using `minto.v0` and then migrate it to `minto.v1`." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import jijmodeling_transpiler as jmt\n", "\n", "compiled_instance = jmt.core.compile_model(tsp_problem, tsp_data)\n", "qubo_builder = jmt.core.pubo.transpile_to_pubo(compiled_instance)\n", "qubo, _ = qubo_builder.get_qubo_dict()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import minto.v0\n", "import openjij as oj\n", "\n", "sampler = oj.SASampler()\n", "sweeps_list = np.arange(100, 1000, 100)\n", "\n", "exp_v0 = minto.v0.Experiment(\"v0_exp\")\n", "for sweeps in sweeps_list:\n", " with exp_v0.run():\n", " response = sampler.sample_qubo(qubo, num_reads=10, num_sweeps=sweeps)\n", " sampleset = jmt.core.pubo.openjij_decode.decode_from_openjij(\n", " response,\n", " qubo_builder,\n", " compiled_instance\n", " )\n", " sampleset = jm.experimental.from_old_sampleset(sampleset)\n", " exp_v0.log_result(\"result\", sampleset)\n", " exp_v0.log_parameter(\"sweeps\", sweeps)\n" ] }, { "cell_type": "code", "execution_count": 5, "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", "
experiment_namerun_idsweepsresult
0v0_exp0100(Sample(run_id=\"b62a278d-91eb-4413-aa4d-1f6df4...
1v0_exp1200(Sample(run_id=\"80153cc8-a3ec-42de-9199-13f121...
2v0_exp2300(Sample(run_id=\"fa4d1964-8a02-40d8-acd4-a01eb9...
3v0_exp3400(Sample(run_id=\"cc854ff9-fb96-424c-ae5b-10ed4e...
4v0_exp4500(Sample(run_id=\"421e6577-b98f-4a21-a0a3-4ca75b...
5v0_exp5600(Sample(run_id=\"7a9526ee-46cb-4791-b994-cb376c...
6v0_exp6700(Sample(run_id=\"37557e74-9854-490d-a8c0-92062c...
7v0_exp7800(Sample(run_id=\"64a6df02-c64e-46ec-9c05-4dc2a4...
8v0_exp8900(Sample(run_id=\"ace33c00-8ac4-43b0-81b9-4a3d4a...
\n", "
" ], "text/plain": [ " experiment_name run_id sweeps \\\n", "0 v0_exp 0 100 \n", "1 v0_exp 1 200 \n", "2 v0_exp 2 300 \n", "3 v0_exp 3 400 \n", "4 v0_exp 4 500 \n", "5 v0_exp 5 600 \n", "6 v0_exp 6 700 \n", "7 v0_exp 7 800 \n", "8 v0_exp 8 900 \n", "\n", " result \n", "0 (Sample(run_id=\"b62a278d-91eb-4413-aa4d-1f6df4... \n", "1 (Sample(run_id=\"80153cc8-a3ec-42de-9199-13f121... \n", "2 (Sample(run_id=\"fa4d1964-8a02-40d8-acd4-a01eb9... \n", "3 (Sample(run_id=\"cc854ff9-fb96-424c-ae5b-10ed4e... \n", "4 (Sample(run_id=\"421e6577-b98f-4a21-a0a3-4ca75b... \n", "5 (Sample(run_id=\"7a9526ee-46cb-4791-b994-cb376c... \n", "6 (Sample(run_id=\"37557e74-9854-490d-a8c0-92062c... \n", "7 (Sample(run_id=\"64a6df02-c64e-46ec-9c05-4dc2a4... \n", "8 (Sample(run_id=\"ace33c00-8ac4-43b0-81b9-4a3d4a... " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "exp_v0.table(enable_sampleset_expansion=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Migrate from minto.v0 to minto.v1\n", "\n", "To migrate from `minto.v0` to `minto.v1`, you need to use `migrate_to_v1_from_v0` function." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from minto.migrator.v0tov1 import migrate_to_v1_from_v0\n", "\n", "exp_v1 = migrate_to_v1_from_v0(exp_v0)" ] }, { "cell_type": "code", "execution_count": 7, "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", "
sampleset_resultparametermetadata
num_samplesobj_meanobj_stdobj_minobj_maxfeasiblefeasible_unrelaxednamesweepsrun_idelapsed_time
run_id
0103.5220540.3909172.8832444.2077481010result10000.001561
1103.4217150.4956962.8696694.3808221010result20010.001403
2103.1050680.4942272.6618084.0989581010result30020.001363
3103.1986030.3549132.8319673.9252431010result40030.001273
4103.0370240.2416662.7003043.5294491010result50040.001263
5103.1533400.3504522.6618083.8697711010result60050.001405
6103.2764510.3632592.7095483.7354911010result70060.001281
7103.2239500.3886572.7003043.6656431010result80070.001315
8103.2740440.3266222.9870363.9108631010result90080.001294
\n", "
" ], "text/plain": [ " sampleset_result \\\n", " num_samples obj_mean obj_std obj_min obj_max feasible \n", "run_id \n", "0 10 3.522054 0.390917 2.883244 4.207748 10 \n", "1 10 3.421715 0.495696 2.869669 4.380822 10 \n", "2 10 3.105068 0.494227 2.661808 4.098958 10 \n", "3 10 3.198603 0.354913 2.831967 3.925243 10 \n", "4 10 3.037024 0.241666 2.700304 3.529449 10 \n", "5 10 3.153340 0.350452 2.661808 3.869771 10 \n", "6 10 3.276451 0.363259 2.709548 3.735491 10 \n", "7 10 3.223950 0.388657 2.700304 3.665643 10 \n", "8 10 3.274044 0.326622 2.987036 3.910863 10 \n", "\n", " parameter metadata \n", " feasible_unrelaxed name sweeps run_id elapsed_time \n", "run_id \n", "0 10 result 100 0 0.001561 \n", "1 10 result 200 1 0.001403 \n", "2 10 result 300 2 0.001363 \n", "3 10 result 400 3 0.001273 \n", "4 10 result 500 4 0.001263 \n", "5 10 result 600 5 0.001405 \n", "6 10 result 700 6 0.001281 \n", "7 10 result 800 7 0.001315 \n", "8 10 result 900 8 0.001294 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "exp_v1.get_run_table()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then you can save the migrated experiment using `.save()` or `.save_as_ommx_archive` function." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# exp_v1.save() # save the experiment at disk\n", "# exp_v1.save_as_ommx_archive(\"v1_exp.ommx\") # save the experiment as an ommx archive" ] } ], "metadata": { "kernelspec": { "display_name": "minto-FuAFD3Cq-py3.10", "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.13" } }, "nbformat": 4, "nbformat_minor": 2 }