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.
152 lines
3.6 KiB
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
|
|
}
|