GithubHelp home page GithubHelp logo

lanl-ansi / powermodels.jl Goto Github PK

View Code? Open in Web Editor NEW
373.0 27.0 140.0 5.01 MB

A Julia/JuMP Package for Power Network Optimization

Home Page: https://lanl-ansi.github.io/PowerModels.jl/stable/

License: Other

Julia 93.36% MATLAB 6.64%
optimization network power-network optimal-power-flow

powermodels.jl's Issues

Variable lookup helper

Consider adding a helper function to do getvariable(pm.model, :loading)[i]. Along the lines of getvariable(pm, :loading, i)

Strengthen DCLL OTS

in, function constraint_active_ohms_yt_on_off{T <: AbstractDCPLLForm}(pm::GenericPowerModel{T}, branch) add c4 = @constraint(pm.model, p_fr + p_to >= 0).

Fixing Bus Types when Parsing Matpower

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

Cleaning up TNEP line on/off constraints

In light of recent changes can constraint_complex_voltage_ne{T <: AbstractWRForm} be made cleaner? Like constraint_complex_voltage_on_off{T <: AbstractWRForm}?

angle bound limits

Add checks to the appropriate constraints to check angle limits are within +/- pi/2.

Update README

Add TNEP to list of supported models, also use checkout instead of clone for to get the current development version.

Abstracting on/off constraints

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.

SLP Example

Develop an example of using SLP in PowerModels.

Variable constructor return values

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.

Type Parsing in build_sets

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.

Tests for Variable and Constraint return values

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.

Possible typos in constraints.jl

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]

JSON Object Types

By default JSON.parse returns Dict{UTF8String, Any} and we typically use Dict{AbstractString, Any}.

  1. Figure out why a function of Dict{AbstractString, Any} cannot accpt an argument of Dict{UTF8String, Any}.

  2. Migrate code to a robust solution, no types?

  3. remove special type cases from JSON.parse() calls

Variable Name Conventions

I propose the following a standard naming convention for the polar and rectangular variable spaces, let "v" be a complex number, then:

  • vm - magnitude of v
  • va - angle of v
  • vr - real component of v
  • vi - imaginary component of v

Speed up Tests

See if caching parsed versions of the model data can improve the speed of running package tests.

Multiphase support

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.