Skip to content

Instantly share code, notes, and snippets.

@ojdo
Created January 5, 2016 17:02
Show Gist options
  • Save ojdo/09eeceabe06f0007c4f8 to your computer and use it in GitHub Desktop.
Save ojdo/09eeceabe06f0007c4f8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "using DataFrames\nusing JuMP",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "const c = 3\nconst r = 0.5\nconst s = [0 0 0 0 0 0 1 3 6 5 8 9 9 6 8 7 6 3 2 1 0 0 0 0]\nconst d = [0 1 1 1 1 1 2 5 2 1 1 5 0 0 0 0 6 9 6 3 4 4 1 0]\nconst p = [0 2 2 2 2 2 1 2 2 1 1 2 1 1 1 1 5 5 5 1 1 1 1 1]\n\nT = 1:length(p);",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "m = Model();",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@defVar(m, β[T])\n@defVar(m, κ >= 0)\n@defVar(m, ł[T] >= 0)\n@defVar(m, ρ[T] >= 0)\n@defVar(m, σ[T] >= 0)\n@defVar(m, ζ);",
"execution_count": 4,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@setObjective(m, Min, ζ);",
"execution_count": 5,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@addConstraint(m, \n ζ == c * κ + \n sum{\n p[t] * ρ[t] - \n p[t] * σ[t] * r, \n t=T})",
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/latex": "$$ ζ - 3 κ - 2 ρ_{2} + σ_{2} - 2 ρ_{3} + σ_{3} - 2 ρ_{4} + σ_{4} - 2 ρ_{5} + σ_{5} - 2 ρ_{6} + σ_{6} - ρ_{7} + 0.5 σ_{7} - 2 ρ_{8} + σ_{8} - 2 ρ_{9} + σ_{9} - ρ_{10} + 0.5 σ_{10} - ρ_{11} + 0.5 σ_{11} - 2 ρ_{12} + σ_{12} - ρ_{13} + 0.5 σ_{13} - ρ_{14} + 0.5 σ_{14} - ρ_{15} + 0.5 σ_{15} - ρ_{16} + 0.5 σ_{16} - 5 ρ_{17} + 2.5 σ_{17} - 5 ρ_{18} + 2.5 σ_{18} - 5 ρ_{19} + 2.5 σ_{19} - ρ_{20} + 0.5 σ_{20} - ρ_{21} + 0.5 σ_{21} - ρ_{22} + 0.5 σ_{22} - ρ_{23} + 0.5 σ_{23} - ρ_{24} + 0.5 σ_{24} = 0 $$",
"text/plain": "ζ - 3 κ - 2 ρ[2] + σ[2] - 2 ρ[3] + σ[3] - 2 ρ[4] + σ[4] - 2 ρ[5] + σ[5] - 2 ρ[6] + σ[6] - ρ[7] + 0.5 σ[7] - 2 ρ[8] + σ[8] - 2 ρ[9] + σ[9] - ρ[10] + 0.5 σ[10] - ρ[11] + 0.5 σ[11] - 2 ρ[12] + σ[12] - ρ[13] + 0.5 σ[13] - ρ[14] + 0.5 σ[14] - ρ[15] + 0.5 σ[15] - ρ[16] + 0.5 σ[16] - 5 ρ[17] + 2.5 σ[17] - 5 ρ[18] + 2.5 σ[18] - 5 ρ[19] + 2.5 σ[19] - ρ[20] + 0.5 σ[20] - ρ[21] + 0.5 σ[21] - ρ[22] + 0.5 σ[22] - ρ[23] + 0.5 σ[23] - ρ[24] + 0.5 σ[24] == 0"
},
"metadata": {},
"execution_count": 6
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@addConstraint(m, def_balance[t=T], \n β[t] == s[t] - d[t] + ρ[t] - σ[t])",
"execution_count": 7,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@addConstraint(m, def_storage_state[t=T[2:end]],\n ł[t] == ł[t-1] + β[t])",
"execution_count": 8,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@addConstraint(m, ł[T[1]] == 0.5 * κ)",
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/latex": "$$ ł_{1} - 0.5 κ = 0 $$",
"text/plain": "ł[1] - 0.5 κ == 0"
},
"metadata": {},
"execution_count": 9
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "@addConstraint(m, ł[T[end]] >= 0.5 * κ)",
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/latex": "$$ ł_{24} - 0.5 κ \\geq 0 $$",
"text/plain": "ł[24] - 0.5 κ >= 0"
},
"metadata": {},
"execution_count": 10
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "@addConstraint(m, res_storage_capacity[t=T],\n ł[t] <= κ)",
"execution_count": 11,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "@addConstraint(m, res_energy_sold[t=T],\n σ[t] <= 999)",
"execution_count": 12,
"outputs": []
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "m",
"execution_count": 17,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/latex": "$$ \\begin{alignat*}{1}\\min\\quad & ζ\\\\\n\\text{Subject to} \\quad & ζ - 3 κ - 2 ρ_{2} + σ_{2} - 2 ρ_{3} + σ_{3} - 2 ρ_{4} + σ_{4} - 2 ρ_{5} + σ_{5} - 2 ρ_{6} + σ_{6} - ρ_{7} + 0.5 σ_{7} - 2 ρ_{8} + σ_{8} - 2 ρ_{9} + σ_{9} - ρ_{10} + 0.5 σ_{10} - ρ_{11} + 0.5 σ_{11} - 2 ρ_{12} + σ_{12} - ρ_{13} + 0.5 σ_{13} - ρ_{14} + 0.5 σ_{14} - ρ_{15} + 0.5 σ_{15} - ρ_{16} + 0.5 σ_{16} - 5 ρ_{17} + 2.5 σ_{17} - 5 ρ_{18} + 2.5 σ_{18} - 5 ρ_{19} + 2.5 σ_{19} - ρ_{20} + 0.5 σ_{20} - ρ_{21} + 0.5 σ_{21} - ρ_{22} + 0.5 σ_{22} - ρ_{23} + 0.5 σ_{23} - ρ_{24} + 0.5 σ_{24} = 0\\\\\n & β_{1} - ρ_{1} + σ_{1} = 0\\\\\n & β_{2} - ρ_{2} + σ_{2} = -1\\\\\n & β_{3} - ρ_{3} + σ_{3} = -1\\\\\n & β_{4} - ρ_{4} + σ_{4} = -1\\\\\n & β_{5} - ρ_{5} + σ_{5} = -1\\\\\n & β_{6} - ρ_{6} + σ_{6} = -1\\\\\n & β_{7} - ρ_{7} + σ_{7} = -1\\\\\n & β_{8} - ρ_{8} + σ_{8} = -2\\\\\n & β_{9} - ρ_{9} + σ_{9} = 4\\\\\n & β_{10} - ρ_{10} + σ_{10} = 4\\\\\n & β_{11} - ρ_{11} + σ_{11} = 7\\\\\n & β_{12} - ρ_{12} + σ_{12} = 4\\\\\n & β_{13} - ρ_{13} + σ_{13} = 9\\\\\n & β_{14} - ρ_{14} + σ_{14} = 6\\\\\n & β_{15} - ρ_{15} + σ_{15} = 8\\\\\n & β_{16} - ρ_{16} + σ_{16} = 7\\\\\n & β_{17} - ρ_{17} + σ_{17} = 0\\\\\n & β_{18} - ρ_{18} + σ_{18} = -6\\\\\n & β_{19} - ρ_{19} + σ_{19} = -4\\\\\n & β_{20} - ρ_{20} + σ_{20} = -2\\\\\n & β_{21} - ρ_{21} + σ_{21} = -4\\\\\n & β_{22} - ρ_{22} + σ_{22} = -4\\\\\n & β_{23} - ρ_{23} + σ_{23} = -1\\\\\n & β_{24} - ρ_{24} + σ_{24} = 0\\\\\n & ł_{2} - ł_{1} - β_{2} = 0\\\\\n & ł_{3} - ł_{2} - β_{3} = 0\\\\\n & ł_{4} - ł_{3} - β_{4} = 0\\\\\n & ł_{5} - ł_{4} - β_{5} = 0\\\\\n & ł_{6} - ł_{5} - β_{6} = 0\\\\\n & ł_{7} - ł_{6} - β_{7} = 0\\\\\n & ł_{8} - ł_{7} - β_{8} = 0\\\\\n & ł_{9} - ł_{8} - β_{9} = 0\\\\\n & ł_{10} - ł_{9} - β_{10} = 0\\\\\n & ł_{11} - ł_{10} - β_{11} = 0\\\\\n & ł_{12} - ł_{11} - β_{12} = 0\\\\\n & ł_{13} - ł_{12} - β_{13} = 0\\\\\n & ł_{14} - ł_{13} - β_{14} = 0\\\\\n & ł_{15} - ł_{14} - β_{15} = 0\\\\\n & ł_{16} - ł_{15} - β_{16} = 0\\\\\n & ł_{17} - ł_{16} - β_{17} = 0\\\\\n & ł_{18} - ł_{17} - β_{18} = 0\\\\\n & ł_{19} - ł_{18} - β_{19} = 0\\\\\n & ł_{20} - ł_{19} - β_{20} = 0\\\\\n & ł_{21} - ł_{20} - β_{21} = 0\\\\\n & ł_{22} - ł_{21} - β_{22} = 0\\\\\n & ł_{23} - ł_{22} - β_{23} = 0\\\\\n & ł_{24} - ł_{23} - β_{24} = 0\\\\\n & ł_{1} - 0.5 κ = 0\\\\\n & ł_{24} - 0.5 κ \\geq 0\\\\\n & ł_{1} - κ \\leq 0\\\\\n & ł_{2} - κ \\leq 0\\\\\n & ł_{3} - κ \\leq 0\\\\\n & ł_{4} - κ \\leq 0\\\\\n & ł_{5} - κ \\leq 0\\\\\n & ł_{6} - κ \\leq 0\\\\\n & ł_{7} - κ \\leq 0\\\\\n & ł_{8} - κ \\leq 0\\\\\n & ł_{9} - κ \\leq 0\\\\\n & ł_{10} - κ \\leq 0\\\\\n & ł_{11} - κ \\leq 0\\\\\n & ł_{12} - κ \\leq 0\\\\\n & ł_{13} - κ \\leq 0\\\\\n & ł_{14} - κ \\leq 0\\\\\n & ł_{15} - κ \\leq 0\\\\\n & ł_{16} - κ \\leq 0\\\\\n & ł_{17} - κ \\leq 0\\\\\n & ł_{18} - κ \\leq 0\\\\\n & ł_{19} - κ \\leq 0\\\\\n & ł_{20} - κ \\leq 0\\\\\n & ł_{21} - κ \\leq 0\\\\\n & ł_{22} - κ \\leq 0\\\\\n & ł_{23} - κ \\leq 0\\\\\n & ł_{24} - κ \\leq 0\\\\\n & σ_{1} \\leq 999\\\\\n & σ_{2} \\leq 999\\\\\n & σ_{3} \\leq 999\\\\\n & σ_{4} \\leq 999\\\\\n & σ_{5} \\leq 999\\\\\n & σ_{6} \\leq 999\\\\\n & σ_{7} \\leq 999\\\\\n & σ_{8} \\leq 999\\\\\n & σ_{9} \\leq 999\\\\\n & σ_{10} \\leq 999\\\\\n & σ_{11} \\leq 999\\\\\n & σ_{12} \\leq 999\\\\\n & σ_{13} \\leq 999\\\\\n & σ_{14} \\leq 999\\\\\n & σ_{15} \\leq 999\\\\\n & σ_{16} \\leq 999\\\\\n & σ_{17} \\leq 999\\\\\n & σ_{18} \\leq 999\\\\\n & σ_{19} \\leq 999\\\\\n & σ_{20} \\leq 999\\\\\n & σ_{21} \\leq 999\\\\\n & σ_{22} \\leq 999\\\\\n & σ_{23} \\leq 999\\\\\n & σ_{24} \\leq 999\\\\\n & β_{i} free \\quad\\forall i \\in \\{1,2,\\dots,23,24\\}\\\\\n & ł_{i} \\geq 0 \\quad\\forall i \\in \\{1,2,\\dots,23,24\\}\\\\\n & ρ_{i} \\geq 0 \\quad\\forall i \\in \\{1,2,\\dots,23,24\\}\\\\\n & σ_{i} \\geq 0 \\quad\\forall i \\in \\{1,2,\\dots,23,24\\}\\\\\n & κ \\geq 0\\\\\n & ζ free\\\\\n\\end{alignat*}\n $$",
"text/plain": "Minimization problem with:\n * 98 linear constraints\n * 98 variables\nSolver set to Default"
},
"metadata": {},
"execution_count": 17
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "solve(m)",
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": ":Optimal"
},
"metadata": {},
"execution_count": 13
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "getObjectiveValue(m)",
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "20.5"
},
"metadata": {},
"execution_count": 14
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "getValue(κ)",
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "10.0"
},
"metadata": {},
"execution_count": 15
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": false
},
"cell_type": "code",
"source": "getValue(ł)",
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": "ł: 1 dimensions, 24 entries:\n [ 1] = 5.0\n [ 2] = 4.0\n [ 3] = 3.0\n [ 4] = 2.0\n [ 5] = 1.0\n [ 6] = 0.0\n [ 7] = 2.0\n [ 8] = 0.0\n [ 9] = 0.0\n [10] = 4.0\n [11] = 10.0\n [12] = 0.0\n [13] = 9.0\n [14] = 10.0\n [15] = 3.0\n [16] = 10.0\n [17] = 10.0\n [18] = 4.0\n [19] = 0.0\n [20] = 0.0\n [21] = 10.0\n [22] = 6.0\n [23] = 5.0\n [24] = 5.0"
},
"metadata": {},
"execution_count": 16
}
]
}
],
"metadata": {
"language_info": {
"version": "0.4.2",
"mimetype": "application/julia",
"name": "julia",
"file_extension": ".jl"
},
"kernelspec": {
"name": "julia-0.4",
"display_name": "Julia 0.4.2",
"language": "julia"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment