You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MIPLearn/docs/benchmarks/uc.ipynb

152 lines
3.6 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "b1b21dfb",
"metadata": {},
"source": [
"# Unit Commitment\n",
"\n",
"TODO"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "5c0dec00",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m environment at `~/Packages/MIPLearn/dev/docs/benchmarks/Project.toml`\n"
]
}
],
"source": [
"using Distributed\n",
"# addprocs(17 - nprocs())\n",
"@everywhere using Pkg\n",
"@everywhere Pkg.activate(\".\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "5da58a62",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Info: Precompiling MIPLearn [2b1277c3-b477-4c49-a15e-7ba350325c68]\n",
"└ @ Base loading.jl:1317\n"
]
}
],
"source": [
"@everywhere using MIPLearn\n",
"@everywhere using MIPLearn.BB\n",
"@everywhere using UnitCommitment\n",
"@everywhere using Gurobi\n",
"@everywhere using Random\n",
"@everywhere using JuMP\n",
"@everywhere using Logging\n",
"@everywhere import UnitCommitment: XavQiuAhm2021\n",
"@everywhere Logging.disable_logging(Logging.Warn);"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "444dbbb1",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"0.0%┣ ┫ 0/45 [00:00<00:-2, -0s/it]\n",
"2.2%┣█ ┫ 1/45 [00:42<Inf:Inf, InfGs/it]\n",
"WARNING: Force throwing a SIGINT\n"
]
}
],
"source": [
"@everywhere Base.@kwdef struct UnitCommitmentData\n",
" case::String\n",
" hours::Int\n",
" seed::Int\n",
"end\n",
"\n",
"@everywhere function build_uc_model(data::UnitCommitmentData)\n",
" instance = UnitCommitment.slice(\n",
" UnitCommitment.read_benchmark(\"matpower/$(data.case)/2017-02-01\"),\n",
" 1:data.hours,\n",
" )\n",
" Random.seed!(data.seed)\n",
" UnitCommitment.randomize!(\n",
" instance,\n",
" XavQiuAhm2021.Randomization(),\n",
" )\n",
" model = UnitCommitment.build_model(\n",
" instance = instance,\n",
" variable_names = true,\n",
" )\n",
" @lazycb(\n",
" model,\n",
" UnitCommitment.find_lazy,\n",
" UnitCommitment.enforce_lazy,\n",
" )\n",
" return model\n",
"end\n",
"\n",
"instances = MIPLearn.save(\n",
" [\n",
" UnitCommitmentData(\n",
" case = \"case1888rte\",\n",
" hours = 4,\n",
" seed = i,\n",
" )\n",
" for i in 1:50\n",
" ],\n",
" \"uc\",\n",
")\n",
"\n",
"MIPLearn.run_benchmarks(\n",
" optimizer = Gurobi.Optimizer,\n",
" train_instances = instances[1:45],\n",
" test_instances = instances[46:50],\n",
" build_model = build_uc_model,\n",
" progress = true,\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2caac26f",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.6.0",
"language": "julia",
"name": "julia-1.6"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}