ExaTron.jl
ExaTron.jl copied to clipboard
Integration with ProxAL
We aim at integrating ExaTron in the ProxAL decomposition solver. That would require to define a new AbstractBlockModel
in ProxAL, named for instance ExaTronBlockModel
. The generic interface of block models is defined in Proxal.
The main issue is to develop an API for the batch ExaTron solver (which currently uses a hand-coded optimization problem for the OPF). If we follow the future ExaTronBlockModel
interface in ProxAL, we would need:
ProxAL.init!
: definition of the optimization problem, with the active and reactive loads specified by ProxAL.
- [ ] In
admm_rect_gpu
, replace thedata
object in this line by aOPFData
structure defined directly inside ProxAL (I think ProxAL's format is closed to the format used by ExaTron, anyway). - [ ] Modify the object
OPFData
insrc/admm/opfdata.jl
to take into account the multipliers, the penalty and the ramping reference used by ProxAL (could beNothing
as it is not needed by default)
ProxAL.set_objective!
: update the objective function with a new multiplier mul::Vector{Float64}
, a new penalty tau::Float64
and a new ramping reference pg_ramp::Vector{Float64}
- [ ] I think here, we don't need to store the ExaTron structure between two optimization solves. This function will just create a new
OPFData
with the new values.
ProxAL.set_start_values!
: set an initial point to the optimization problem
- [ ] if we don't store the structure between two optimization solves, this function can remain empty.
ProxAL.optimize!
: solve the optimization problem
- [ ] Call the ExaTron algorithm
ProxAL.get_solution
: return the optimal solution found by the solver
- [ ] This function will require some works in ExaTron. ExaTron is working with two arrays
v_curr
andu_curr
, specifying all optimization variables in the problem. Once the problem solved, we should return the physical values corresponding to the solution (voltage magnitudes, power generations ...). Maybe we could define a new structureOPFSolution
to do so?