Commit 57df7719 authored by @martinm's avatar @martinm
Browse files

Added technology concepts for low emission small-scale fluidised bed...

Added technology concepts for low emission small-scale fluidised bed combustion systems. Added further biomass product caegories for these systems.
parent 1e478f51
......@@ -97,6 +97,10 @@ function[BP]=BioFeedCost(time,bioprod,priceDevFactor,feedstockInputData,BioResid
BP(t,b)=BioResiduesCosts(b,1)*(1+priceDevFactor)^(t-1);
end
end
for t=1:time
BP(t,27)=BioResiduesCosts(10,1)*(1+priceDevFactor)^(t-1);
BP(t,28)=BioResiduesCosts(11,1)*(1+priceDevFactor)^(t-1);
end
else
for b=[1:4 7]
for t=1:time
......
No preview for this file type
No preview for this file type
% Structure in the WG and NWG markets seems to be equal
clearvars;
close all;
tech = 47; % i
modul = 7; % m
market = 18; % j
%% Import Volkers Data
%[~,sheets] = xlsfinfo('TechData_DataVolker_190124_PVSp.xlsx');
[~,sheets] = xlsfinfo('TechData_DataVolker_SmartWs_23032021_MJ.xlsx');
VData=zeros(90,14,market);
for j=1:market
s1=size(xlsread('TechData_DataVolker_SmartWs_23032021_MJ.xlsx',sheets{j}));
VData(1:s1(1),1:s1(2),j) = xlsread('TechData_DataVolker_SmartWs_23032021_MJ.xlsx',sheets{j});
end
% Correct "Netzverluste" in district heating market
VData(20,5,15)=VData(20,5,15)*(100-VData(24,5,15))/100;
VData(20,6,15)=VData(20,6,15)*(100-VData(24,6,15))/100;
VData(27,6,15)=VData(27,6,15)*(100-VData(24,6,15))/100;
VData(28,7,15)=VData(28,7,15)*(100-VData(24,7,15))/100;
VData(22,5,15)=VData(4,5,15)*0.05;
% load matrix showing in which row of Volkers Excel the technology is placed (i,j)
id=xlsread('TechData_TechnologyColumnsVolkersDataSheet.xlsx');
%% Generate 3D-Matrix Technology data according to my datasheet
TP=zeros(36,tech,market);
for j=1:market
TP(35,1,j)=VData(4,5,j); % Capacity of market
%TP(35,1,12)=17500000; % Capacity of industry 1
for i=1:tech
if id(i,j) ~= 0
for k=25:28
if isnan(VData(k,id(i,j),j))==0 && VData(k,id(i,j),j)~=TP(1,i,j)
if TP(1,i,j)~=0 && VData(k,id(i,j),j)~=TP(1,i,j)
warning(['biomass thermal degree of efficiency is double on market ' num2str(j) ' and technology ' num2str(i)]);
end
TP(1,i,j)=VData(k,id(i,j),j)/100; % biomass thermal degree of efficiency
end
end
for k=[19 20]
if isnan(VData(k,id(i,j),j))==0 && VData(k,id(i,j),j)~=TP(30,i,j)
if TP(30,i,j)~=0 && VData(k,id(i,j),j)~=TP(30,i,j)
%warning(['gas thermal degree of efficiency is double on market ' num2str(j) ' and technology ' num2str(i)]);
end
TP(30,i,j)=VData(k,id(i,j),j)/100; % gas thermal degree of efficiency
end
end
TP(2,i,j)=sum(VData(84,id(i,j),j),'omitnan'); %efficiency learning electrical (overwritten if thermal efficiency learning exists)
if isnan(VData(83,id(i,j),j))==0
TP(2,i,j)=sum(VData(83,id(i,j),j),'omitnan'); %efficiency learning thermal
end
if isnan(VData(30,id(i,j),j))==0
TP(5,i,j)=round(VData(30,id(i,j),j)/TP(35,1,j),2); % Share of Gas
TP(28,i,j)=1; % Set gas factor to 1
end
if isnan(VData(22,id(i,j),j))==0
TP(6,i,j)=round(VData(22,id(i,j),j)/TP(35,1,j),2); % Share of Solar Thermal
end
if isnan(VData(32,id(i,j),j))==0
TP(7,i,j)=round(VData(32,id(i,j),j)/TP(35,1,j),2); % Share of Heat Pump
end
TP(8,i,j)=round(1-TP(5,i,j)-TP(6,i,j)-TP(7,i,j),2); % Share of Biomass
TP(3,i,j)= TP(8,i,j)*TP(35,1,j); % Biomass capacity
TP(4,i,j)= (TP(5,i,j)+TP(6,i,j)+TP(7,i,j))*TP(35,1,j); % Non Biomass capacity
TP(10,i,j)=VData(82,id(i,j),j); %installed plants 2011
TP(13,i,j)=VData(52,id(i,j),j); %lifetime ST
if isnan(VData(55,id(i,j),j))==0
TP(13,i,j)=sum(VData(55,id(i,j),j),'omitnan'); %lifetime PV
if isnan(VData(52,id(i,j),j))==0 && VData(52,id(i,j),j)~=VData(55,id(i,j),j)
warning(['lifetime of ST and PV in market ' num2str(j) ' and technology ' num2str(i) ' are not equal']); % Test according text
end
end
TP(14,i,j)=VData(53,id(i,j),j); %lifetime pump
if isnan(VData(56,id(i,j),j))==0
TP(14,i,j)=sum(VData(56,id(i,j),j),'omitnan'); %lifetime Wechselrichter
if isnan(VData(53,id(i,j),j))==0 && VData(53,id(i,j),j)~=VData(56,id(i,j),j)
warning(['lifetime of pump and Wechselrichter in market ' num2str(j) ' and technology ' num2str(i) ' are not equal']); % Test according text
end
end
TP(15,i,j)=VData(59,id(i,j),j); %lifetime storage
TP(16,i,j)=VData(60,id(i,j),j); %lifetime puffer
TP(17,i,j)=VData(61,id(i,j),j); %lifetime Nachheizstab/HHS-Trocknung
TP(18,i,j)=VData(85,id(i,j),j); %investment learning
TP(19,i,j)=sum(VData(76,id(i,j),j),'omitnan'); %sum of investment
TP(22,i,j)=sum([VData(64,id(i,j),j) VData(67,id(i,j),j)],'omitnan'); %invest ST and/or PV modul
TP(23,i,j)=sum([VData(65,id(i,j),j) VData(68,id(i,j),j)],'omitnan'); %invest Pump and/or Wechselrichter
TP(24,i,j)=sum(VData(71,id(i,j),j),'omitnan'); %invest storage
TP(25,i,j)=sum(VData(73,id(i,j),j),'omitnan'); %invest puffer
TP(26,i,j)=sum(VData(74,id(i,j),j),'omitnan'); %invest Nachheizstab
TP(29,i,j)=sum(VData(79,id(i,j),j),'omitnan'); %Pellet price (overwritten if Scheitholz price exists)
if isnan(VData(80,id(i,j),j))==0
TP(29,i,j)=sum(VData(80,id(i,j),j),'omitnan'); %Scheitholz price
end
TP(27,i,j)=sum(VData(34,id(i,j),j),'omitnan'); %Units of PV
TP(31,i,j)=sum(VData(78,id(i,j),j),'omitnan'); %Electricity demand
TP(32,i,j)=sum(VData(35,id(i,j),j),'omitnan'); %Electricity Byproduct
TP(34,i,j)=sum(VData(87,id(i,j),j)/100,'omitnan');%Electricity internal use (for heating system and remaining internal use)
TP(33,i,j)=sum(VData(77,id(i,j),j),'omitnan'); %Maintanance
TP(36,i,j)=sum(VData(89,id(i,j),j),'omitnan'); %Investment Subsidies
% lifetime & invest for base tech
l=0;
for k=[51 58 50 54 57]
if (isnan(VData(k,id(i,j),j))==0 && l==0)
TP(11+l,i,j)=VData(k,id(i,j),j); % lifetime of Tech1
TP(20+l,i,j)=sum([VData(k+12,id(i,j),j) VData(72,id(i,j),j) VData(75,id(i,j),j)],'omitnan'); %invest base tech(s)+Systemregelung+Montage
l=l+1;
elseif (isnan(VData(k,id(i,j),j))==0 && l==1)
TP(11+l,i,j)=VData(k,id(i,j),j); % lifetime of Tech2
TP(20+l,i,j)=VData(k+12,id(i,j),j); %invest base tech(s)+Systemregelung+Montage
elseif l==3
warning('More than 2 main technologies exist');
end
end
% Test, if sum of investment costs are correct
if round(sum([TP(20,i,j) TP(21,i,j) TP(22,i,j) TP(23,i,j) TP(24,i,j) TP(25,i,j) TP(26,i,j)]),0) ~= round(TP(19,i,j),0)
warning(['Sum of investment costs is incorrect on market ' num2str(j) ' and technology ' num2str(i)]);
end
end
if TP(1,i,j)==0
TP(1,i,j)=1; % replace 0 with 1 to avoid division by zero
end
if TP(30,i,j)==0
TP(30,i,j)=1; % replace 0 with 1 to avoid division by zero
end
end
end
%% manual corrections!
TP(1,26,15)=0.1; % Degree of efficiency of HHS-KohleHKW is 0,1% for the HHS share
for j=[7 8 11:14]
TP(30,5,j) = VData(30,id(5,j),j)./VData(31,id(5,j),j); % Correction of Gas degree of efficiency of Tech Gas-BZ+BW+ST
end
% Correct Share of ST & Biomass in HT-WP + ST + BM-BHKW, needs to be changed again!!! Leitungsverluste nicht bercksichtigt!!!!!!
TP(6,27,15)=0.05;
TP([3 8],27,15)=0;
TP(4,27,15)=18000000;
% Correct Units of PV in Industry and district heating
TP(27,:,15:end)=0; %Units of PV
%% Write data into Excel sheet
for j=1:market
xlswrite('TechData_FinalData.xlsx',TP(:,:,j),sheets{j},'C3:AW38')
end
......@@ -45,11 +45,11 @@ $loadR c
bm Biotype
$loadR bm
bmwaste(bm) Biotype residues /1*11/
bmwaste(bm) Biotype residues /1*12/
b Bioproduct
$loadR b
bwaste(b) Bioproduct residues /1*9/
bwaste(b) Bioproduct residues /1*9,27,28/
bcult(b) Bioproduct cultivation /10*23/
bkup(b) SRC products /12*14/
bmis(b) Miscanthus products /15*17/
......@@ -266,17 +266,17 @@ bcHHSCoal(t,j).. sum(b,bc(t,"26"
bamaxwastefct(t).. sum(bmwaste(bm),ba(t,bm))*bamaxw(t)=g=sum((i,j,bwaste(b)),bc(t,i,j,b));
ba1fct(t,bmwaste).. ba(t,bmwaste)=g=sum(b,bu(t,b,bmwaste));
ba2fct(t).. ba(t,"12")*bamaxc(t)=g=sum(bcult(b),bu(t,b,"12")/yield(t,b));
ba3fct(t).. ba(t,"13")=g=sum(b,bu(t,b,"13"));
ba2fct(t).. ba(t,"13")*bamaxc(t)=g=sum(bcult(b),bu(t,b,"13")/yield(t,b));
ba3fct(t).. ba(t,"14")=g=sum(b,bu(t,b,"13"));
bufct(t,b).. sum(bm,bu(t,b,bm))=e=sum((i,j),bc(t,i,j,b));
bustart(bculst).. bu("1",bculst,"12")=e=yield("1",bculst)*culstart(bculst);
bustart(bculst).. bu("1",bculst,"13")=e=yield("1",bculst)*culstart(bculst);
bustartKup.. sum((bkup,bm),bu("1",bkup,bm))=e=yield("1","12")*culstart("12");
bustartMis.. sum((bmis,bm),bu("1",bmis,bm))=e=yield("1","15")*culstart("15");
bumax(t+1,bculst) $ (ord(t)<36).. bu(t+1,bculst,"12")=l=2*bu(t,bculst,"12");
bumaxKup(t+1) $ (ord(t)<36).. sum(bkup,bu(t+1,bkup,"12"))=l=2*sum(bkup,bu(t,bkup,"12"));
bumaxMis(t+1) $ (ord(t)<36).. sum(bmis,bu(t+1,bmis,"12"))=l=2*sum(bmis,bu(t,bmis,"12"));
bumax(t+1,bculst) $ (ord(t)<36).. bu(t+1,bculst,"13")=l=2*bu(t,bculst,"13");
bumaxKup(t+1) $ (ord(t)<36).. sum(bkup,bu(t+1,bkup,"13"))=l=2*sum(bkup,bu(t,bkup,"13"));
bumaxMis(t+1) $ (ord(t)<36).. sum(bmis,bu(t+1,bmis,"13"))=l=2*sum(bmis,bu(t,bmis,"13"));
ghgffct(t,i,j,b).. ghgf(t,i,j,b)=e=alloc(i,j)*ghgfeed(b)*bc(t,i,j,b);
ghgtfct(t,i,j).. ghgt(t,i,j)=e=alloc(i,j)*ghgr(t,i,j)*v(t,i,j);
......
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 1
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 1
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -23,7 +23,7 @@ C o m p i l a t i o n
18 *%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
19
21
GDXIN C:\Users\martinm\Documents\BENOPT-HEAT (public)\src\matdata.gdx
GDXIN C:\Users\martinm\Documents\BENOPT-HEAT (SmartWirbelschicht)\src\matdata.gdx
23
24 sets
25 stat Solve status /solvestat,modelstat/
......@@ -49,14 +49,14 @@ GDXIN C:\Users\martinm\Documents\BENOPT-HEAT (public)\src\matdata.gdx
45
46 bm Biotype
--- LOAD bm = 6:bm
48 bmwaste(bm) Biotype residues /1*11/
48 bmwaste(bm) Biotype residues /1*12/
49
50 b Bioproduct
--- LOAD b = 7:b
52 bwaste(b) Bioproduct residues /1*9/
52 bwaste(b) Bioproduct residues /1*9,27,28/
53 bcult(b) Bioproduct cultivation /10*23/
54 bkup(b) SRC products /12*14/
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 2
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 2
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -114,7 +114,7 @@ C o m p i l a t i o n
105 v3p(t,i,j) Non-Biomass heat production [GJ]
106 bup(t,b,bm) Actual converted biomass from biotype to bioprod [GJ]
107 bcp(t,i,j,b) Actual consumed biomass in the technology [GJ]
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 3
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 3
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -172,7 +172,7 @@ C o m p i l a t i o n
134 bc(t,i,j,b) Actual consumed biomass in the technology [GJ]
135 ghgf(t,i,j,b) Actual feedstock GHG emissions [t]
136 ghgt(t,i,j) Actual technology GHG emissions [t]
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 4
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 4
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -230,7 +230,7 @@ C o m p i l a t i o n
187 demandfct Heat demand per market = sum of heat consumption per market
188 dcapfct This equation is supposed to tell that one HS is exactly for one house
189
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 5
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 5
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -288,7 +288,7 @@ C o m p i l a t i o n
239 totghgfct.. ghgtot=e=sum((t,i,j,b),ghgf(t,i,j,b))+sum((t,i,j),ghgt(t,i,j));
240
241 * Restrictions
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 6
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 6
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -320,17 +320,17 @@ C o m p i l a t i o n
266 bamaxwastefct(t).. sum(bmwaste(bm),ba(t,bm))*bamaxw(t)=g=sum((i,j,bwaste(b)),bc(t,i,j,b));
267
268 ba1fct(t,bmwaste).. ba(t,bmwaste)=g=sum(b,bu(t,b,bmwaste));
269 ba2fct(t).. ba(t,"12")*bamaxc(t)=g=sum(bcult(b),bu(t,b,"12")/yield(t,b));
270 ba3fct(t).. ba(t,"13")=g=sum(b,bu(t,b,"13"));
269 ba2fct(t).. ba(t,"13")*bamaxc(t)=g=sum(bcult(b),bu(t,b,"13")/yield(t,b));
270 ba3fct(t).. ba(t,"14")=g=sum(b,bu(t,b,"13"));
271
272 bufct(t,b).. sum(bm,bu(t,b,bm))=e=sum((i,j),bc(t,i,j,b));
273
274 bustart(bculst).. bu("1",bculst,"12")=e=yield("1",bculst)*culstart(bculst);
274 bustart(bculst).. bu("1",bculst,"13")=e=yield("1",bculst)*culstart(bculst);
275 bustartKup.. sum((bkup,bm),bu("1",bkup,bm))=e=yield("1","12")*culstart("12");
276 bustartMis.. sum((bmis,bm),bu("1",bmis,bm))=e=yield("1","15")*culstart("15");
277 bumax(t+1,bculst) $ (ord(t)<36).. bu(t+1,bculst,"12")=l=2*bu(t,bculst,"12");
278 bumaxKup(t+1) $ (ord(t)<36).. sum(bkup,bu(t+1,bkup,"12"))=l=2*sum(bkup,bu(t,bkup,"12"));
279 bumaxMis(t+1) $ (ord(t)<36).. sum(bmis,bu(t+1,bmis,"12"))=l=2*sum(bmis,bu(t,bmis,"12"));
277 bumax(t+1,bculst) $ (ord(t)<36).. bu(t+1,bculst,"13")=l=2*bu(t,bculst,"13");
278 bumaxKup(t+1) $ (ord(t)<36).. sum(bkup,bu(t+1,bkup,"13"))=l=2*sum(bkup,bu(t,bkup,"13"));
279 bumaxMis(t+1) $ (ord(t)<36).. sum(bmis,bu(t+1,bmis,"13"))=l=2*sum(bmis,bu(t,bmis,"13"));
280
281 ghgffct(t,i,j,b).. ghgf(t,i,j,b)=e=alloc(i,j)*ghgfeed(b)*bc(t,i,j,b);
282 ghgtfct(t,i,j).. ghgt(t,i,j)=e=alloc(i,j)*ghgr(t,i,j)*v(t,i,j);
......@@ -346,7 +346,7 @@ C o m p i l a t i o n
292
293 model BensimHeat /all/;
294
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 7
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 7
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -404,7 +404,7 @@ C o m p i l a t i o n
345 ncap2p(t,i,m,j) = ncap2.l(t,i,m,j);
346 nextp(t,i,m,j) = next.l(t,i,m,j);
347 nxdecp(t,i,m,j) = nxdec.l(t,i,m,j);
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 8
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 8
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
C o m p i l a t i o n
......@@ -414,35 +414,35 @@ C o m p i l a t i o n
350
351 execute_unload 'matsol.gdx', returnstat ;
352 execute_unloadIdx 'idxdata', vp, vBiop, vGasp, v3p, ghgfp, ghgtp, bup, bcp, ncapp, ncap1p, ncap2p, nextp, nprodp, nxdecp, vBehp, tcp;
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 9
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 9
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
Include File Summary
SEQ GLOBAL TYPE PARENT LOCAL FILENAME
1 1 INPUT 0 0 C:\Users\martinm\Documents\BENOPT-HEAT (public)\src\OptimizationModule.gms
2 22 GDXIN 1 22 C:\Users\martinm\Documents\BENOPT-HEAT (public)\src\matdata.gdx
1 1 INPUT 0 0 C:\Users\martinm\Documents\BENOPT-HEAT (SmartWirbelschicht)\src\OptimizationModule.gms
2 22 GDXIN 1 22 C:\Users\martinm\Documents\BENOPT-HEAT (SmartWirbelschicht)\src\matdata.gdx
COMPILATION TIME = 0.047 SECONDS 13 MB 28.2.0 r750fa45 WEX-WEI
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 10
COMPILATION TIME = 0.172 SECONDS 38 MB 28.2.0 r750fa45 WEX-WEI
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 10
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
Model Statistics SOLVE BensimHeat Using LP From line 328
MODEL STATISTICS
BLOCKS OF EQUATIONS 39 SINGLE EQUATIONS 3,319,098
BLOCKS OF VARIABLES 19 SINGLE VARIABLES 4,970,182
NON ZERO ELEMENTS 15,171,105
BLOCKS OF EQUATIONS 39 SINGLE EQUATIONS 3,972,684
BLOCKS OF VARIABLES 17 SINGLE VARIABLES 6,044,337
NON ZERO ELEMENTS 20,033,953
GENERATION TIME = 15.750 SECONDS 1,510 MB 28.2.0 r750fa45 WEX-WEI
GENERATION TIME = 17.375 SECONDS 1,944 MB 28.2.0 r750fa45 WEX-WEI
EXECUTION TIME = 15.937 SECONDS 1,510 MB 28.2.0 r750fa45 WEX-WEI
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 11
EXECUTION TIME = 17.672 SECONDS 1,944 MB 28.2.0 r750fa45 WEX-WEI
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 11
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
Solution Report SOLVE BensimHeat Using LP From line 328
......@@ -455,34 +455,34 @@ Solution Report SOLVE BensimHeat Using LP From line 328
**** SOLVER STATUS 1 Normal Completion
**** MODEL STATUS 1 Optimal
**** OBJECTIVE VALUE 3485625353117.8857
**** OBJECTIVE VALUE 3205019275454.9531
RESOURCE USAGE, LIMIT 41.578 45000.000
ITERATION COUNT, LIMIT 33897 2000000000
RESOURCE USAGE, LIMIT 39.391 45000.000
ITERATION COUNT, LIMIT 34452 2000000000
IBM ILOG CPLEX 28.2.0 r750fa45 Released Aug 19, 2019 WEI x86 64bit/MS Window
--- GAMS/Cplex licensed for continuous and discrete problems.
Cplex 12.9.0.0
Space for names approximately 199.31 Mb
Space for names approximately 240.95 Mb
Use option 'names no' to turn use of names off
LP status(1): optimal
Cplex Time: 30.11sec (det. 13171.01 ticks)
Cplex Time: 26.53sec (det. 10140.59 ticks)
Optimal solution found.
Objective : 3485625353117.885742
Objective : 3205019275454.953125
**** REPORT SUMMARY : 0 NONOPT
0 INFEASIBLE
0 UNBOUNDED
11590 PROJECTED
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 07/06/20 11:11:08 Page 12
19896 PROJECTED
GAMS 28.2.0 r750fa45 Released Aug 19, 2019 WEX-WEI x86 64bit/MS Windows 04/12/21 16:04:54 Page 12
G e n e r a l A l g e b r a i c M o d e l i n g S y s t e m
E x e c u t i o n
EXECUTION TIME = 1.406 SECONDS 628 MB 28.2.0 r750fa45 WEX-WEI
EXECUTION TIME = 1.859 SECONDS 781 MB 28.2.0 r750fa45 WEX-WEI
USER: Small MUD - 5 User License S191010/0001AO-WIN
......@@ -492,5 +492,5 @@ USER: Small MUD - 5 User License S191010/0001AO-WIN
**** FILE SUMMARY
Input C:\Users\martinm\Documents\BENOPT-HEAT (public)\src\OptimizationModule.gms
Output C:\Users\martinm\Documents\BENOPT-HEAT (public)\src\OptimizationModule.lst
Input C:\Users\martinm\Documents\BENOPT-HEAT (SmartWirbelschicht)\src\OptimizationModule.gms
Output C:\Users\martinm\Documents\BENOPT-HEAT (SmartWirbelschicht)\src\OptimizationModule.lst
......@@ -348,41 +348,41 @@ if fig4==1
% Subplot biomass residues available
subplot(3,2,[1 2]);
hold on
h=area(ba.val(:,1:11)/1000000);
h=area(ba.val(:,1:12)/1000000);
xlim([0 time+1])
ylim([0 max(sum(ba.val(:,1:11)/1000000,2))+100])
ylim([0 max(sum(ba.val(:,1:12)/1000000,2))+100])
ax=gca;
ax.XTick = 1:5:36;
ax.XTickLabel=2015:5:2050;
ax.FontSize=FT(4);
title(title1fig3,'FontSize',FT(1));
ylabel(ylabbiomass,'FontSize',FT(2));
legend(h(end:-1:1),legbiotype(11:-1:1),'Location','bestoutside','FontSize',FT(3));
legend(h(end:-1:1),legbiotype(12:-1:1),'Location','bestoutside','FontSize',FT(3));
hold off
%Subplot biomass residues consumed
subplot(3,2,[3 4]);
hold on
h=area(squeeze(sum(bu(:,:,1:11),2)/1000000));
h2=plot(sum(ba.val(:,1:11),2)/1000000);
h3=plot(sum(ba.val(:,1:11),2).*bamaxw.val(:)/1000000);
h=area(squeeze(sum(bu(:,:,1:12),2)/1000000));
h2=plot(sum(ba.val(:,1:12),2)/1000000);
h3=plot(sum(ba.val(:,1:12),2).*bamaxw.val(:)/1000000);
xlim([0 time+1])
ylim([0 max(sum(ba.val(:,1:11)/1000000,2))+100])
ylim([0 max(sum(ba.val(:,1:12)/1000000,2))+100])
ax=gca;
ax.XTick = [1 6:10:36];
ax.XTickLabel=[2015 2020:10:2050];
ax.FontSize=FT(4);
title(title2fig3,'FontSize',FT(1));
ylabel(ylabbiomass,'FontSize',FT(2));
legend([h2 h3 h(end:-1:1)],{legfig3add1,legfig3add2,legbiotype{11:-1:1}},'Location','bestoutside','FontSize',FT(3));
legend([h2 h3 h(end:-1:1)],{legfig3add1,legfig3add2,legbiotype{12:-1:1}},'Location','bestoutside','FontSize',FT(3));
hold off
% Subplot cultivation
subplot(3,2,[5 6])
hold on
plot(ba.val(:,12)/1000000)
plot(ba.val(:,12).*bamaxc.val(:)/1000000)
plot(squeeze(sum(squeeze(bu(:,:,12))./yield.val(:,:),2,'omitnan')/(1000000)),'--','color','black')
plot(ba.val(:,13)/1000000)
plot(ba.val(:,13).*bamaxc.val(:)/1000000)
plot(squeeze(sum(squeeze(bu(:,:,13))./yield.val(:,:),2,'omitnan')/(1000000)),'--','color','black')
xlim([0 time+1])
ax=gca;
ax.XTick = [1 6:10:36];
......@@ -413,8 +413,8 @@ if fig5==1
% Biomass distribution over biomass products
subplot(2,1,2)
h=area(squeeze(sum(sum(bc(:,:,:,1:23),2),3))/1000000);
for b=1:20
h=area(squeeze(sum(sum(bc(:,:,:,[1:23 27 28]),2),3))/1000000);
for b=1:25
h(b).FaceColor=colbioprod{b};
end
xlim([0 time+1])
......@@ -424,7 +424,7 @@ if fig5==1
ax.FontSize=FT(4);
title(title2fig31,'FontSize',FT(1));
ylabel(ylabbiomass,'FontSize',FT(2));
legend(h(end:-1:1),legbioprod(23:-1:1),'Location','bestoutside','FontSize',FT(3));
legend(h(end:-1:1),legbioprod([28 27 23:-1:1]),'Location','bestoutside','FontSize',FT(3));
end
%% Biomass use in technologies
......
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -58,29 +58,29 @@ function[d,dcap,vc,inv,pmBio,pmGas,pm3,efBio,efGas,efMethan,life,ba,bamaxw,bamax
% Biomass potential for residues
if residues==1 % Min
for bm=1:11
for bm=1:12
BA(bm,:) = interp1(BAMinMaxData(1,:),BAMinMaxData(bm+3,:),2015:1:2050,'pchip');
end
elseif residues==2 % Medium
for bm=1:11
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+BAMinMaxData(bm+20,:))/2,2015:1:2050,'pchip');
for bm=1:12
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+BAMinMaxData(bm+21,:))/2,2015:1:2050,'pchip');
end
elseif residues==3 % Max
for bm=1:11
BA(bm,:) = interp1(BAMinMaxData(1,:),BAMinMaxData(bm+20,:),2015:1:2050,'pchip');
for bm=1:12
BA(bm,:) = interp1(BAMinMaxData(1,:),BAMinMaxData(bm+21,:),2015:1:2050,'pchip');
end
elseif residues==5 % Sensitivity
for bm=[1:5 7] % Wood
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+20,:)-BAMinMaxData(bm+3,:))*Sen(1,32)),2015:1:2050,'pchip');
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+21,:)-BAMinMaxData(bm+3,:))*Sen(1,32)),2015:1:2050,'pchip');
end
for bm=[6 8 9] % Waste wood etc.
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+20,:)-BAMinMaxData(bm+3,:))*Sen(1,33)),2015:1:2050,'pchip');
for bm=[6 8 9 10] % Waste wood etc.
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+21,:)-BAMinMaxData(bm+3,:))*Sen(1,33)),2015:1:2050,'pchip');
end
for bm=11 % Digestable
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+20,:)-BAMinMaxData(bm+3,:))*Sen(1,34)),2015:1:2050,'pchip');
for bm=12 % Digestable
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+21,:)-BAMinMaxData(bm+3,:))*Sen(1,34)),2015:1:2050,'pchip');
end
for bm=10 % Straw
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+20,:)-BAMinMaxData(bm+3,:))*Sen(1,35)),2015:1:2050,'pchip');
for bm=11 % Straw
BA(bm,:) = interp1(BAMinMaxData(1,:),(BAMinMaxData(bm+3,:)+(BAMinMaxData(bm+21,:)-BAMinMaxData(bm+3,:))*Sen(1,35)),2015:1:2050,'pchip');
end
end
......@@ -121,15 +121,15 @@ function[d,dcap,vc,inv,pmBio,pmGas,pm3,efBio,efGas,efMethan,life,ba,bamaxw,bamax
% Potential available land for energy crops
if crop==1
BA(12,:) = interp1(BAdata(1,:),BAdata(8,:),2015:1:2050,'pchip');
BA(13,:) = interp1(BAdata(1,:),BAdata(8,:),2015:1:2050,'pchip');
elseif crop==5 %Sensitivity
BA(12,:) = interp1(BAdata(1,:),BAdata(9,:)+(BAdata(8,:)-BAdata(9,:))*Sen(1,31),2015:1:2050,'pchip');
BA(13,:) = interp1(BAdata(1,:),BAdata(9,:)+(BAdata(8,:)-BAdata(9,:))*Sen(1,31),2015:1:2050,'pchip');
else
BA(12,:) = interp1(BAdata(1,:),BAdata(9,:),2015:1:2050,'pchip');
BA(13,:) = interp1(BAdata(1,:),BAdata(9,:),2015:1:2050,'pchip');
end
% Set fossil potential to 20.000 PJ (equals unlimited)
BA(13,:)= 20*10^9;
BA(14,:)= 20*10^9;
% Set data format for GAMS
ba.uels = {tims,biotypes};
......@@ -371,8 +371,8 @@ function[d,dcap,vc,inv,pmBio,pmGas,pm3,efBio,efGas,efMethan,life,ba,bamaxw,bamax
%% Yields of the energy crops (t,b) [GJ/ha)
Y11=[0 0 0 0 0 0 0 0 0 YD(1,1) YD(1,2) YD(1,4) YD(1,4) YD(1,4) YD(1,6) YD(1,6) YD(1,6) YD(1,8) YD(1,9) YD(1,11) YD(1,10) YD(1,12) YD(1,13) 0 0 0];
Y50=[0 0 0 0 0 0 0 0 0 YD(2,1) YD(2,2) YD(2,4) YD(2,4) YD(2,4) YD(2,6) YD(2,6) YD(2,6) YD(2,8) YD(2,9) YD(2,11) YD(2,10) YD(2,12) YD(2,13) 0 0 0];
Y11=[0 0 0 0 0 0 0 0 0 YD(1,1) YD(1,2) YD(1,4) YD(1,4) YD(1,4) YD(1,6) YD(1,6) YD(1,6) YD(1,8) YD(1,9) YD(1,11) YD(1,10) YD(1,12) YD(1,13) 0 0 0 0 0];