lanl-ansi / powermodels.jl Goto Github PK
View Code? Open in Web Editor NEWA Julia/JuMP Package for Power Network Optimization
Home Page: https://lanl-ansi.github.io/PowerModels.jl/stable/
License: Other
A Julia/JuMP Package for Power Network Optimization
Home Page: https://lanl-ansi.github.io/PowerModels.jl/stable/
License: Other
Make an easy way to test if a solution is feasible for a given model.
Add to relaxation schemes.
Consider adding a helper function to do getvariable(pm.model, :loading)[i]
. Along the lines of getvariable(pm, :loading, i)
There is significant repeated code in expansion planning line constraints (i.e. _ne
) and OTS on/off constraints (i.e. _on_off
).
See if there is a clean way of avoiding this replication without excessive engineering.
The various Int(x) calls may not be necessary.
When parsing .m files these fields are already parsed to Int. When parsing .json these values may come in as Int, Float, or Number. Needs to be investigated.
Add TNEP to list of supported models, also use checkout
instead of clone for to get the current development version.
Fix broken build.
make the "std gen cost: ..." message a warning instead of stdout.
Add Bibtex citations for the orginal proposal of specific formulations
It would be nice to be able to support mixtures of tabs and spaces. For example see.
When parsing .m files, if a generator bus type is incorrect (e.g. type 2 with no generators) fix it.
Key use case, is running an AC-PF solve on a non-NESTA Polish case (e.g. case2737sop.m).
In Matpower data files, add support for having semicolons in strings.
Setup inline code documentation and ReadTheDocs integration.
Develop an example of using SLP in PowerModels.
To more readily support multi-time models.
in, function constraint_active_ohms_yt_on_off{T <: AbstractDCPLLForm}(pm::GenericPowerModel{T}, branch)
add c4 = @constraint(pm.model, p_fr + p_to >= 0)
.
See if caching parsed versions of the model data can improve the speed of running package tests.
Add flag for per-unit and transformer taps.
When reading in json, apply standardize_cost_order(data), unify_transformer_taps(data)
or not, based on these flags.
similar to variables.
I propose the following a standard naming convention for the polar and rectangular variable spaces, let "v" be a complex number, then:
This helps in the sparse application of input and output data files.
Use cases
For example, in the SOC relaxation, should the output Bus Phase Angles absent, NaN, 0?
Add checks to the appropriate constraints to check angle limits are within +/- pi/2.
Feature idea.
Optimal power models have traditionally only been done at the bulk power level. But with distributed generation and more advanced volt-var control, there's more opportunity to benefit from optimal models at the distribution level. To do that best, models need to include three phases and include single and two-phase lines and loads..
Add unit tests for all Matpower parser error messages.
By default JSON.parse returns Dict{UTF8String, Any} and we typically use Dict{AbstractString, Any}.
Figure out why a function of Dict{AbstractString, Any} cannot accpt an argument of Dict{UTF8String, Any}.
Migrate code to a robust solution, no types?
remove special type cases from JSON.parse() calls
See if this can be simplified and if the the generic per-unit / mixed-units functions can be applied.
add something reasonable here.
Add a special documentation guide / tutorial for developing new variable formulations and problem specifications.
See if there is a clean but high performance way of doing this.
The variable_*
functions should return some data structure including all of the variables they have added to the model.
The key challenge here is the type of data structure, as JuMP's @varaible macro can return a single variable, an array of variables, or a dict index-variable mapping.
Update, objective_min_fuel_cost{T <: AbstractConicPowerFormulation}(pm::GenericPowerModel{T}) in objective.jl.
The key is to define the min on a norm form.
Once #9 is resolved, the number of elements returned from all variable_*
calls should be exactly equal to the variables in the JuMP model. And a similar property should be true for the constraint_*
calls.
A simple and generic way to test the return value implementation correctness is to test that the total number of returned constraints and variables are consistent with the internal JuMP model.
Add naming conventions to constraints to assist users in understanding the JuMP model.
Extend the split_line function in the Matpower parser to support splitting lines with multiple single-quoted string values.
move some models over to open source integer solvers, such as Pajarito.jl
Once this is working test for Julia v0.6 compatibility.
Double check that a DC OPF with Line Losses is actually imposing losses.
In constraint_active_loss_lb
, p_fr
and p_to
are defined identically:
p_fr = getvariable(pm.model, :p)[f_idx]
p_to = getvariable(pm.model, :p)[f_idx]
This is also the case for v_fr
and v_to
, and q_fr
and q_to
in constraint_reactive_loss_lb
:
v_fr = getvariable(pm.model, :v)[f_bus]
v_to = getvariable(pm.model, :v)[f_bus]
q_fr = getvariable(pm.model, :q)[f_idx]
q_to = getvariable(pm.model, :q)[f_idx]
Add a test case with small asymmetrical angles, i.e. the outcome of bounds propagation.
Make sure SOC, QC, and SDP models work on this (i.e LNCs are not breaking stuff).
Add unit tests to test code snippets in docs.
Report an error for edges that have the same to and from buses.
In light of recent changes can constraint_complex_voltage_ne{T <: AbstractWRForm}
be made cleaner? Like constraint_complex_voltage_on_off{T <: AbstractWRForm}
?
Add parsing for bus_names in Matpower parser.
To make GenericPowerModel more extensible.
Possibly remove ext.
Functions that modify their inputs typically have an exclamation point at the end of their names, to help them stand out. I can make a PR if you would like to adopt this convention.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.