ExaAdmm.AdmmEnv
— TypeAdmmEnv{T,TD,TI}
This structure carries everything required to run ADMM from a given solution.
ExaAdmm.ModelAcopf
— TypeModel{T,TD,TI}
This contains the parameters specific to ACOPF model instance.
ExaAdmm.ModelQpsub
— TypeSolution Structure:
- solution.u contain variables for generator and branch kernel
- solution.v contains variables for bus kernel
- Summary Table:
dimension | ngen | ngen | nline | nline | nline | nline | nline | nline | nline | nline |
---|---|---|---|---|---|---|---|---|---|---|
structure for u | pg | qg | p_ij | q_ij | p_ji | q_ji | wi(ij) | wj(ji) | thetai(ij) | thetaj(ji) |
structure for v | pg(i) | qg(i) | p_ij(i) | q_ij(i) | p_ji(j) | q_ji(j) | wi | wj | thetai | thetaj |
structure for l and ρ is wrt all element of [x - xbar + z] with same dimension
structure for sqpline: 6*nline |wijR | w_ijI | wi(ij) | wj(ji) | thetai(ij) | thetaj(ji)|
Note: line has shared nodes => xbar contain duplications. For example line(1,2) and line(2,3): w2 and theta2 exist twice in v.
qpsub_membuf structure (dim = 5, used in auglag):
- |λ1h | λ1i | λ1j| λ1k | ρ_{1h,1i,1j,1k}|
- For c(x) = 0, ALM = λ*c(x) + (ρ/2)c(x)^2
- For 1j and 1k, introduce slack tij and tji (see internal branch structure for Exatron)
ExaAdmm.Parameters
— TypeParameters
This contains the parameters used in ADMM algorithm.
ExaAdmm.Solution
— TypeSolution{T,TD}
This contains the solutions of ACOPF model instance, including the ADMM parameter rho.
Base.copy
— MethodThis is to share grid data between models. Some fields that could be modified are deeply copied.
Base.copy
— MethodThis is to share power network data between models. Some fields that could be modified are deeply copied.
Base.copy
— MethodThis is to share power network data between models. Some fields that could be modified are deeply copied.
ExaAdmm.admm_increment_inner
— FunctionIncrement inner iteration counter by one.
ExaAdmm.admm_increment_outer
— FunctionIncrement outer iteration counter by one.
ExaAdmm.admm_increment_reset_inner
— FunctionReset inner iteration counter to zero.
ExaAdmm.admm_inner_prestep
— FunctionImplement any algorithmic steps required before each inner iteration.
ExaAdmm.admm_outer_prestep
— FunctionImplement any algorithmic steps required before each outer iteration.
ExaAdmm.admm_poststep
— FunctionImplement any steps required after the algorithm terminates.
ExaAdmm.admm_update_l
— FunctionUpdate multipliers λ for consensus constraints, x - xbar + z = 0
.
ExaAdmm.admm_update_lz
— FunctionCompute and update multipliers λ_z
for the augmented Lagrangian wit respect to z=0
constraint.
ExaAdmm.admm_update_residual
— FunctionCompute and update the primal and dual residuals at current iteration.
Arguments
env::AdmmEnv
– struct that defines the environment of ADMMmod::ModelAcopf
– struct that defines model
Notes
The primal and dual residuals are stored in mod.solution.rp
and mod.solution.rd
, respectively.
ExaAdmm.admm_update_x
— FunctionUpdate variable x
, representing the variables for generators and lines in the component-based decomposition of ACOPF.
ExaAdmm.admm_update_xbar
— FunctionUpdate variable xbar
, representing the variables for buses in the component-based decomposition of ACOPF.
ExaAdmm.admm_update_z
— FunctionUpdate variable z
, representing the artificial variables that are driven to zero in the two-level ADMM.
ExaAdmm.tron_generator_kernel
— MethodDriver to run TRON on GPU. This should be called from a kernel.
ExaAdmm.tron_gpu_test
— MethodDriver to run TRON on GPU. This should be called from a kernel.
tron_gpu_test()
- solves bounded QP: 1/2 x^THx + b*x s.t xl <= x <= xu
- includes evalfkernel(), evalgkernel(), and evalhkernel
ExaAdmm.tron_linelimit_kernel
— MethodDriver to run TRON on GPU. This should be called from a kernel.
ExaAdmm.tron_linelimit_kernel
— MethodDriver to run TRON on GPU. This should be called from a kernel.