exanauts / ExaTron.jl

Julia implementation of TRON solver on GPUs
MIT License
15 stars 4 forks source link

Integration with ProxAL #17

Open frapac opened 3 years ago

frapac commented 3 years ago

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.


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}


ProxAL.set_start_values!: set an initial point to the optimization problem

ProxAL.optimize!: solve the optimization problem

ProxAL.get_solution: return the optimal solution found by the solver

kibaekkim commented 3 years ago
  • [ ] In admm_rect_gpu, replace the data object in this line by a OPFData structure defined directly inside ProxAL (I think ProxAL's format is closed to the format used by ExaTron, anyway).
  • [ ] Modify the object OPFData in src/admm/opfdata.jl to take into account the multipliers, the penalty and the ramping reference used by ProxAL (could be Nothing as it is not needed by default)

@frapac Can you clarify this? Are you suggesting replacing OPFData with the one in ProxAL and then also modifying the one in ExaTron? But, I sort of got what we need.