PK KfL
codemeta.json{"@type": "SoftwareSourceCode", "provider": {"url": "https://www.comses.net", "@type": "Organization", "@id": "https://www.comses.net", "name": "CoMSES Network (CoMSES)"}, "@context": ["https://doi.org/doi:10.5063/schema/codemeta-2.0", "http://schema.org"]}PK LfL~8 code/ARISE PV v1.7.0.nlogo
extensions [ gis table csv matrix ]
globals[
basemap ;;GIS basemap for setting up world
patch-value
buy
esco
patch-code
mapData
GIS-display
payment
init-payment
n_province
;variables for solar investment in rural area
HHType
ruralPV-capacity
PV_efficiency ;PV efficiency
prodPV ;total electricity from PV (phisically)
prodPV_rural ; electricity from PV in rural
prodPV_urban ; electricity from PV in urban
PVcapCost ;capital cost
ruralPVinHH ;number of 100Wp PV in rural area
urbanPVinHH ;PV capacity size in urban area
init-payment-R ;initial monthly payment without interest subsidy
thres
;variables for impact analysis
ghgPV_ops
ghgPV_con
alumPV
enerPV
steelPV
concPV
;variables to create agents
HHnumber
i-avg
i-dev
i-min
i-max
;variables for PV business
;loan
Rural-Loan
eff-interest
m-payment
m-payment-R
HH
;variables for total incentives
TcapSubsidy
TinterestSubsidy
SupplyCost-PV ;PV electricity sales value
sub-payment
Old-Tariff ;FIT which depend on regional electricity generation costs
New-Tariff
totalPVinHH
yearlyPVinHH
yearlyPVinRural
yearlyPVinUrban
;variables for IO analysis (in monetary unit - it is transaction value)
io-matrix ;matrix to store Leontief output inverse matrix
Industry
Services
economicImpact ;to store IO analysis result
Coal ;electricity production from coal-oil combined PP
Diesel ;electricity production from oil PP
OCGT ;electricity production from open cycle gas turbine
CCGT ;electricity production from combined cycle gas turbine
Hydro ;electricity production from hydro PP
Geothermal ;electricity production from geothermal PP
MHP ;electricity production from microhydro PP
PV ;electricity production from PV
Wind ;electricity production from wind turbine
Biomas ;electricity production from biomass PP
Waste ;electricity production from waste including other biogas technology
InterestPayment ;interest paid to bank sector
outputElectricity ;Final demand of electricity
IO-effect ;IO simulation results
totalEffect
InverterCost
;variables for time series
Tanalys ;analysis period end
years
thres-g ;threshold after growth
pre_TIruralWOE ;to store previous investment by rural WOE
new_TIruralWOE ;to store new investment by rural WOE
upd_economicImpact ;update for economic impacts
newPV
;HH growth variables
g_HH_min
g_HH_max
g_HH_sd
g_HH_avg
i_uplno
i_uplnno
i_unplno
i_unplnno
i_uneo
i_uneno
i_rplno
i_rplnno
i_rnplno
i_rnplnno
i_rneo
i_rneno
;Lists to store data
L_ruralWOE
L_totalHH
L_IruralWOE
L_HH
L_IurbanPV
L_Urban
i
x
y
z
L_dataValue
L_maxValue
L_temp
;Lists for HH number growth rate
GN_HHMin
GN_HHMax
GN_HHSD
GN_HHAvg
GN_HH
GN_HHUrban
GN_HHRural
URBANIZATION
;Lists for HH income growth
GI_UPLNO
GI_UPLNNO
GI_UNPLNO
GI_UNPLNNO
GI_UNEO
GI_UNENO
GI_RPLNO
GI_RPLNNO
GI_RNPLNO
GI_RNPLNNO
GI_RNEO
GI_RNENO
;List of FIT
C_FIT
tariff-450
tariff-6600
Tariff-RE
G_ElecPrice ;annual electricity growth rate
HHUrban-PLN-owner
HHUrban-PLN-nonowner
HHUrban-nonPLN-owner
HHUrban-nonPLN-nonowner
HHUrban-nonElect-owner
HHUrban-nonElect-nonowner
HHRural-PLN-owner
HHRural-PLN-nonowner
HHRural-nonPLN-owner
HHRural-nonPLN-nonowner
HHRural-nonElect-owner
HHRural-nonElect-nonowner
ComList1 ;common list for checking the results
ComList2
;variables for counter
prov
counters
record
;List for validation purpose
L_EquityRecovery
L_DebtPayment
L_AnnualCost
L_DR
L_taxes
L_InvCost
L_AnnualReserveInt
L_OtherIncentives
T_IruralWOE ;total rural investing RE
T_IUrbanPV ;total urban investing RE
;=================== Parameters for PV investment in city =================================
;parameters for basic investment consideration
InvestCost ;Total investment cost (IDR)
ElecProd ;Electricity production annually (kWh)
Equity ;Financing covered by own investment
Urban-Loan ;Financing covered by debt borrowingg
CRFEquity ;Capital recovery factor for equity/ Factor used to compute level annual cost from present worth. converts a present value into a stream of equal annual payments over a specified time, at a specified discount rate (interest)
CRFLoan ;Capital recovery factor for loan
EquityRecovery ;Annual Equity Recovery: Uniform annual revenue required to earn stipulated rate of return on equity
DebtPayment ;Annual Debt Payment: Uniform annual payment needed to pay off debt
PVAnnualCost ;Annual OM cost: fix and variable OM costs
OtherIncentives ;Incentives in OM costs, here it is equivalent to fraction of OM cost
Deprecitation ;assumptions of straight line method
;parameters for taxes calculations
EquityInterest ;
RemainingEquity
EquityPaid
DebtInterest
RemainingDebt
DebtPaid
PTC ;Production tax credit
taxes ;total tax
RevenueReq ;Energy revenue requirement annually
TotPresentWorth ;Total present worth
CurrentGenCost ;Generation cost in current monetary (IDR)
ConstantGenCost ;Generation cost in constant monetary (IDR)
CapRecFactor
RealCostofEquity
ProjectYears ;
InverterTime ;counter for inverter replacement in commercial calculation
n
DR
AnnualReserveInt
AnnualCost
;Variables for policy shocks
CapCost
LoanInterest
;Variables in default setting
PV-Price
PV-FixOMCost
PV-InverterPeriod
LoanShare
PV-InverterPrice
PV-Capacity
CostOfEquity
PV-CF
VAT
PV-LifeTime
PV-LifeTime-rural
PV-Reset
DebtReserve
Inflation
DebtReserveInterest
Escalation
InVCost
PVCityCost
CF_Threshold ;minimum CF for charging battery in lamps
Lifetime_Threshold ;minimum lifetime guarantee asked by HH
zHH ;temporary variable for checking number of HH
;new variables for scenario 1
PV-CapSubsidy-R
rural-interest-subsidy
urban-interest-subsidy
PV-LoanPeriod-R
PV-OMCost-R
FIT-new
FIT-PV-old
InverterReplacementUnit ;number of inverter that should be replaced in each year
;impact variable
PVInvestCost_rural
PVInvestCost_urban
PVInvestCost
PVOMCost_rural
PVOMCost_urban
]
breed [ households household ]
households-own [
income ;HH income
province ;province code
region ; 0 = urban, 1 = rural
E-type ; Electrcity type 0 = PLN, 1 = non PLN electricity, 2 = no electricity
InvestPV ;0 = not invest PV, 1 = invest PV
HomeOwnership ;0 = the owner, 1 = not the owner
PVTime ;to record PV investment year
LoanTime ;to record loan period year
InvtTime ;to record inverter Investment year, it should be years - 1 because
Age ;to record investment period/age
InterestToBank ;to record interest payment by each HH
;MHP ; not simulated yet because it is impossible to match the locations of microhydro potential and houses (it needs super computer and high resolution data)
;Wind ;
]
patches-own [
]
;;;;; INISIALISASI ;;;;
to load ;reset everything
ca
clear-plot ;bersihkan layar di plot
file-close-all ;close any files open from last run
reset-ticks
set years 2010 ; start year of analysis
set Tanalys 2050 ;end year of analysis
set buy 0
set esco 0
;assumption of annual urbanisation growth
set urbanization [ 0.49924 0.507120001 0.514880001 0.522520002 0.530040595 0.537442961 0.544728856 0.551900612 0.558961123 0.565913841 ;2010-2019
0.572762762 0.579512417 0.586167863 0.592734673 0.599218922 0.60562718 0.611966499 0.618244407 0.624468897 0.630648417 ;2020 - 2029
0.636791869 0.642908595 0.649008377 0.655101434 0.661198416 0.667310408 0.673448927 0.67962593 0.685853814 0.692145429 ;2030 - 2039
0.698514083 0.704973557 0.711538118 0.718222538 0.725042114 0.732012691 0.739150688 0.746473133 0.753997691 0.761742704 0.769727236 ] ;2040 - 2050
set pre_TIruralWOE 0
set new_TIruralWOE 0
set upd_economicImpact 0
set newPV 0
set GIS-display 0
;clear lists that will be used
set GN_HHMin [ ]
set GN_HHMax [ ]
set GN_HHSD [ ]
set GN_HHAvg [ ]
;set GN_HH [ ]
set GI_UPLNO [ ]
set GI_UPLNNO [ ]
set GI_UNPLNO [ ]
set GI_UNPLNNO [ ]
set GI_UNEO [ ]
set GI_UNENO [ ]
set GI_RPLNO [ ]
set GI_RPLNNO [ ]
set GI_RNPLNO [ ]
set GI_RNPLNNO [ ]
set GI_RNEO [ ]
set GI_RNENO [ ]
; Lists for original HH number
set HHUrban-PLN-owner [ ]
set HHUrban-PLN-nonowner [ ]
set HHUrban-nonPLN-owner [ ]
set HHUrban-nonPLN-nonowner [ ]
set HHUrban-nonElect-owner [ ]
set HHUrban-nonElect-nonowner [ ]
set HHRural-PLN-owner [ ]
set HHRural-PLN-nonowner [ ]
set HHRural-nonPLN-owner [ ]
set HHRural-nonPLN-nonowner [ ]
set HHRural-nonElect-owner [ ]
set HHRural-nonElect-nonowner [ ]
;list of FIT
set C_FIT [ ]
set Tariff-RE [ ]
set FIT-new [ ]
set FIT-PV-old [ ]
set L_ruralWOE [ ]
set L_totalHH [ ]
set L_IruralWOE [ ]
set L_HH [ ]
set L_IurbanPV [ ]
set L_Urban [ ]
set L_temp [ ]
defaultvalue ;open default value
;open Leontief output inverse matrix (1-D)-1
file-open "m input output 6.txt" ; open file Leontief output inverse matrix which has special format
if file-at-end? [stop] ;;protect against end of file
set io-matrix matrix:from-row-list (file-read) ;store txt file as a matrix in netlogo
;open GIS data file
set basemap gis:load-dataset "map.shp" ;open GIS file, including the dbf file
print "Opening household data in 2010 ...."
;create urban HH in 2010
set HHUrban-PLN-owner createHH "N_UPLNO" "IM_UPLNO" "ID_UPLNO" "IMI_UPLNO" "IMA_UPLNO" 0 0 0 0 ;urban HH with PLN and owner of a house
set HHUrban-PLN-nonowner createHH "N_UPLNNO" "IM_UPLNNO" "ID_UPLNNO" "IMI_UPLNNO" "IMA_UPLNNO" 0 0 1 0 ;urban HH with PLN and non owner of a house
set HHUrban-nonPLN-owner createHH "N_UNPLNO" "IM_UNPLNO" "ID_UNPLNO" "IMI_UNPLNO" "IMA_UNPLNO" 0 1 0 0 ;urban HH with non PLN and owner of a house
set HHUrban-nonPLN-nonowner createHH "N_UNPLNNO" "IM_UNPLNNO" "ID_UNPLNNO" "IMI_UNPLNN" "IMA_UNPLNN" 0 1 1 0 ;urban HH with non PLN and non owner of a house
set HHUrban-nonElect-owner createHH "N_UNEO" "IM_UNEO" "ID_UNEO" "IMI_UNEO" "IMA_UNEO" 0 2 0 0 ;urban HH with no electricity and owner of a house
set HHUrban-nonElect-nonowner createHH "N_UNENO" "IM_UNENO" "ID_UNENO" "IMI_UNENO" "IMA_UNENO" 0 2 1 0 ;urban HH with no electricity and non owner of a house
;create rural HH in 2010
set HHRural-PLN-owner createHH "N_RPLNO" "IM_RPLNO" "ID_RPLNO" "IMI_RPLNO" "IMA_RPLNO" 1 0 0 0 ;Rural HH with PLN and owner of a house
set HHRural-PLN-nonowner createHH "N_RPLNNO" "IM_RPLNNO" "ID_RPLNNO" "IMI_RPLNNO" "IMA_RPLNNO" 1 0 1 0 ;Rural HH with PLN and non owner of a house
set HHRural-nonPLN-owner createHH "N_RNPLNO" "IM_RNPLNO" "ID_RNPLNO" "IMI_RNPLNO" "IMA_RNPLNO" 1 1 0 0 ;Rural HH with non PLN and owner of a house
set HHRural-nonPLN-nonowner createHH "N_RNPLNNO" "IM_RNPLNNO" "ID_RNPLNNO" "IMI_RNPLNN" "IMA_RNPLNN" 1 1 1 0 ;Rural HH with non PLN and non owner of a house
set HHRural-nonElect-owner createHH "N_RNEO" "IM_RNEO" "ID_RNEO" "IMI_RNEO" "IMA_RNEO" 1 2 0 0 ;Rural HH with no electricity and owner of a house
set HHRural-nonElect-nonowner createHH "N_RNENO" "IM_RNENO" "ID_RNENO" "IMI_RNENO" "IMA_RNENO" 1 2 1 0 ;Rural HH with no electricity and non owner of a house
;load HH growth data
foreach gis:feature-list-of basemap [
;obtain data from dbf file
ask patches gis:intersecting ? [
;growth of urban HH income
set i_uplno gis:property-value ? "GI_UPLNO" ;urban HH with PLN and owner of a house
set i_uplnno gis:property-value ? "GI_UPLNNO" ;urban HH with PLN and non owner of a house
set i_unplno gis:property-value ? "GI_UNPLNO" ;urban HH with non PLN and owner of a house
set i_unplnno gis:property-value ? "GI_UNPLNNO" ;urban HH with non PLN and non owner of a house
set i_uneo gis:property-value ? "GI_UNEO" ;urban HH with no electricity and owner of a house
set i_uneno gis:property-value ? "GI_UNENO" ;urban HH with no electricity and non owner of a house
;growth of rural HH income
set i_rplno gis:property-value ? "GI_RPLNO" ;Rural HH with PLN and owner of a house
set i_rplnno gis:property-value ? "GI_RPLNNO" ;Rural HH with PLN and non owner of a house
set i_rnplno gis:property-value ? "GI_RNPLNO" ;Rural HH with non PLN and owner of a house
set i_rnplnno gis:property-value ? "GI_RNPLNNO" ;Rural HH with non PLN and non owner of a house
set i_rneo gis:property-value ? "GI_RNEO" ;rural HH with no electricity and owner of a house
set i_rneno gis:property-value ? "GI_RNENO" ;rural HH with no electricity and non owner of a house
;open renewable energy based electricity tariff
set new-tariff gis:property-value ? "FIT2017" ;load the lasted FIT which depend on regional electricity generation cost in 2016
set old-tariff gis:property-value ? "SUN_FIT" ;for scenario 1 only in PV analysis
]
;store growth value to a list that can be recalled anytime
;growth of HH
set GN_HHMin lput g_HH_min GN_HHMin
set GN_HHMax lput g_HH_max GN_HHMax
set GN_HHSD lput g_HH_sd GN_HHSD
set GN_HHAvg lput g_HH_avg GN_HHAvg
;set GN_HH lput g_hh GN_HH
;growth of urban HH income
set GI_UPLNO lput i_uplno GI_UPLNO
set GI_UPLNNO lput i_uplnno GI_UPLNNO
set GI_UNPLNO lput i_unplno GI_UNPLNO
set GI_UNPLNNO lput i_unplnno GI_UNPLNNO
set GI_UNEO lput i_uneo GI_UNEO
set GI_UNENO lput i_uneno GI_UNENO
;growth of rural HH income
set GI_RPLNO lput i_rplno GI_RPLNO
set GI_RPLNNO lput i_rplnno GI_RPLNNO
set GI_RNPLNO lput i_rnplno GI_RNPLNO
set GI_RNPLNNO lput i_rnplnno GI_RNPLNNO
set GI_RNEO lput i_rneo GI_RNEO
set GI_RNENO lput i_rneno GI_RNENO
;FIT list which may change each year
set FIT-new lput new-tariff FIT-new
set FIT-PV-old lput old-tariff FIT-PV-old
]
;for commercial investment
set ProjectYears 1
set InverterTime 1
end
to defaultvalue ;for commercial investment
set ProjectYears 1
set InverterTime 1 ; 1 inverter unit for 1 PV capacity set unit
set ruralPV-capacity 100
set p-PV100W 1500000 ; IDR/100 Wp user input
set c-PV100W 150000 ;OM costs for rural
set min-DP 30 ;for rural analysis
set PV-Price ( p-PV100W / ruralPV-capacity ) ;convert to IDR/Wp
set PV-FixOMCost 384.24 ;parameter of fix OM costs for PV urban (IDR/Wp/year) as in Table appendix
set PV-InverterPeriod 10 ;parameter of PV inverter replacement period (years)
set LoanShare ( 100 - min-DP ) ;parameter of loan share (%)
set PV-InverterPrice 8000000 ; in IDR, 1 unit inverter for 1 unit capacity set
set PV-Capacity 1500 ;Wp
set CostOfEquity 15 ;%/ year
set BankInterest 12 ;%/ year
set PV-CF 16 ;%/ year
set VAT 10 ;%
set PV-LoanPeriod 5 ;years, loan period for urban HH
set PV-LoanPeriod-R 0 ;load period for rural HH, use it if no financing sector in rural
;set PV-LoanPeriod-R PV-LoanPeriod ;load period for rural HH, use it if there is financing sector in rural
set PV-LifeTime 20 ;years
set DebtReserve 100 ;% of yearly installment
set Inflation 5.1 ;%/year
set DebtReserveInterest 1.3 ;%/year
set Escalation 1 ;%/year
set PV-CapSubsidy 0 ;%
set PV-InterestSubsidy 0 ;%
set ProdTaxCredit 0 ;IDR/kWh
set PV-PTCPeriod 0 ;year
set PV-Incentives 0
set PV-TaxHoliday 0
set PV_efficiency 0.3
set FIT 100
set CF_Threshold 3 ;%, minimum CF for charging battery in lamps
set Lifetime_Threshold 5 ;years, minimum lifetime guarantee asked by HH
set eff-interest 0 ;to reset purpose
set tariff-450 [ ]
set tariff-6600 [ ]
set G_ElecPrice 1.092476924 ;annual electricity growth rate 2010 - 2017
set record 0 ;to stop recording data in the last year
set i 0
while [ i <= 33 ] [
set tariff-450 lput 415 tariff-450
set tariff-6600 lput 790 tariff-6600
set i i + 1
]
end
to-report createHH [ number inc-avg inc-dev inc-min inc-max reg-type elec-type own-type invest ]
set ComList1 [ ]
foreach gis:feature-list-of basemap [
;obtain data from dbf file
ask patches gis:intersecting ? [
set HHnumber gis:property-value ? number
set i-avg gis:property-value ? inc-avg
set i-dev gis:property-value ? inc-dev
set i-min gis:property-value ? inc-min
set i-max gis:property-value ? inc-max
set n_province gis:property-value ? "Number"
]
;create agent of rural HH (1 agent represents 1000 HH) with income characteristic data in each province
set HH ( HHnumber / 1000)
create-ordered-households HH [
set income random-value i-avg i-dev i-min i-max ;income characteristics
set province n_province ;province ID
set region reg-type ;urban or rural
set E-type elec-type ; electricity from PLN or other
set HomeOwnership own-type ; the owner of house or not
set InvestPV invest ; PV investment status
]
set ComList1 lput count households with [
province = n_province and
region = reg-type and
E-type = elec-type and
HomeOwnership = own-type
] Comlist1
]
print years
print ComList1
;;for validation only, active it if it is needed
file-open "householdchecks.csv"
file-print ( word years " , " item 0 ComList1 " , " item 1 ComList1 " , " item 2 ComList1 " , " item 3 ComList1 " , " item 4 ComList1 " , " item 5 ComList1 " , " item 6 ComList1 " , "
item 7 ComList1 " , " item 8 ComList1 " , " item 9 ComList1 " , " item 10 ComList1 " , " item 11 ComList1 " , " item 12 ComList1 " , " item 13 ComList1 " , " item 14 ComList1 " , "
item 15 ComList1 " , " item 16 ComList1 " , " item 17 ComList1 " , " item 18 ComList1 " , " item 19 ComList1 " , " item 20 ComList1 " , " item 21 ComList1 " , " item 22 ComList1 " , "
item 23 ComList1 " , " item 24 ComList1 " , " item 25 ComList1 " , " item 26 ComList1 " , " item 27 ComList1 " , " item 28 ComList1 " , " item 29 ComList1 " , " item 30 ComList1 " , "
item 31 ComList1 " , " item 32 ComList1 )
file-close
report ComList1
;]
end
to-report random-value [ mid dev mmin mmax] ; random value of income characteristic is created based on 4 value,i.e.average, standard deviation, minimum and maximum income
let result random-normal mid dev ; function of random normal actually only consider average and standard deviation
if result < mmin or result > mmax ; therefore result of random value should be prevented to be lower or higher than bound min-max
[ report random-value mid dev mmin mmax] ;by resetting: delete unexpected values and re-run random procedure
report result ; give the result to patch-values
end
to code
;defaultvalue
ifelse (Rural-Threshold = "Grant" ) [
set PV-CapSubsidy-R 100
set PV-LoanPeriod-R 0
set PV-OMCost-R 0
set PV-LifeTime-rural 2 ;years
] [
set PV-CapSubsidy-R PV-CapSubsidy
set PV-OMCost-R c-PV100W
set PV-LifeTime-rural PV-LifeTime
]
ifelse years <= Tanalys [
PVRuralDecision ;to analyse investment feasibility for rural people
set PVCityCost CommercialInvestment PV-Price PV-CapSubsidy PV-InterestSubsidy PV-Capacity PV-CF PV-LoanPeriod PV-LifeTime PV-InverterPrice PV-Incentives PV-FixOMCost PV-PTCPeriod PV-TaxHoliday PV-InverterPeriod ;to analyse investment feasibility for urban people
PVInvestRural ;to calculate how many rural people investing RE
PVInvestCity ;to calculate how many urban people investing RE
Impacts ;to estimate the impact of RE investment to economy, environment etc
;to store the results on the spread sheet
file-open "Policy Simulation.csv"
file-print ( word years "," PV " , " ruralPVinHH " , " yearlyPVinRural "," urbanPVinHH "," yearlyPVinUrban "," economicImpact "," ghgPV_ops "," ghgPV_con "," alumPV "," enerPV "," steelPV ","
concPV "," PV-LoanPeriod "," PV-CapSubsidy-R "," PV-CapSubsidy "," PV-InterestSubsidy "," TcapSubsidy "," TinterestSubsidy "," SupplyCost-PV "," PVCityCost "," PVcapCost "," m-payment "," m-payment-R "," p-PV100W "," PV-Price ","
PV-Capacity "," ruralPV-capacity "," PV-OMCost-R "," AnnualCost "," InverterCost "," InverterReplacementUnit "," PV-InverterPrice "," rural-interest-subsidy "," urban-interest-subsidy "," FIT "," PV-CF "," InterestPayment ","
PVInvestCost_rural "," PVInvestCost_urban "," PVOMCost_rural "," PVOMCost_urban ) ;additional output to check errors
file-close
growth ;to simulate growth of HH, etc.
set tariff-6600 map [ ? * G_ElecPrice ] tariff-6600 ; the formula for list multiplication
show tariff-6600
;to reset annual variables
set SupplyCost-PV 0
]
[
;to display the results on the map
if ( GIS-display != GIS-code ) [ gis-map]
if record = 0 [
file-open "Number of PV.csv"
file-print ( word "rural" "," L_IruralWOE " , " L_ruralWOE " , " )
file-print ( word "urban" "," L_IUrbanPV " , " L_Urban " , " )
file-print ( word "C_FIT" "," C_FIT )
file-close
set record record + 1
]
]
end
to PVRuralDecision
ifelse PV-LoanPeriod-R = 0 [
set PVcapCost ( p-PV100W - ((PV-CapSubsidy-R / 100) * p-PV100W )) ;calculate loan by considering price p-OV100W and capital subsidy
set m-payment-R 0
set init-payment 0
set Rural-Loan 0
set eff-interest 0
] [
let PVcapCost_loan ( p-PV100W - ((PV-CapSubsidy-R / 100) * p-PV100W ))
set Rural-Loan ( PVcapCost_loan - (( min-DP / 100) * PVcapCost_loan )) ;loan is capital cost minus downpayment requirement by customers
set PVcapCost (( min-DP / 100) * PVcapCost_loan )
set eff-interest ((( BankInterest - PV-InterestSubsidy ) / 100 ) / 12 ) ;calculate effective interest that should be paid by considering the loan, commercial interest rate, and interest subsidy
ifelse ( eff-interest <= 0 ) [ set m-payment-R ( Rural-Loan / (12 * PV-LoanPeriod-R)) ] [ set m-payment-R monthly-payment Rural-Loan eff-interest PV-LoanPeriod-R ] ;calculate monthly payment with subsidy
ifelse ( BankInterest = 0 ) [ set init-payment-R ( Rural-Loan / (12 * PV-LoanPeriod-R)) ] [ set init-payment-R (monthly-payment Rural-Loan (((BankInterest) / 100 )/ 12) PV-LoanPeriod-R)] ;calculate monthly payment without subsidy. It is a function of loan, interest rate, load period
]
set rural-interest-subsidy (( init-payment-R - m-payment-R ) * PV-LoanPeriod * 12) ;calculate total payment paid by interest subsidy for a HH. This formula means the subsidy is paid once at the beginning year
end
to-report monthly-payment [ basicLoan interest period ] ;formula to calculate monthly payment based on literature on finance
set payment (basicLoan * (interest / (1 - (1 + interest) ^ ( -1 * ( period * 12)))))
report payment
end
to PVInvestRural
type "Analyzing PV investment by rural HH in " print years
set Prov 1
foreach gis:feature-list-of basemap[
ask patches gis:intersecting ? [
set thres-g gis:property-value ? "S_RU_ELEX" ;load thershold data of average electricity expenditure in each area
]
ifelse (Rural-Threshold = "10% income" ) [ set thres 0.1 ] [ set thres thres-g ] ;if "10%income" option is selected then use data of average electricity expenditure as a threshold for investment
if ( PV-CF >= CF_Threshold and PV-Lifetime >= Lifetime_Threshold )[ ;if CF and lifetime > thresholds then HH may invest
ask households with [
province = Prov and
region = 1 and
E-type = 2 and
HomeOwnership = 0 and
InvestPV = 0 and
LoanTime = 0 ;to avoid people with PV loan to buy another PV
]
[ ifelse (PV-LoanPeriod-R = 0)
[ if ( PVcapCost < ( 1 * income )) [
set InvestPV 1
set PVTime Years
]]
[ if ( PVcapCost < ( 1 * income )) [ ;a requirement that HH can pay the DP
if (( m-payment-R + (PV-OMCost-R / 12)) < (thres * income )) [ ;a requirement that HH can pay the installment
set InvestPV 1
set PVTime Years
set InterestToBank ( Rural-Loan * ( BankInterest / 100))
]]
]
]
];end if CF and lifetime > thresholds
set y count households with [ province = Prov and region = 1 and InvestPV = 1 ] ;HH investing PV
set x count households with [ province = Prov and region = 1 and E-type = 2] ;rural HH without electricity access
set z count households with [ province = Prov ] ;total HH in a province
let a count households with [ PVtime = years and province = Prov and region = 1 and InvestPV = 1 ] ;HH investing PV
;for validation purpose
set T_IruralWOE a + T_IruralWOE ;total accumulated PV investment in rural
;store final year data to a list
if years = Tanalys [
set L_IruralWOE lput y L_IruralWOE
set L_ruralWOE lput x L_ruralWOE
set L_totalHH lput z L_totalHH
]
set Prov Prov + 1
]
show T_IruralWOE
end
to-report CommercialInvestment [ Price capital-subsidy interest-subsidy Capacity CF Loan-period LifeTime InverterPrice Incentives FixOMCost PTCPeriod TaxHoliday InverterPeriod ] ;variables which are different for each technology
;for policy simulation
set CapCost ( Price * (1 - ( capital-subsidy / 100 )))
set LoanInterest ( BankInterest - interest-subsidy )
;basic investment consideration
set InvestCost ( CapCost * Capacity ) + ( PV-InverterPrice * (1 - ( capital-subsidy / 100 ))) ;OK
ifelse LifeTime = 0 [ set ElecProd 0 ] [ set ElecProd ( Capacity * ( CF / 100) * 365 * 24 / 1000 )] ;OK
ifelse Loan-period = 0 [
set Urban-Loan 0
set CRFLoan 1
] [
set Urban-Loan ( InvestCost * (LoanShare / 100))
ifelse LoanInterest = 0 [
set CRFLoan 0
;new to calculate interest subsidy in urban
set m-payment ( Urban-Loan / (12 * PV-LoanPeriod)) ;calculate monthly payment with subsidy
set init-payment ( Urban-Loan / (12 * PV-LoanPeriod)) ;calculate monthly payment without subsidy. It is a function of loan, interest rate, load period
] [
set CRFLoan ((( LoanInterest / 100) * ( 1 + ( LoanInterest / 100)) ^ Loan-period ) / ((( 1 + ( LoanInterest / 100)) ^ Loan-period ) - 1 ))
;new to calculate interest subsidy in urban
set m-payment monthly-payment Urban-Loan (((LoanInterest) / 100 )/ 12) PV-LoanPeriod ;calculate monthly payment with subsidy
set init-payment (monthly-payment Urban-Loan (((BankInterest) / 100 )/ 12) PV-LoanPeriod) ;calculate monthly payment without subsidy. It is a function of loan, interest rate, load period
]
set urban-interest-subsidy (( init-payment - m-payment ) * PV-LoanPeriod * 12) ;calculate total payment paid by interest subsidy for a HH per set of capacity. This formula means the subsidy is paid once at the beginning year
]
ifelse LifeTime = 0 [
set TotPresentWorth InvestCost
set CurrentGenCost TotPresentWorth
set ConstantGenCost TotPresentWorth
let ConstantRevReq TotPresentWorth
] [
set Equity ( InvestCost - Urban-Loan ) ;OK
ifelse CostOfEquity = 0 [ set CRFEquity 0 ] [ ;the 0 could be replaced by 0.04 though it is not realistic due to it should ~
set CRFEquity ((( CostOfEquity / 100) * ( 1 + ( CostOfEquity / 100)) ^ LifeTime ) / ((( 1 + ( CostOfEquity / 100)) ^ LifeTime ) - 1 )) ;OK , chek again the equation please ]
]
set EquityRecovery ( Equity * CRFEquity ) ;ok
set DebtPayment ( Urban-Loan * CRFLoan ) ;ok
set Deprecitation ( InvestCost * ( 1 / LifeTime ))
while [ ProjectYears <= LifeTime ] [
;cost and revenue except taxes
set AnnualCost (( FixOMCost * Capacity ) * ( 1 + ( Escalation / 100 )) ^ ( ProjectYears - 1)) ;ok
ifelse ProjectYears = 1 [
set DR (( DebtReserve / 100) * DebtPayment ) ;ok
set EquityInterest ( Equity * ( CostOfEquity / 100 )) ;ok
set DebtInterest ( Urban-Loan * ( LoanInterest / 100)) ;ok
] [
ifelse ProjectYears = Loan-period [ set DR (( DebtReserve / 100) * -1 * DebtPayment )] [ set DR 0 ]
set EquityInterest ( RemainingEquity * ( CostOfEquity / 100 )) ;ok
set DebtInterest ( RemainingDebt * ( LoanInterest / 100)) ;ok
]
set AnnualReserveInt ( DebtReserveInterest / 100 ) * (( DebtReserve / 100) * DebtPayment ) ;ok
ifelse ProjectYears = LifeTime [ set InVCost 0 ] [ ;inverter is bought on the first year and included in the capital costs. Its replacement cost is every InveterPeriod, except in the last lifetime year ;ok
ifelse InverterTime = InverterPeriod [
set InvCost InverterPrice
Set InverterTime 0
] [ set InvCost 0 ]
]
set OtherIncentives (( Incentives / 100) * AnnualCost ) ;ok
set EquityPaid ( EquityRecovery - EquityInterest ) ;ok
set DebtPaid ( DebtPayment - DebtInterest ) ;ok
ifelse ProjectYears = 1 [ ;to calculate remaining equity and debt each year ;ok
set RemainingEquity ( Equity - EquityPaid )
set RemainingDebt ( Urban-Loan - DebtPaid )
] [
set RemainingEquity ( RemainingEquity - EquityPaid )
set RemainingDebt ( RemainingDebt - DebtPaid )
]
if Loan-period < ProjectYears [
set DebtPaid 0
set DebtPayment 0
set RemainingDebt 0
set DebtInterest 0
set AnnualReserveInt 0
]
ifelse ProjectYears <= PTCPeriod [ set PTC ProdTaxCredit * ElecProd ] [ set PTC 0 ] ;schedule of production tax credit
ifelse ProjectYears <= TaxHoliday
[ set taxes 0]
[ set taxes ((( VAT / 100) / ( 1 - (VAT / 100))) * ( EquityInterest + EquityPaid + DebtPaid + DR - Deprecitation - PTC ))] ;total taxes, ok
set RevenueReq ( EquityRecovery + DebtPayment + AnnualCost + DR + taxes + InvCost - AnnualReserveInt - OtherIncentives )
set TotPresentWorth ( RevenueReq * (( 1 + ( CostOfEquity / 100 )) ^ ( - 1 * ProjectYears ))) + TotPresentWorth ;Total present worth of cashflow, ok
set ProjectYears ProjectYears + 1
set InverterTime InverterTime + 1
]
ifelse ElecProd = 0 [ set CurrentGenCost TotPresentWorth ] [ set CurrentGenCost (( TotPresentWorth * CRFEquity ) / ElecProd )] ;ok
ifelse Inflation = 0 [ set ConstantGenCost CurrentGenCost] [
set RealCostofEquity ((( 1 + ( CostofEquity / 100 )) / (1 + ( Inflation / 100 ))) - 1) ;real cost of equity (inflation adjusted) , ok
ifelse RealCostofEquity = 0 [ set CapRecFactor 0 ] [
set CapRecFactor (( RealCostofEquity * ( 1 + RealCostofEquity) ^ Lifetime ) / ((( 1 + RealCostOfEquity) ^ Lifetime ) - 1 ))
]
let ConstantRevReq ( TotPresentWorth * CapRecFactor) ;ok
ifelse ElecProd = 0 [ set ConstantGenCost ConstantRevReq ] [ set ConstantGenCost ( ConstantRevReq / ElecProd) ] ;ok
]
]
report ConstantGenCost ;ok
set ProjectYears 1
set InverterTime 1
set TotPresentWorth 0
end
to PVInvestCity
type "Analyzing PV investment by urban HH in " print years
set Prov 1
set counters 0
set y 0 ;needs a reset to avoid accumulation
;to decide threshold used
ifelse ( Urban-Threshold = "New FIT" ) [ set C_FIT FIT-new ] [
ifelse ( Urban-Threshold = "450 VA tariff" ) [ set C_FIT Tariff-450 ] [
ifelse (Urban-Threshold = "Old FIT") [ set C_FIT FIT-PV-old ] [ set C_FIT Tariff-6600 ] ]
]
foreach gis:feature-list-of basemap[
ask households with [
province = Prov and
region = 0 and
E-type = 0 and
HomeOwnership = 0 and
InvestPV = 0 and
LoanTime = 0 ;to avoid people with PV loan to buy another PV
] [
ifelse ( (FIT / 100) * ( item counters C_FIT ) >= PVCityCost ) [ ;if revenue is higher than requirement
ifelse (PV-LoanPeriod = 0) [ ;if loan is unavailable
if ( InvestCost < ( (DSR / 100) * income )) [
set InvestPV 1
set PVTime Years
set InvtTime Years
]];end if loan is unavailable
[ ;if loan is available
ifelse ( (DSR / 100) * income ) >= ( InvestCost * (1 - (LoanShare / 100))) ;if income is higher than equity
[ ifelse (( InvestCost * (1 - (LoanShare / 100))) = 0); to avoid division by zero because of 100% capital subsidy (InvestCost = 0), if it is happen then the HH is constrained by OM cost.
[ set InvestPV 1
set PVTime Years
set InvtTime Years
]; it is assumed if the technology is free given by govt then all HH will take it but the number is limited to 1 set
[ ; if capital subsidy is not 100%
ifelse (((DSR / 100) * income) > ((( DebtPayment + ( PV-FixOMCost * PV-Capacity ))/ 12) )) [;if monthly costs is lower than 30% of income then invest
set InvestPV 1
set PVTime Years
set InvtTime Years
set InterestToBank ( Urban-loan * ( BankInterest / 100))
set LoanTime Years
] ;end if monthly costs is lower than 30% of income
[ set InvestPV 0 ] ;if monthly costs is higher than 30% of income then not invest
] ;end if monthly costs is lower than 30% of income
];end if income is higher than equity
[ set InvestPV 0 ] ;if income is lower than equity
];end if loan is available
];end if revenue is higher than requirement
[ set InvestPV 0 ]
] ;end of command for urban HH
set y count households with [ province = Prov and region = 0 and InvestPV > 0 ] ;investing urban
set x count households with [ province = Prov and region = 0 ] ;total urban HH
;calculate values of PV electricity supply trascaction for IO analysis, it is calculated here because the fit is a regional-based value while no regional iteration in the impact procedure
ask households with [ province = Prov and region = 0 ] [ set urbanPVinHH ( InvestPV * 1000 ) ]
set SupplyCost-PV ((( FIT / 100) * ( item counters C_FIT ) * urbanPVinHH * ( PV-Capacity / 1000 ) * ( 24 * 365 ) * ( PV-CF / 100) * 1 / 1000000 ) + SupplyCost-PV ) ; transcation = tariff x electricity prod (PV number x 1000 x capacity x CF x convert to kWh from WP ). Convert to million IDR. It uses 24 hours because there is CF, representing efficiency and working hours!
;store final year data to a list
if years = Tanalys [
set L_IUrbanPV lput y L_IUrbanPV ;Urban investing PV
set L_Urban lput x L_Urban ;total urban
]
set Prov Prov + 1
set counters counters + 1
]
end
to impacts
;reset variables to avoid accumulation from previous years
set totalPVinHH 0
set yearlyPVinHH 0
set yearlyPVinRural 0
set yearlyPVinUrban 0
set ruralPVinHH 0
set urbanPVinHH 0
set InterestPayment 0
set InverterReplacementUnit 0
type "Analysing economic and environment impacts in " print years
;ask households [ set totalPVinHH totalPVinHH + InvestPV ]
ask households with [ PVTime = Years and Region = 1 ][ set yearlyPVinRural yearlyPVinRural + ( InvestPV * 1000 )] ;investment in each year
ask households with [ PVTime = Years and Region = 0 ][ set yearlyPVinUrban yearlyPVinUrban + ( InvestPV * 1000 )] ;investment in each year
ask households with [ Region = 1 ][ set ruralPVinHH ruralPVinHH + ( InvestPV * 1000 ) ] ;accumulation investment in all years
ask households with [ Region = 0 ][ set urbanPVinHH urbanPVinHH + ( InvestPV * 1000 )] ;accumulation in all years
set yearlyPVinHH yearlyPVinRural + yearlyPVinUrban
set TcapSubsidy (( yearlyPVinRural * (((PV-CapSubsidy-R / 100) * p-PV100W ))) + ( yearlyPVinUrban * (((PV-CapSubsidy / 100) * PV-Price * PV-Capacity )))) ;calculate yearly capital subsidy=f(total investing rural, percentage of capital subsidy, price of PV)
set TinterestSubsidy (( yearlyPVinRural * rural-interest-subsidy ) + ( yearlyPVinUrban * urban-interest-subsidy ));calculate yearly interest subsidy = f(total investing HH * unit of interest subsidy)
print TcapSubsidy
print TinterestSubsidy
;plot yearly government expenditure
set-current-plot "Govt-Expenditure" ;gambar data di plot OK!
set-current-plot-pen "PV-CapSubsidy" plot TcapSubsidy
set-current-plot-pen "PV-InterestSubsidy" plot TinterestSubsidy
;;calculate environment impacts from operating
set prodPV_rural ( ruralPVinHH * ruralPV-capacity * ( 24 * 365 ) * ( PV-CF / 100) / 1000000) ;electricity production = (number of new PV (=1000HH) * capacity (=100W)* operating hours/ years * efficiency) and then convert to MWH by dividing with 1000000
set prodPV_urban ( urbanPVinHH * PV-Capacity * ( 24 * 365 ) * ( PV-CF / 100) / 1000000)
set prodPV prodPV_rural + prodPV_urban
set ghgPV_ops ( prodPV * 148) ;GHG emission from PV operation in kg co2eq
;;calculate environment impact from new capacity/ construction
let PV_con_rural ( yearlyPVinRural * ruralPV-capacity / 1000000) ;newPV = (number of PV * 1000 scale * capacity ) and then convert to MWH by dividing with 1000000
let PV_con_urban ( yearlyPVinUrban * PV-Capacity / 1000000) ;newPV = (number of PV * 1000 scale * capacity ) and then convert to MWH by dividing with 1000000
let PV_con PV_con_rural + PV_con_urban
set ghgPV_con (PV_con * 4039116.90) ; GHG emission from PV construction in kg co2eq/MW
set steelPV ( PV_con * 103.50 ) ;steel input for PV construction in ton/MW
set alumPV (PV_con * 4.00 ) ;aluminium input for PV construction in ton/MW
set concPV (PV_con * 50.00 ) ;concrete input for PV construction in ton
set enerPV (PV_con * 491.58 ) ;energy input for PV construction in GJ
;plot environment impacts, data from Hertwich et al (2015)
set-current-plot "Environment"
set-current-plot-pen "aluminium" plot alumPV
set-current-plot-pen "energy" plot enerPV
set-current-plot-pen "ghg" plot ( ghgPV_con + ghgPV_ops) / 1000 ;to convert unit kg to unit ton
set-current-plot-pen "steel" plot steelPV
set-current-plot-pen "concrete" plot concPV
;IO analysis
;capital cost is paid at first year while OM costs is paid annually during lifetime
set PVInvestCost_rural (( p-PV100W * yearlyPVinRural ) / 1000000 ) ;in million IDR
set PVInvestCost_urban (( PV-Price * PV-Capacity * yearlyPVinUrban ) / 1000000 )
set PVOMCost_rural ((PV-OMCost-R * ruralPVinHH ) / 1000000 ) ;OM cost expenditure in PV rural
set PVOMCost_urban ((AnnualCost * urbanPVinHH ) / 1000000 ) ;OM cost expenditure in PV urban
;to calculate costs of inverter replacement
ask households with [ InvtTime = ( years - PV-InverterPeriod ) and Region = 0 and InvestPV > 0 ] [ set InverterReplacementUnit InverterReplacementUnit + InvestPV ] ;how many inverter unit should be replaced in each year.
set InverterCost ( InverterReplacementUnit * PV-InverterPrice / 1000000 )
set PV PVInvestCost_rural + PVInvestCost_urban + PVOMCost_rural + PVOMCost_urban + SupplyCost-PV + InverterCost ;PV value paid by HH and govt. Interest rate is not counted because it should go to financial sector not PV sector. It is divided by 1 million because IO table is stated in million IDR
;interest rate into banking sector is paid annually during loan period
ask households [ set InterestPayment InterestPayment + ( InterestToBank * 1000 / 1000000 ) ] ;calculate annual interest paid to the bank
set economicImpact ( IO-analysis Industry Services Coal CCGT OCGT Geothermal Hydro MHP Wind Waste Biomas PV Diesel InterestPayment ) ;1000 HH and convert to million IDR
set upd_economicImpact upd_economicImpact + economicImpact ;store economic impact for accumulated impacts
end
to gis-map ; procedure to display data on the map
;choose variable that will be displayed from user interface
if (GIS-code = "Rural w/o electricity") [ set mapData ( displayMap_normal L_ruralWOE L_totalHH )]
if (GIS-code = "PV in Rural Households") [ set mapData ( displayMap_normal L_IruralWOE L_ruralWOE )]
if (GIS-code = "PV in Urban Households") [ set mapData ( displayMap_normal L_IUrbanPV L_Urban )]
set GIS-display GIS-code
end
to-report displayMap_normal [ map1 map2 ]
set i 0
set L_dataValue [ ]
set L_maxValue [ ]
foreach gis:feature-list-of basemap [
set L_dataValue item i map1
set L_maxValue item i map2
ifelse L_maxValue = 0 [ set patch-code 2] [ set patch-code (( L_dataValue / L_maxValue ) * 40) ];to display percentage of ruralHH using PV in a province, "ifelse" needed to avoid division by zero, i.e. in Jakarta
set patch-value scale-color (red - 5) patch-code -20 50 ;set color value
gis:set-drawing-color patch-value gis:fill ? 1.0
set i i + 1
if i = 33 [
set i 0
report i
]
]
end
to growth
set GN_HH [ ] ;reset list of total growth rate
set GN_HHUrban [ ] ;reset list of urban growth rate
set GN_HHRural [ ] ;reset list of rural growth rate
foreach gis:feature-list-of basemap [ ;obtain data from dbf file
ask patches gis:intersecting ? [
set g_HH_min gis:property-value ? "G_HH_MIN" ; min growth of HH number
set g_HH_max gis:property-value ? "G_HH_MAX" ; max growth of HH number
set g_HH_sd gis:property-value ? "G_HH_SD" ;SD growth of HH number
set g_HH_avg gis:property-value ? "G_HH_AVG" ;average growth of HH number
]
set GN_HH lput random-value g_HH_avg g_HH_sd g_HH_min g_HH_max GN_HH
]
set i 0
set years years + 1
ifelse years > Tanalys [ ] [
type "Analysing household and income growth in " print years
while [ i < 33 ] [
;ifelse i < 33 [
set GN_HHUrban lput (( item (years - 2010) urbanization ) * ( item i GN_HH )) GN_HHUrban
set GN_HHRural lput (( 1 - item (years - 2010) urbanization ) * ( item i GN_HH )) GN_HHRural
;output-show ( 1 - item (years - 2010) urbanization )
set i i + 1
]
;urban HH growth
let gHHUrban-PLN-owner YearlyGrowth GN_HHUrban GI_UPLNO "IM_UPLNO" "ID_UPLNO" "IMI_UPLNO" "IMA_UPLNO" 0 0 0 ;urban HH with PLN and owner of a house
let gHHUrban-PLN-nonowner YearlyGrowth GN_HHUrban GI_UPLNNO "IM_UPLNNO" "ID_UPLNNO" "IMI_UPLNNO" "IMA_UPLNNO" 0 0 1 ;urban HH with PLN and non owner of a house
let gHHUrban-nonPLN-owner YearlyGrowth GN_HHUrban GI_UNPLNO "IM_UNPLNO" "ID_UNPLNO" "IMI_UNPLNO" "IMA_UNPLNO" 0 1 0 ;urban HH with non PLN and owner of a house
let gHHUrban-nonPLN-nonowner YearlyGrowth GN_HHUrban GI_UNPLNNO "IM_UNPLNNO" "ID_UNPLNNO" "IMI_UNPLNN" "IMA_UNPLNN" 0 1 1 ;urban HH with non PLN and non owner of a house
let gHHUrban-nonElect-owner YearlyGrowth GN_HHUrban GI_UNEO "IM_UNEO" "ID_UNEO" "IMI_UNEO" "IMA_UNEO" 0 2 0 ;urban HH with no electricity and owner of a house
let gHHUrban-nonElect-nonowner YearlyGrowth GN_HHUrban GI_UNENO "IM_UNENO" "ID_UNENO" "IMI_UNENO" "IMA_UNENO" 0 2 1 ;urban HH with no electricity and non owner of a house
;rural HH growth
let gHHRural-PLN-owner YearlyGrowth GN_HHRural GI_RPLNO "IM_RPLNO" "ID_RPLNO" "IMI_RPLNO" "IMA_RPLNO" 1 0 0 ;Rural HH with PLN and owner of a house
let gHHRural-PLN-nonowner YearlyGrowth GN_HHRural GI_RPLNNO "IM_RPLNNO" "ID_RPLNNO" "IMI_RPLNNO" "IMA_RPLNNO" 1 0 1 ;Rural HH with PLN and non owner of a house
let gHHRural-nonPLN-owner YearlyGrowth GN_HHRural GI_RNPLNO "IM_RNPLNO" "ID_RNPLNO" "IMI_RNPLNO" "IMA_RNPLNO" 1 1 0 ;Rural HH with non PLN and owner of a house
let gHHRural-nonPLN-nonowner YearlyGrowth GN_HHRural GI_RNPLNNO "IM_RNPLNNO" "ID_RNPLNNO" "IMI_RNPLNN" "IMA_RNPLNN" 1 1 1 ;Rural HH with non PLN and non owner of a house
let gHHRural-nonElect-owner YearlyGrowth GN_HHRural GI_RNEO "IM_RNEO" "ID_RNEO" "IMI_RNEO" "IMA_RNEO" 1 2 0 ;Rural HH with no electricity and owner of a house
let gHHRural-nonElect-nonowner YearlyGrowth GN_HHRural GI_RNENO "IM_RNENO" "ID_RNENO" "IMI_RNENO" "IMA_RNENO" 1 2 1 ;Rural HH with no electricity and non owner of a house
]
end
to-report YearlyGrowth [ num-growth inc-growth inc-avg inc-dev inc-min inc-max reg-type elec-type own-type ]
set prov 1
set counters 0
set ComList1 [ ]
set ComList2 [ ]
foreach gis:feature-list-of basemap[
;growth of income of existing population
ask households with [
province = prov and
region = reg-type and ;urban or rural
E-type = elec-type and ; electricity from PLN or other
HomeOwnership = own-type ; the owner of house or not
] [ set income income * (( 1 + item counters inc-growth ) ) ]
;HH growth
set HHType count households with [
province = prov and
region = reg-type and ;urban or rural
E-type = elec-type and ; electricity from PLN or other
HomeOwnership = own-type and ; the owner of house or not
InvestPV = 0 ;to ensure the HH growth is only for HH without PV investment (if not HH with PV may diminish because of random negative growth while PV installment not paid yet)
]
set ComList2 lput HHType ComList2
let NewruralWOE round ( HHType * (( 1 + item counters num-growth ) )) ;make it depending on the years
;kill random HH if growth negative, create new HH if growth positive
ifelse NewruralWOE < HHType
[ ;if condition
ask n-of ( HHType - NewruralWOE) households with [
province = prov and
region = reg-type and ;urban or rural
E-type = elec-type and ; electricity from PLN or other
HomeOwnership = own-type and; the owner of house or not
InvestPV = 0 ;to ensure the HH growth is only for HH without PV investment (if not HH with PV may diminish because of random negative growth while PV installment not paid yet)
][ die ]
][ ;else condition
ask patches gis:intersecting ? [
set i-avg gis:property-value ? inc-avg
set i-dev gis:property-value ? inc-dev
set i-min gis:property-value ? inc-min
set i-max gis:property-value ? inc-max
]
;create agent of rural HH (1 agent represents 1000 HH) with income characteristic data in each province
create-ordered-households ( NewruralWOE - HHType ) [
set income random-value i-avg i-dev i-min i-max ;income characteristics
set province prov ;province ID
set region reg-type ;urban or rural
set E-type elec-type ; electricity from PLN or other
set HomeOwnership own-type ; the owner of house or not
]
]
;;===for verify number of HH in the model and actual HH==
set zHH count households with [ ;for checking purpose
province = prov and
region = reg-type and ;urban or rural
E-type = elec-type and ; electricity from PLN or other
HomeOwnership = own-type ; the owner of house or not
]
;;to reset PV if PV reach lifetime
ask households with [
region = 1 and
InvestPV >= 1 and
PVtime = ( years - PV-LifeTime-rural )
] [
set InvestPV 0
]
ask households with [
region = 0 and
InvestPV >= 1 and
PVtime = ( years - PV-LifeTime )
] [
set InvestPV 0
]
;reset inverter lifetime
ask households with [
region = 0 and
InvestPV >= 1 and
InvtTime < ( years - PV-InverterPeriod ) ;this is a trick to reset inverter lifetime.
] [
set InvtTime years - 1 ]
;;to reset interest payment if loan period end
ask households with [
region = 1 and
InterestToBank >= 0 and
LoanTime = ( Years - PV-LoanPeriod-R )
] [
set InterestToBank 0
set LoanTime 0 ] ;loan time still need to reset to avoid HH with loan to buy another PV
ask households with [
region = 0 and
InterestToBank >= 0 and
LoanTime = ( Years - PV-LoanPeriod )
] [
set InterestToBank 0
set LoanTime 0 ]
set ComList1 lput zHH ComList1
set prov prov + 1
set counters counters + 1
]
print years
print ComList1 ;for checking number of HH
report counters
end
to-report IO-analysis [ IndSector ServSector PLTU PLTG-C PLTG-O PLTP PLTA PLTMH PLTB PLTSa PLTBio PLTS PLTD Bank ]
set outputElectricity matrix:make-constant 14 1 0 ;make 1x14 matrix of gross business surplus, containing 0 in each entry
;update Final demand of electricity matrix from electricity production
matrix:set-row outputElectricity 0 (list IndSector)
matrix:set-row outputElectricity 1 (list ServSector)
matrix:set-row outputElectricity 2 (list PLTU) ;put input PLTU-M to row 2 in I-O matrix
matrix:set-row outputElectricity 3 (list PLTG-C)
matrix:set-row outputElectricity 4 (list PLTG-O)
matrix:set-row outputElectricity 5 (list PLTP)
matrix:set-row outputElectricity 6 (list PLTA)
matrix:set-row outputElectricity 7 (list PLTMH)
matrix:set-row outputElectricity 8 (list PLTB)
matrix:set-row outputElectricity 9 (list PLTSa)
matrix:set-row outputElectricity 10 (list PLTBio)
matrix:set-row outputElectricity 11 (list PLTS)
matrix:set-row outputElectricity 12 (list PLTD)
matrix:set-row outputElectricity 13 (list Bank)
set IO-effect matrix:times io-matrix outputElectricity ;multiply matrix
;sum total effect in the simulation results
set totalEffect sum matrix:get-column IO-effect 0
report totalEffect
end
@#$#@#$#@
GRAPHICS-WINDOW
453
10
1155
388
-1
-1
1.081
1
10
1
1
1
0
0
0
1
0
640
0
320
0
0
1
ticks
30.0
BUTTON
211
23
274
56
Run
code
T
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
OUTPUT
1161
11
1401
166
11
CHOOSER
1161
172
1400
217
GIS-code
GIS-code
"Rural w/o electricity" "PV in Urban Households" "PV in Rural Households"
0
PLOT
5
629
307
831
Govt-Expenditure
Years
IDR
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"PV-CapSubsidy" 1.0 1 -16777216 true "" ""
"PV-InterestSubsidy" 1.0 1 -2139308 true "" ""
TEXTBOX
370
20
520
38
PV prices (IDR)
11
0.0
1
SLIDER
10
71
182
104
PV-CapSubsidy
PV-CapSubsidy
0
100
0
1
1
%
HORIZONTAL
SLIDER
9
105
182
138
PV-InterestSubsidy
PV-InterestSubsidy
0
100
0
1
1
%
HORIZONTAL
SLIDER
8
140
183
173
PV-LoanPeriod
PV-LoanPeriod
0
10
5
1
1
Years
HORIZONTAL
MONITOR
312
519
491
564
Monthly cost (IDR)
m-payment + (c-PV100W / 12)
0
1
11
TEXTBOX
370
98
520
116
OM costs (IDR)\n
11
0.0
1
CHOOSER
1162
221
1401
266
Rural-Threshold
Rural-Threshold
"Grant" "Average Electricity Expenditure" "10% income"
0
INPUTBOX
368
36
438
96
p-PV100W
1500000
1
0
Number
INPUTBOX
368
113
438
173
c-PV100W
150000
1
0
Number
INPUTBOX
366
195
439
255
BankInterest
12
1
0
Number
TEXTBOX
370
180
520
198
Interest rate(%)
11
0.0
1
PLOT
6
416
307
599
Environment
NIL
NIL
0.0
10.0
0.0
10.0
true
true
"" ""
PENS
"aluminium" 1.0 0 -16777216 true "" ""
"energy" 1.0 0 -955883 true "" ""
"ghg" 1.0 0 -14835848 true "" ""
"steel" 1.0 0 -7500403 true "" ""
"concrete" 1.0 0 -2674135 true "" ""
MONITOR
312
574
492
619
Economic Impact (million IDR)
upd_economicImpact
0
1
11
MONITOR
8
353
101
398
Analysis Years
years - 1
0
1
11
MONITOR
312
417
491
462
PV Investment Costs (IDR)
InvestCost
0
1
11
MONITOR
313
677
493
722
Subsidy Payment (IDR/month/HH)
sub-payment
0
1
11
MONITOR
313
467
491
512
Down Payment (IDR)
PVcapCost
0
1
11
INPUTBOX
365
276
440
336
min-DP
30
1
0
Number
TEXTBOX
370
262
520
280
Min DP (%)
11
0.0
1
BUTTON
12
23
100
56
Data Load
Load
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
TEXTBOX
456
399
1146
427
Note: Lighter color means higher values and darker values means lower values
11
0.0
1
SLIDER
9
175
183
208
ProdTaxCredit
ProdTaxCredit
0
100
0
1
1
IDR/kWh
HORIZONTAL
SLIDER
9
210
183
243
PV-PTCPeriod
PV-PTCPeriod
0
20
0
1
1
Years
HORIZONTAL
SLIDER
9
244
182
277
PV-Incentives
PV-Incentives
0
100
0
1
1
% OM Costs
HORIZONTAL
SLIDER
9
278
180
311
PV-TaxHoliday
PV-TaxHoliday
0
20
0
1
1
Years
HORIZONTAL
BUTTON
103
23
208
56
Default Value
DefaultValue
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL
1
MONITOR
313
626
491
671
Generation cost of urban PV (IDR)
PVCityCost
0
1
11
SLIDER
9
316
182
349
FIT
FIT
50
200
100
5
1
% of FIT in 2017
HORIZONTAL
TEXTBOX
19
10
72
32
Step 1
11
0.0
1
TEXTBOX
105
10
255
28
Step 2 (if needed)
11
0.0
1
TEXTBOX
214
10
364
28
Step 3
11
0.0
1
TEXTBOX
13
401
163
419
Environmental Impacts
11
0.0
1
TEXTBOX
11
613
161
631
Government Subsidy
11
0.0
1
CHOOSER
1163
273
1401
318
Urban-Threshold
Urban-Threshold
"Old FIT" "New FIT" "450 VA tariff" "6600 VA tariff"
1
INPUTBOX
364
345
440
405
PV-box
100
1
0
Number
MONITOR
317
745
507
790
NIL
TotPresentWorth
17
1
11
INPUTBOX
245
116
316
176
DSR
30
1
0
Number
TEXTBOX
247
97
397
115
Debt Service Ratio (%)
11
0.0
1
@#$#@#$#@
## WHAT IS IT?
This model is called ARISE (Agent-based Renewables model for Indonesia Sustainable Energy).
(1) It displays ratio of rural household (HH) without electricity and total rural HH in each province in Indonesia. Lighter color means smaller ratio.
(2) It simulates how rural HH without electricity investx photovoltaic (PV) 100 Wp.
(3) It simulates how urban HH investx PV 1500 Wp,
The investment consider capital subsidy, interest subsidy, loan period and HH's income characteristics. Lighter color means higher PV investment. It then calculates total subsidy needed, environmental impact and economic impact.
## HOW IT WORKS
In initial process, ARISE opens spatial database and Leontief inverse matrix.
ARISE calculate monthly installment of PV investment by using PV price, PV operational cost, bank interest rate, capital subsidy, interest subsidy and loan period.
If the monthly installment is lower than the threshold then the rural will buy the PV. The threshold could be (1) 30% income of rural HH without electricity or (2) average monthly electricity expenditure by rural HH with electricity in each related province. Income of rural HH is randomly determined based on income distribution of rural HH without electricity in each province. The two thresholds used consider (1) maximum monthly installment by bank (which is 30% income) and (2) installment threshold that 100% will be accepted by rural HH (which is average expenditure) because this threshold has been accepted by their neighbours.
Investment in urban area occurs if the profit from PV investment is higher than the revenue requirement.
Environmental impacts are calculated from the multiplication of environmental factors to electricity produced and new capacity. Economic impact is calculated by using input output (IO) analysis, which is constructed from Indonesia's Input Output Table 2010. New final demands in the IO are the values of investment, the values of OM cost, and the values of loan interest payment.
## HOW TO USE IT
(1) Click "Data Load" button.It will open all data required.
(2) Click "Default Value" button. It will set all paramater values to default. If needed, You can change the values in the "defaultvalue" procedure. Some parameters could be changed directly at input boxes in the user interface.
(3) Set policy scenarios by using the sliders provided.
(a) PV-CapSubsidy: The values of capital subsidy for PV investment.
(b) PV-InterestSubsidy: The values of interest subsidy for PV investment.
(c) PV-LoanPeriod: Loan period allowed for PV investment. Zero loan period means no loan scheme provided for the PV investment.
(d) ProdTaxCredit: Production Tax Credit for PV investment in urban area.
(e) PV-PTCPeriod: Period for the Production Tax Credit
(f) PV-Incentives: Other incentives for PV investment. This slider allows to simulate non-exist policy which may influence the operational and maintenance cost of PV use.
(g) PV-TaxHoliday: Tax holiday period for PV investment in urban area.
(h) FIT: Changes of previous feed-in tariff in Indonesia.
(4) Click "Run" button to start the simulation.
(5) Evaluate the result for monthly costs (in IDR box), total economy impact (in totalEffect box), electricity production from PV (in prodPV box), environmental impacts (in Environment box) and government expenditures (in Govt-Expenditure box).
(6) The map shows thematic maps. In GIS-code, choose which indicator that will be displayed. The avaiable indicators are:
(a) rural households without electricity access;
(b) PV investments in rural area;
(c) PV investments in urban area.
Lighter color means higher PV investment ratio.
(7) Further analysis by using three generated csv files.
## THINGS TO NOTICE
More descriptions of ARISE are available at the Agent-based Renewables model for Indonesia Sustainable Energy (ARISE) – Manual Version 1: Solar Energy Policy. pdf.
## CREDITS AND REFERENCES
al Irsyad, M.I., Halog, A., and Nepal, R., 2016. ARISE PV Version 1. University of Queensland, Australia.
@#$#@#$#@
default
true
0
Polygon -7500403 true true 150 5 40 250 150 205 260 250
airplane
true
0
Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15
arrow
true
0
Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150
box
false
0
Polygon -7500403 true true 150 285 285 225 285 75 150 135
Polygon -7500403 true true 150 135 15 75 150 15 285 75
Polygon -7500403 true true 15 75 15 225 150 285 150 135
Line -16777216 false 150 285 150 135
Line -16777216 false 150 135 15 75
Line -16777216 false 150 135 285 75
bug
true
0
Circle -7500403 true true 96 182 108
Circle -7500403 true true 110 127 80
Circle -7500403 true true 110 75 80
Line -7500403 true 150 100 80 30
Line -7500403 true 150 100 220 30
butterfly
true
0
Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240
Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240
Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163
Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165
Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225
Circle -16777216 true false 135 90 30
Line -16777216 false 150 105 195 60
Line -16777216 false 150 105 105 60
car
false
0
Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180
Circle -16777216 true false 180 180 90
Circle -16777216 true false 30 180 90
Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89
Circle -7500403 true true 47 195 58
Circle -7500403 true true 195 195 58
circle
false
0
Circle -7500403 true true 0 0 300
circle 2
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
cow
false
0
Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167
Polygon -7500403 true true 73 210 86 251 62 249 48 208
Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123
cylinder
false
0
Circle -7500403 true true 0 0 300
dot
false
0
Circle -7500403 true true 90 90 120
face happy
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240
face neutral
false
0
Circle -7500403 true true 8 7 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Rectangle -16777216 true false 60 195 240 225
face sad
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183
fish
false
0
Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166
Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165
Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60
Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166
Circle -16777216 true false 215 106 30
flag
false
0
Rectangle -7500403 true true 60 15 75 300
Polygon -7500403 true true 90 150 270 90 90 30
Line -7500403 true 75 135 90 135
Line -7500403 true 75 45 90 45
flower
false
0
Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135
Circle -7500403 true true 85 132 38
Circle -7500403 true true 130 147 38
Circle -7500403 true true 192 85 38
Circle -7500403 true true 85 40 38
Circle -7500403 true true 177 40 38
Circle -7500403 true true 177 132 38
Circle -7500403 true true 70 85 38
Circle -7500403 true true 130 25 38
Circle -7500403 true true 96 51 108
Circle -16777216 true false 113 68 74
Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218
Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240
house
false
0
Rectangle -7500403 true true 45 120 255 285
Rectangle -16777216 true false 120 210 180 285
Polygon -7500403 true true 15 120 150 15 285 120
Line -16777216 false 30 120 270 120
leaf
false
0
Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195
Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195
line
true
0
Line -7500403 true 150 0 150 300
line half
true
0
Line -7500403 true 150 0 150 150
pentagon
false
0
Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120
person
false
0
Circle -7500403 true true 110 5 80
Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90
Rectangle -7500403 true true 127 79 172 94
Polygon -7500403 true true 195 90 240 150 225 180 165 105
Polygon -7500403 true true 105 90 60 150 75 180 135 105
plant
false
0
Rectangle -7500403 true true 135 90 165 300
Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285
Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285
Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210
Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135
Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135
Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60
Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90
sheep
false
15
Circle -1 true true 203 65 88
Circle -1 true true 70 65 162
Circle -1 true true 150 105 120
Polygon -7500403 true false 218 120 240 165 255 165 278 120
Circle -7500403 true false 214 72 67
Rectangle -1 true true 164 223 179 298
Polygon -1 true true 45 285 30 285 30 240 15 195 45 210
Circle -1 true true 3 83 150
Rectangle -1 true true 65 221 80 296
Polygon -1 true true 195 285 210 285 210 240 240 210 195 210
Polygon -7500403 true false 276 85 285 105 302 99 294 83
Polygon -7500403 true false 219 85 210 105 193 99 201 83
square
false
0
Rectangle -7500403 true true 30 30 270 270
square 2
false
0
Rectangle -7500403 true true 30 30 270 270
Rectangle -16777216 true false 60 60 240 240
star
false
0
Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108
target
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
Circle -7500403 true true 60 60 180
Circle -16777216 true false 90 90 120
Circle -7500403 true true 120 120 60
tree
false
0
Circle -7500403 true true 118 3 94
Rectangle -6459832 true false 120 195 180 300
Circle -7500403 true true 65 21 108
Circle -7500403 true true 116 41 127
Circle -7500403 true true 45 90 120
Circle -7500403 true true 104 74 152
triangle
false
0
Polygon -7500403 true true 150 30 15 255 285 255
triangle 2
false
0
Polygon -7500403 true true 150 30 15 255 285 255
Polygon -16777216 true false 151 99 225 223 75 224
truck
false
0
Rectangle -7500403 true true 4 45 195 187
Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194
Rectangle -1 true false 195 60 195 105
Polygon -16777216 true false 238 112 252 141 219 141 218 112
Circle -16777216 true false 234 174 42
Rectangle -7500403 true true 181 185 214 194
Circle -16777216 true false 144 174 42
Circle -16777216 true false 24 174 42
Circle -7500403 false true 24 174 42
Circle -7500403 false true 144 174 42
Circle -7500403 false true 234 174 42
turtle
true
0
Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210
Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105
Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105
Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87
Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210
Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99
wheel
false
0
Circle -7500403 true true 3 3 294
Circle -16777216 true false 30 30 240
Line -7500403 true 150 285 150 15
Line -7500403 true 15 150 285 150
Circle -7500403 true true 120 120 60
Line -7500403 true 216 40 79 269
Line -7500403 true 40 84 269 221
Line -7500403 true 40 216 269 79
Line -7500403 true 84 40 221 269
wolf
false
0
Polygon -16777216 true false 253 133 245 131 245 133
Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105
Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113
x
false
0
Polygon -7500403 true true 270 75 225 30 30 225 75 270
Polygon -7500403 true true 30 75 75 30 270 225 225 270
@#$#@#$#@
NetLogo 5.3.1
@#$#@#$#@
@#$#@#$#@
@#$#@#$#@
defaultvalue
PVRuralDecision
PVcapCost
m-payment + (c-PV100W / 12)
init-payment + (c-PV100W / 12)
loan
sub-payment
eff-interest
@#$#@#$#@
@#$#@#$#@
default
0.0
-0.2 0 0.0 1.0
0.0 1 1.0 0.0
0.2 0 0.0 1.0
link direction
true
0
Line -7500403 true 150 150 90 180
Line -7500403 true 150 150 210 180
@#$#@#$#@
0
@#$#@#$#@
PK )LfL#r- - data/map.shp '
fuW@vxu%:,a@wa@ ^ !tD\@n!MX\@~*h # . 2 7 6\@H۞!
+\@H۞!6\@QnV!6\@H۞!Xp9\@'s!3q:\@"Eq!6\@M\Kv!!G[\@;i{!Xp9\@'s!NYh\@M^!d\@i$f!42\@:k!\!\@#[i!NYh\@M^!0%\@_[!ؚ?g\@$sj!@\@_!J8\@x !m\@Չ!\@qX!\@r!/0F\@cQ!f\@p !XQ\@D!Tz\@B!\@Ͻ!\@S1~!L\@ y}!_%{\@HV_w!RLk\@M\Kv!\@8Xp!ga\@O$X!\@_[!]#\@YlW!0%\@_[!\!\@ݒ1b!@y[xL\@T`!̽@\@tDs\! #'`\@ ?Y!\@ yS!^v7\@+{S!\@C}T!ZL\@W!^v7\@vSX!s7\@a{a!\!\@ݒ1b!}\@p5 j\]\@#8 }\@ oU9 }\@p5 -
V\@*&'2 r\@̯G/ \@/ m+\@:3 -
V\@*&'2 n)X\@у7 7`\@у7 {Mء\@y