Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integration with ProxAL #17

Open
6 tasks
frapac opened this issue May 7, 2021 · 1 comment
Open
6 tasks

Integration with ProxAL #17

frapac opened this issue May 7, 2021 · 1 comment

Comments

@frapac
Copy link
Member

frapac commented May 7, 2021

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 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)

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 and u_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 structure OPFSolution to do so?
@kibaekkim
Copy link
Member

kibaekkim commented May 13, 2021

  • 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants