You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I want to set starting values for Array variables. Can I do this in one line, or does it need to happen individually? Below is the code and the Error report. I noted where the first error is. If I should post this issue differently please let me know.
I am also wondering if I can set starting value for expressions. See lines 101-105.
############ The File #####################using Complementarity, JuMP
############# Parameters ####################
regions = ["ercot", "ferc"]
states = ["summer", "winter", "vortex"] # states of nature
σ =0.25# degree of relative risk aversion
esub =0.25# elasticity of subsitution between electricity and other goods
c0 =31# reference aggregate expenditures - electricity plus other goods
days = [300, 64, 1] # state occurance - days per year
πs =Dict(zip(states, days./365)) # state probabilities
maint = [0.40.8] # benchmark maintenance level
m0 =Dict(zip(regions, maint))
θ =1/c0 # energy value share
scale_factor = [00] # maintenance cost scale factor
α =Dict(zip(regions, scale_factor))
γ =0###################### Shock Parameters ######################
d_shock = [ 1.01.21.2 ; # electricity demand shocks1.01.01.5 ]
d_shock1 = [ 1.01.01.0 ; # no electricity demand shocks - base case1.01.01.0 ]
λ =Dict()
for i in1:length(regions), j in1:length(states) # demand shock table
λ[regions[i], states[j]] = d_shock1[i,j]
end
w_shock = [ 0.00.20.25 ; # weather shocks0.00.00.25 ]
w_shock0 = [ 0.00.00.0 ; # no weather shocks - base case0.00.00.0 ]
w =Dict()
for i in1:length(regions), j in1:length(states) # weather shock table
w[regions[i], states[j]] = w_shock0[i,j]
end################### The Model ##########################
m =MCPModel() # declare model################# Variables #################@variable(m, K[r in regions] >=0) # capacity@variable(m, M[r in regions] >=0) # maintenance@variable(m, PE[r in regions, s in states] >=0) # wholesale price@variable(m, PR[r in regions] >=0) # electricity generation resource@variable(m, X[r in regions, s in states] >=0) # sales to other regions@variable(m, PX[s in states]) # traded electricity price#################### Equations #############################@NLexpression(m, PC[r in regions, s in states],
(θ * (PE[r,s] * λ[r,s])^(1-esub) +1-θ)^(1/(1-esub)))
@NLexpression(m, PEU[r in regions],
sum(πs[s] * PC[r,s]^(1-σ) for s in states)^(1/(1-σ)))
@NLexpression(m, EU[r in regions],
1/PEU[r])
@NLexpression(m, C[r in regions, s in states],
EU[r] * (PEU[r]/PC[r,s])^σ)
@NLexpression(m, CM[r in regions],
K[r] * α[r]/(1-γ) * (1-(1-M[r])^(1-γ)))
#################################################@mapping(m, profit_K[r in regions],
sqrt(PR[r]) -sum(πs[s] * PE[r,s] * (1-w[r,s]*(1-M[r])) for s in states))
@mapping(m, profit_M[r in regions],
α[r]/(1-M[r])^γ -sum(πs[s] * PE[r,s] * w[r,s] for s in states))
@mapping(m, profit_X[r in regions, s in states],
PE[r,s] - PX[s])
@mapping(m, market_PE[r in regions, s in states],
K[r] * (1-w[r,s]*(1-M[r])) -
C[r,s] * λ[r,s] * (PC[r,s]/(PE[r,s]*λ[r,s]))^esub + X[r,s])
@mapping(m, market_PR[r in regions],
0.5* (1- K[r]/sqrt(PR[r])))
@mapping(m, market_PX[s in states],
sum(X[r,s] for r in regions))
############## Assign Complementarity #################@complementarity(m, profit_K, K)
@complementarity(m, profit_M, M)
@complementarity(m, profit_X, X)
@complementarity(m, market_PE, PE)
@complementarity(m, market_PR, PR)
@complementarity(m, market_PX, PX)
############## Starting Variable Values ######################set_start_value.(K, [1.01.0]) #<============== THIS IS WHERE THE ERROR ISset_start_value.(PE, [1.01.01.0; 1.01.01.0])
set_start_value.(PR, [1.01.0])
fix.(M, [0.00.0]; force =true)
fix.(X, [0.00.00.0; 0.00.00.0]; force =true)
fix.(PX, [1.01.01.0]; force =true)
############## Starting Expression Values ###################set_start_value.(PEU, [1.01.0]) #<============== CAN I DO THISset_start_value.(PC, [1.01.01.0; 1.01.01.0])
set_start_value.(EU, [1.01.0])
set_start_value.(C, [1.01.01.0; 1.01.01.0])
set_start_value.(CM, [1.01.0])
status =solveMCP(m; convergence_tolerance=1e-8, output="yes", time_limit=3600)
Here is the Error:
ERROR: LoadError: MethodError: no method matching UnitRange{Int64}(::Array{String,1})
Closest candidates are:
UnitRange{Int64}(::Any, ::ArrayInterface.StaticInt) where T<:Real at /Users/G/.julia/packages/ArrayInterface/gMtB5/src/static.jl:139
UnitRange{Int64}(::Any, ::Any) where T<:Real at range.jl:280
UnitRange{Int64}(::UnitRange{T}) where T<:Real at range.jl:918
The text was updated successfully, but these errors were encountered:
I want to set starting values for Array variables. Can I do this in one line, or does it need to happen individually? Below is the code and the Error report. I noted where the first error is. If I should post this issue differently please let me know.
I am also wondering if I can set starting value for expressions. See lines 101-105.
Here is the Error:
The text was updated successfully, but these errors were encountered: