├── .gitattributes
├── .idea
├── .gitignore
├── .name
├── MicrogridOptimization.iml
├── inspectionProfiles
│ └── profiles_settings.xml
├── misc.xml
├── modules.xml
└── vcs.xml
├── MultiMG
├── 0mg.png
├── 1mg.png
├── 2mg.png
├── Centralized
│ ├── 0_output.csv
│ ├── 1_output.csv
│ ├── 2_output.csv
│ ├── All_output.csv
│ ├── EMS.cpp
│ ├── EMS.h
│ ├── ModelLP.lp
│ ├── Source.cpp
│ ├── centralized.sln
│ ├── centralized.vcxproj
│ ├── centralized.vcxproj.filters
│ ├── centralized.vcxproj.user
│ └── x64
│ │ └── Debug
│ │ ├── Centralzied.exe
│ │ ├── Centralzied.exe.recipe
│ │ ├── Centralzied.ilk
│ │ ├── Centralzied.pdb
│ │ ├── Centralzied.tlog
│ │ ├── CL.command.1.tlog
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── Centralzied.lastbuildstate
│ │ ├── Cl.items.tlog
│ │ ├── link.command.1.tlog
│ │ ├── link.read.1.tlog
│ │ └── link.write.1.tlog
│ │ ├── EMS.obj
│ │ ├── Source.obj
│ │ ├── centralized.log
│ │ ├── centralized.vcxproj.FileListAbsolute.txt
│ │ ├── vc143.idb
│ │ └── vc143.pdb
├── Decentralized
│ ├── EMS.cpp
│ ├── EMS.h
│ ├── ModelLP.lp
│ ├── Source.cpp
│ ├── decentralizedMG.sln
│ ├── decentralizedMG.vcxproj
│ ├── decentralizedMG.vcxproj.filters
│ ├── decentralizedMG.vcxproj.user
│ ├── global_output.csv
│ ├── mg1_output.csv
│ ├── mg2_output.csv
│ ├── mg3_output.csv
│ └── x64
│ │ └── Debug
│ │ ├── Decentralized.Build.CppClean.log
│ │ ├── Decentralized.exe
│ │ ├── Decentralized.exe.recipe
│ │ ├── Decentralized.ilk
│ │ ├── Decentralized.pdb
│ │ ├── Decentralized.tlog
│ │ ├── CL.command.1.tlog
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── Cl.items.tlog
│ │ ├── Decentralized.lastbuildstate
│ │ ├── link.command.1.tlog
│ │ ├── link.read.1.tlog
│ │ └── link.write.1.tlog
│ │ ├── EMS.obj
│ │ ├── Source.obj
│ │ ├── decentralizedMG.log
│ │ ├── decentralizedMG.vcxproj.FileListAbsolute.txt
│ │ ├── vc143.idb
│ │ └── vc143.pdb
└── a.png
├── Plotting.ipynb
├── SingleMG
├── README.md
├── SingleMG_ElecHeatCoolNetAndEV
│ ├── ModelLP.lp
│ ├── SingleMG_ElecHeatCoolNetAndEV.sln
│ ├── SingleMG_ElecHeatCoolNetAndEV.vcxproj
│ ├── SingleMG_ElecHeatCoolNetAndEV.vcxproj.filters
│ ├── SingleMG_ElecHeatCoolNetAndEV.vcxproj.user
│ ├── Source.cpp
│ ├── output.csv
│ └── x64
│ │ └── Debug
│ │ ├── SingleMG.92fc16a1.tlog
│ │ ├── CL.command.1.tlog
│ │ ├── CL.read.1.tlog
│ │ ├── CL.write.1.tlog
│ │ ├── Cl.items.tlog
│ │ ├── SingleMG_ElectHeatCoolNetAndEv.lastbuildstate
│ │ ├── link.command.1.tlog
│ │ ├── link.read.1.tlog
│ │ └── link.write.1.tlog
│ │ ├── SingleMG_ElecHeatCoolNetAndEV.log
│ │ ├── SingleMG_ElecHeatCoolNetAndEV.vcxproj.FileListAbsolute.txt
│ │ ├── SingleMG_ElectHeatCoolNetAndEv.exe
│ │ ├── SingleMG_ElectHeatCoolNetAndEv.exe.recipe
│ │ ├── SingleMG_ElectHeatCoolNetAndEv.ilk
│ │ ├── SingleMG_ElectHeatCoolNetAndEv.pdb
│ │ ├── Source.obj
│ │ ├── vc143.idb
│ │ └── vc143.pdb
├── SingleMG_ElecHeatNetAndEV
│ ├── ModelLP.lp
│ ├── SingleMG_ElecHeatNetAndEV.sln
│ ├── SingleMG_ElecHeatNetAndEV.vcxproj
│ ├── SingleMG_ElecHeatNetAndEV.vcxproj.filters
│ ├── SingleMG_ElecHeatNetAndEV.vcxproj.user
│ ├── Source.cpp
│ └── output.csv
├── SingleMG_ElectAndHeatNet
│ ├── ModelLP.lp
│ ├── SingleMG_ElectAndHeatNet.sln
│ ├── SingleMG_ElectAndHeatNet.vcxproj
│ ├── SingleMG_ElectAndHeatNet.vcxproj.filters
│ ├── SingleMG_ElectAndHeatNet.vcxproj.user
│ ├── Source.cpp
│ └── output.csv
└── SingleMG_ElectNet
│ ├── ModelLP.lp
│ ├── SingleMG_ElectNet.sln
│ ├── SingleMG_ElectNet.vcxproj
│ ├── SingleMG_ElectNet.vcxproj.filters
│ ├── SingleMG_ElectNet.vcxproj.user
│ ├── Source.cpp
│ └── output.csv
└── graphics
└── SingleMG.PNG
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | Source.cpp
--------------------------------------------------------------------------------
/.idea/MicrogridOptimization.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/MultiMG/0mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TalhaRehmanMTRKT/MicrogridOptimization/ac29e9c4d64adba024e78a7aa74347072e3b878f/MultiMG/0mg.png
--------------------------------------------------------------------------------
/MultiMG/1mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TalhaRehmanMTRKT/MicrogridOptimization/ac29e9c4d64adba024e78a7aa74347072e3b878f/MultiMG/1mg.png
--------------------------------------------------------------------------------
/MultiMG/2mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TalhaRehmanMTRKT/MicrogridOptimization/ac29e9c4d64adba024e78a7aa74347072e3b878f/MultiMG/2mg.png
--------------------------------------------------------------------------------
/MultiMG/Centralized/0_output.csv:
--------------------------------------------------------------------------------
1 | Time,Pload+Pec,Hload+Hac,Cload,CGbuy,CGsell,CHsell,CHbuy,Rdg,PGshort/sur,statoc,Bchg/dischg,Pdg,Pchp,Hhob,Hchp,HGshort/sur,Hchg/dischg,MgSend/rec,Pevchg/dischg1,Pevchg/dischg2,Pevchg/dischg3,Pevchg/dischg4,Pevchg/dischg5
2 | 1,274.263,130,100,138,128,135,138,0,0,1,-126.316,100,140,80,136,0,0,160.579,0,0,0,0,0
3 | 2,280.263,125,100,139,129,135,138,0,0,1,-2.31913e-06,100,140,80,136,0,0,40.2632,0,0,0,0,0
4 | 3,263.211,120,80,143,133,135,138,0,0,1,0,180,140,80,136,0,0,-48.2784,-8.51111,0,0,0,0
5 | 4,276.263,120,100,149,139,135,138,0,0,1,0,133.789,140,80,136,-228,0,2.47368,0,0,0,0,0
6 | 5,307.316,125,120,150,140,135,138,0,99.4474,1,0,180,140,80,136,0,0,-96.2982,0,-15.8333,0,0,0
7 | 6,332.105,135,135,152,142,135,138,0,0,1,0,180,140,80,136,0,0,12.1053,0,0,0,0,0
8 | 7,270,326.471,150,155,145,135,138,0,0,1,0,180,140,80,136,389.647,0,-50,0,0,0,0,0
9 | 8,264,318.824,135,158,148,135,138,10,0,1,0,180,140,80,136,0,0,-66,0,0,0,0,0
10 | 9,404.579,175,125,160,150,144,149,15,7.66268,0.140351,122.5,180,140,80,136,0,0,-60.5837,0,0,0,0,0
11 | 10,417.842,190,130,154,144,144,149,20,0,0.140351,0,180,140,80,136,17,0,80.6066,0,0,-12.8444,10.08,0
12 | 11,447.368,195,140,153,143,144,149,23,0,0.140351,0,180,140,80,136,27.25,0,104.368,0,0,0,0,0
13 | 12,477.895,200,150,153,143,144,149,28,549.684,0.140351,0,180,140,80,136,4.49999,23.75,-419.789,0,0,0,0,0
14 | 13,437.895,195,150,152,142,144,149,33,394.684,0.140351,0,180,140,80,136,0,0,-309.789,0,0,0,0,0
15 | 14,396.842,195,130,150,140,144,149,35,0,0.140351,0,180,140,80,136,0,0,41.8421,0,0,0,0,0
16 | 15,376.316,180,120,149,139,144,149,34,0,0.140351,0,180,140,80,136,0,0,22.3158,0,0,0,0,0
17 | 16,315.789,170,110,149,139,144,149,31,0,0.140351,0,180,140,80,136,-53,0,-35.2105,0,0,0,0,0
18 | 17,274.737,185,90,154,144,144,149,28,0,0.140351,0,180,140,80,136,0,0,-67.4854,0,0,0,0,-5.77778
19 | 18,274.211,190,80,156,146,144,149,10,0,0.140351,0,180,140,80,136,0,0,-55.7895,0,0,0,0,0
20 | 19,240,353.824,135,163,153,140,140,0,0,0.140351,0,180,140,80,136,137.824,0,-80,0,0,0,0,0
21 | 20,280,376.471,150,164,154,140,140,0,0,0,20,180,140,80,136,160.471,0,-60,0,0,0,0,0
22 | 21,325,353.824,135,164,154,140,140,0,0,0,0,180,140,80,136,137.824,0,5,0,0,0,0,0
23 | 22,350,354.706,140,160,150,140,140,0,0,0,0,180,140,80,136,138.706,0,30,0,0,0,0,0
24 | 23,415.789,180,110,150,140,140,140,0,0,0,0,180,140,80,136,-36,0,95.7895,0,0,0,0,0
25 | 24,381.579,175,125,148,138,140,140,0,0,0,0,180,140,80,136,-41,0,61.5789,0,0,0,0,0
26 |
--------------------------------------------------------------------------------
/MultiMG/Centralized/1_output.csv:
--------------------------------------------------------------------------------
1 | Time,Pload+Pec,Hload+Hac,Cload,CGbuy,CGsell,CHsell,CHbuy,Rdg,PGshort/sur,statoc,Bchg/dischg,Pdg,Pchp,Hhob,Hchp,HGshort/sur,Hchg/dischg,MgSend/rec,Pevchg/dischg1,Pevchg/dischg2,Pevchg/dischg3,Pevchg/dischg4,Pevchg/dischg5
2 | 1,189.263,65,100,138,128,135,138,0,565.737,1,-126.316,100,140,80,136,0,0,-490.158,0,0,0,0,0
3 | 2,192.263,62,100,139,129,135,138,0,0,1,-2.31913e-06,100,140,80,136,-211,0,-47.7368,0,0,0,0,0
4 | 3,173.211,60,80,143,133,135,138,0,0,1,0,124.165,140,80,136,-228,0,-82.4433,-8.51111,0,0,0,0
5 | 4,190.263,60,100,149,139,135,138,0,0,1,0,180,140,80,136,0,0,-129.737,0,0,0,0,0
6 | 5,216.316,62,120,150,140,135,138,0,0,1,0,180,140,80,136,0,0,-87.8509,0,-15.8333,0,0,0
7 | 6,237.105,67,135,152,142,135,138,0,0,1,0,180,140,80,136,0,0,-82.8947,0,0,0,0,0
8 | 7,150,234.706,150,155,145,135,138,0,0,1,0,180,140,80,136,0,0,-170,0,0,0,0,0
9 | 8,132,238.824,135,158,148,135,138,10,0,1,0,180,140,80,136,314.706,0,-198,0,0,0,0,0
10 | 9,267.579,87,125,160,150,144,149,15,0,0.252111,106.574,180,140,80,136,0,0,-173.995,0,0,0,0,0
11 | 10,276.842,95,130,154,144,144,149,20,381.82,0.252111,0,180,140,80,136,0,0,-442.213,0,0,-12.8444,10.08,0
12 | 11,297.368,97,140,153,143,144,149,23,463.105,0.252111,0,180,140,80,136,0,6.75001,-508.737,0,0,0,0,0
13 | 12,317.895,100,150,153,143,144,149,28,0,0.252111,0,180,140,80,136,0,0,-30.1053,0,0,0,0,0
14 | 13,297.895,97,150,152,142,144,149,33,0,0.252111,0,180,140,80,136,0,0,-55.1053,0,0,0,0,0
15 | 14,266.842,97,130,150,140,144,149,35,0,0.252111,0,180,140,80,136,0,0,-88.1579,0,0,0,0,0
16 | 15,251.316,90,120,149,139,144,149,34,191.947,0.252111,0,180,140,80,136,-18,0,-294.632,0,0,0,0,0
17 | 16,215.789,85,110,149,139,144,149,31,0,0.252111,0,180,140,80,136,0,0,-129.579,0,0,0,0,-5.63158
18 | 17,184.737,92,90,154,144,144,149,28,0,1,-118.088,180,140,80,136,0,0,-45.0292,0,0,0,0,-0.146199
19 | 18,179.211,95,80,156,146,144,149,10,-72.3684,1,0,180,140,80,136,0,17,-78.4211,0,0,0,0,0
20 | 19,240,121.706,135,163,153,140,140,0,0,1,0,180,140,80,136,-94.2941,0,-80,0,0,0,0,0
21 | 20,140,276.471,150,164,154,140,140,0,0,1,0,180,140,80,136,60.4706,0,-180,0,0,0,0,0
22 | 21,162,255.824,135,164,154,140,140,0,0,0,142.5,180,140,80,136,39.8235,0,-300.5,0,0,0,0,0
23 | 22,175,259.706,140,160,150,140,140,0,0,0,0,180,140,80,136,43.7059,0,-145,0,0,0,0,0
24 | 23,265.789,90,110,150,140,140,140,0,437.368,0,0,180,140,80,136,-126,0,-491.579,0,0,0,0,0
25 | 24,256.579,87,125,148,138,140,140,0,0,0,0,180,140,80,136,-129,0,-63.4211,0,0,0,0,0
26 |
--------------------------------------------------------------------------------
/MultiMG/Centralized/2_output.csv:
--------------------------------------------------------------------------------
1 | Time,Pload+Pec,Hload+Hac,Cload,CGbuy,CGsell,CHsell,CHbuy,Rdg,PGshort/sur,statoc,Bchg/dischg,Pdg,Pchp,Hhob,Hchp,HGshort/sur,Hchg/dischg,MgSend/rec,Pevchg/dischg1,Pevchg/dischg2,Pevchg/dischg3,Pevchg/dischg4,Pevchg/dischg5
2 | 1,443.263,260,100,138,128,135,138,0,0,1,-126.316,100,140,80,136,-193,0,329.579,0,0,0,0,0
3 | 2,455.263,250,100,139,129,135,138,0,207.789,1,-2.31913e-06,100,140,80,136,0,0,7.47368,0,0,0,0,0
4 | 3,442.211,240,80,143,133,135,138,0,0,1,0,180,140,80,136,0,0,130.722,-8.51111,0,0,0,0
5 | 4,447.263,240,100,149,139,135,138,0,0,1,0,180,140,80,136,0,0,127.263,0,0,0,0,0
6 | 5,488.316,250,120,150,140,135,138,0,0,1,0,180,140,80,136,-211,0,184.149,0,-15.8333,0,0,0
7 | 6,390.789,416.765,135,152,142,135,138,0,0,1,0,180,140,80,136,-29.2353,0,70.7895,0,0,0,0,0
8 | 7,540,476.471,150,155,145,135,138,0,0,1,0,180,140,80,136,0,0,220,0,0,0,0,0
9 | 8,594,405.059,135,158,148,135,138,10,0,1,0,180,140,80,136,0,0,264,0,0,0,0,0
10 | 9,677.579,350,125,160,150,144,149,15,0,0.242105,108,180,140,80,136,-36,0,234.579,0,0,0,0,0
11 | 10,698.842,380,130,154,144,144,149,20,0,0.242105,0,180,140,80,136,0,0,361.607,0,0,-12.8444,10.08,0
12 | 11,747.368,390,140,153,143,144,149,23,0,0.242105,0,180,140,80,136,0,0,404.368,0,0,0,0,0
13 | 12,797.895,400,150,153,143,144,149,28,0,0.242105,0,180,140,80,136,0,23.75,449.895,0,0,0,0,0
14 | 13,717.895,390,150,152,142,144,149,33,0,0.242105,0,180,140,80,136,34,0,364.895,0,0,0,0,0
15 | 14,656.842,390,130,150,140,144,149,35,255.526,0.242105,0,180,140,80,136,34,0,46.3158,0,0,0,0,0
16 | 15,626.316,360,120,149,139,144,149,34,0,0.242105,0,180,140,80,136,0,0,272.316,0,0,0,0,0
17 | 16,515.789,340,110,149,139,144,149,31,0,0.242105,0,180,140,80,136,0,0,164.789,0,0,0,0,0
18 | 17,454.737,370,90,154,144,144,149,28,0,0.242105,0,180,140,80,136,-1.00001,0,112.515,0,0,0,0,-5.77778
19 | 18,464.211,380,80,156,146,144,149,10,0,0.242105,0,180,140,80,136,0,0,134.211,0,0,0,0,0
20 | 19,480,548.824,135,163,153,140,140,0,0,0.242105,0,180,140,80,136,332.824,0,160,0,0,0,0,0
21 | 20,560,576.471,150,164,154,140,140,0,0,0.242105,0,180,140,80,136,360.471,0,240,0,0,0,0,0
22 | 21,650,548.824,135,164,154,140,140,0,0,0,34.5,180,140,80,136,332.824,0,295.5,0,0,0,0,0
23 | 22,700,544.706,140,160,150,140,140,0,265,0,0,180,140,80,136,328.706,0,115,0,0,0,0,0
24 | 23,715.789,360,110,150,140,140,140,0,0,0,0,180,140,80,136,144,0,395.789,0,0,0,0,0
25 | 24,631.579,350,125,148,138,140,140,0,309.737,0,0,180,140,80,136,134,0,1.84211,0,0,0,0,0
26 |
--------------------------------------------------------------------------------
/MultiMG/Centralized/All_output.csv:
--------------------------------------------------------------------------------
1 | Mg1Send/rec,mg1buy_sell,Mg2Send/rec,mg2buy_sell,Mg3Send/rec,mg3buy_sell
2 | 160.579,0,-490.158,565.737,329.579,0,
3 | 40.2632,0,-47.7368,0,7.47368,207.789,
4 | -48.2784,0,-82.4433,0,130.722,0,
5 | 2.47368,0,-129.737,0,127.263,0,
6 | -96.2982,99.4474,-87.8509,0,184.149,0,
7 | 12.1053,0,-82.8947,0,70.7895,0,
8 | -50,0,-170,0,220,0,
9 | -66,0,-198,0,264,0,
10 | -60.5837,7.66268,-173.995,0,234.579,0,
11 | 80.6066,0,-442.213,381.82,361.607,0,
12 | 104.368,0,-508.737,463.105,404.368,0,
13 | -419.789,549.684,-30.1053,0,449.895,0,
14 | -309.789,394.684,-55.1053,0,364.895,0,
15 | 41.8421,0,-88.1579,0,46.3158,255.526,
16 | 22.3158,0,-294.632,191.947,272.316,0,
17 | -35.2105,0,-129.579,0,164.789,0,
18 | -67.4854,0,-45.0292,0,112.515,0,
19 | -55.7895,0,-78.4211,-72.3684,134.211,0,
20 | -80,0,-80,0,160,0,
21 | -60,0,-180,0,240,0,
22 | 5,0,-300.5,0,295.5,0,
23 | 30,0,-145,0,115,265,
24 | 95.7895,0,-491.579,437.368,395.789,0,
25 | 61.5789,0,-63.4211,0,1.84211,309.737,
26 |
--------------------------------------------------------------------------------
/MultiMG/Centralized/EMS.cpp:
--------------------------------------------------------------------------------
1 | #include"EMS.h"
2 |
3 |
4 |
5 |
6 |
7 | void EMS::MgOptimizationModel() {
8 |
9 | #pragma region Objective Function
10 | IloExpr objective(env_);
11 |
12 |
13 | for (int t = 0; t < T_; t++)
14 | {
15 | objective += intConstants_["Cdg1"] * Pdg1[t] + intConstants_["Cdg2"] * Pdg2[t] + CGbuy_[t] * PGbuy[t] - CGsell_[t] * PGsell[t] + CHbuy_[t] * HGbuy[t] - CHsell_[t] * HGsell[t] + intConstants_["Chob"] * Hhob[t] + intConstants_["Cchp1"] * Pchp1[t] + intConstants_["Cchp2"] * Pchp2[t];
16 | }
17 |
18 |
19 | // Objective: minimize cost
20 | model_.add(IloMinimize(env_, objective));
21 |
22 | #pragma endregion
23 |
24 |
25 |
26 | #pragma region Constraints
27 |
28 |
29 | // Constraint: meet demand
30 |
31 | for (int t = 0; t < T_; t++)
32 | {
33 |
34 | model_.add(0 <= Pdg1[t]);
35 | model_.add(Pdg1[t] <= 100);
36 |
37 | model_.add(0 <= Pdg2[t]);
38 | model_.add(Pdg2[t] <= 80);
39 |
40 | model_.add(0 <= Hhob[t]);
41 | model_.add(Hhob[t] <= 80);
42 |
43 | model_.add(30 <= Pchp1[t]);
44 | model_.add(Pchp1[t] <= 60);
45 |
46 | model_.add(50 <= Pchp2[t]);
47 | model_.add(Pchp2[t] <= 100);
48 |
49 | model_.add(Hchp1[t] == (floatConstants_["k1"]) * Pchp1[t]);
50 | model_.add(Hchp2[t] == (floatConstants_["k2"]) * Pchp2[t]);
51 |
52 | model_.add(0 <= HSSsoc[t]);
53 | model_.add(HSSsoc[t] <= 1);
54 |
55 | for (int n = 0; n < numEvs_; n++)
56 | {
57 |
58 | // soc bounds
59 | model_.add(0 <= evsoc[n][t]);
60 | model_.add(evsoc[n][t] <= 1);
61 |
62 | // Ev battery Constraints
63 | if (t == ta_[n])
64 | {
65 | model_.add(evsoc[n][t] == evsocini_[n] + (floatConstants_["Eveffin"] * Pevchg[n][t] - Pevdischg[n][t] / floatConstants_["Eveffin"]) / evcap_[n]);
66 | model_.add(0 <= Pevchg[n][t]);
67 | model_.add(0 <= Pevdischg[n][t]);
68 | model_.add(Pevchg[n][t] <= (evcap_[n] * (1 - evsocini_[n]) / floatConstants_["Eveffin"]));
69 | model_.add(Pevdischg[n][t] <= (evcap_[n] * evsocini_[n] * floatConstants_["Eveffin"]));
70 | }
71 | else if (t > ta_[n] && t <= td_[n])
72 |
73 | {
74 | model_.add(evsoc[n][t] == evsoc[n][t - 1] + ((floatConstants_["Eveffin"] * Pevchg[n][t] - (Pevdischg[n][t] / floatConstants_["Eveffin"])) / evcap_[n]));
75 | model_.add(0 <= Pevchg[n][t]);
76 | model_.add(0 <= Pevdischg[n][t]);
77 | model_.add(Pevchg[n][t] <= (evcap_[n] * (1 - evsoc[n][t - 1])) / floatConstants_["Eveffin"]);
78 | model_.add(Pevdischg[n][t] <= evcap_[n] * evsoc[n][t - 1] * floatConstants_["Eveffin"]);
79 |
80 |
81 | if (t == td_[n]) { model_.add(evsoc[n][t] >= 0.5); }
82 |
83 | }
84 | else
85 | {
86 |
87 | model_.add(Pevchg[n][t] == 0);
88 | model_.add(Pevdischg[n][t] == 0);
89 |
90 | }
91 |
92 | }
93 |
94 |
95 | // Adding the HSS and BSS Constraints constraints
96 | model_.add(0 <= statoc[t]);
97 | model_.add(statoc[t] <= 1);
98 |
99 |
100 | if (t == 0)
101 | {
102 | model_.add(statoc[t] == floatConstants_["socini"] + ((floatConstants_["effin"] * Bchg[t] - (Bdischg[t] / floatConstants_["effin"])) / intConstants_["Pbmax"]));
103 | model_.add(0 <= Bchg[t]);
104 | model_.add(0 <= Bdischg[t]);
105 | model_.add(Bchg[t] <= (intConstants_["Pbmax"] * (1 - floatConstants_["socini"]) / floatConstants_["effin"]));
106 | model_.add(Bdischg[t] <= (intConstants_["Pbmax"] * floatConstants_["socini"] * floatConstants_["effin"]));
107 |
108 |
109 | model_.add(HSSsoc[t] == 0.5 + ((floatConstants_["Heffin"] * Hchg[t] - (Hdischg[t] / floatConstants_["Heffin"])) / intConstants_["Hssmax"]));
110 | model_.add(0 <= Hchg[t]);
111 | model_.add(0 <= Hdischg[t]);
112 | //model_add(0 == Hdischg[t] * Hchg[t]);
113 | model_.add(Hchg[t] <= (intConstants_["Hssmax"] * (1 - 0.5) / floatConstants_["Heffin"]));
114 | model_.add(Hdischg[t] <= (intConstants_["Hssmax"] * 0.5 * floatConstants_["Heffin"]));
115 |
116 | }
117 | else
118 | {
119 | model_.add(statoc[t] == statoc[t - 1] + ((floatConstants_["effin"] * Bchg[t] - (Bdischg[t] / floatConstants_["effin"])) / intConstants_["Pbmax"]));
120 | model_.add(0 <= Bchg[t]);
121 | model_.add(0 <= Bdischg[t]);
122 | model_.add(Bchg[t] <= (intConstants_["Pbmax"] * (1 - statoc[t - 1])) / floatConstants_["effin"]);
123 | model_.add(Bdischg[t] <= intConstants_["Pbmax"] * statoc[t - 1] * floatConstants_["effin"]);
124 |
125 |
126 | model_.add(HSSsoc[t] == HSSsoc[t - 1] + ((floatConstants_["Heffin"] * Hchg[t] - (Hdischg[t] / floatConstants_["Heffin"])) / intConstants_["Hssmax"]));
127 | model_.add(0 <= Hchg[t]);
128 | model_.add(0 <= Hdischg[t]);
129 | //model_add(0 == Hdischg[t] * Hchg[t]);
130 | model_.add(Hchg[t] <= (intConstants_["Hssmax"] * (1 - HSSsoc[t - 1]) / floatConstants_["Heffin"]));
131 | model_.add(Hdischg[t] <= (intConstants_["Hssmax"] * HSSsoc[t - 1] * floatConstants_["Heffin"]));
132 | }
133 |
134 |
135 | // Preparing electric vehicles expression for the power balance equation
136 | IloExpr exp0(env_);
137 | IloExpr exp1(env_);
138 | for (int n = 0; n < numEvs_; n++)
139 | {
140 | exp0 += Pevchg[n][t];
141 | exp1 += Pevdischg[n][t];
142 | }
143 |
144 | // Adding the Electric power balance constraint
145 |
146 | model_.add(Pdg1[t] - Pec[t] + Pdg2[t] + Rdg1_[t] + Pchp1[t] + Pchp2[t] + Bdischg[t] + exp1 - exp0 - Bchg[t] + PGbuy[t] - PGsell[t] == Pload_[t]);
147 |
148 | model_.add(Hhob[t] - Hac[t] + Hchp1[t] + Hchp2[t] + HGbuy[t] - HGsell[t] - Hchg[t] + Hdischg[t] == Hload_[t]);
149 |
150 | model_.add(0.85 * Hac[t] + 0.95 * Pec[t] == Cload_[t]);
151 |
152 | }
153 | #pragma endregion
154 |
155 |
156 | }
157 |
158 |
159 | void EMS::save_result() {
160 |
161 | }
162 |
163 | resi EMS::solve() {
164 |
165 | MgOptimizationModel();
166 |
167 | IloCplex cplex(env_);
168 | cplex.extract(model_);
169 | cplex.exportModel("ModelLP.lp");
170 | cplex.setOut(env_.getNullStream());
171 | cplex.solve();
172 | obj = cplex.getObjValue();
173 | cout << "Solution status: " << cplex.getStatus() << endl;
174 | cout << "Minimized Objective Funtion of "<< name_ << " is : " << obj << endl;
175 |
176 |
177 | int* pmgsur = new int[T_];
178 | int* pmgshort = new int[T_];
179 | int* Hmgsur = new int[T_];
180 | int* Hmgshort = new int[T_];
181 |
182 | for (int t = 0; t < T_; t++)
183 | {
184 | pmgsur[t] = cplex.getValue(PGsell[t]);
185 | pmgshort[t] = cplex.getValue(PGbuy[t]);
186 |
187 | Hmgsur[t] = cplex.getValue(HGsell[t]);
188 | Hmgshort[t] = cplex.getValue(HGbuy[t]);
189 | }
190 |
191 |
192 | resi results;
193 | results.pmgsur = pmgsur;
194 | results.pmgshort = pmgshort;
195 | results.Hmgsur = Hmgsur;
196 | results.Hmgshort = Hmgshort;
197 |
198 | IloNum eps = cplex.getParam(
199 | IloCplex::Param::MIP::Tolerances::Integrality);
200 |
201 |
202 | return results;
203 |
204 | }
205 |
206 |
207 |
--------------------------------------------------------------------------------
/MultiMG/Centralized/EMS.h:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include