Code Monkey home page Code Monkey logo

powermodelsonm.jl's Introduction

PowerModelsONM

An Optmization library for the operation and restoration of electric power distribution feeders featuring networked microgrids

Documentation Build Status
docs-stable docs-dev github-actions codecov

This package combines various packages in the InfrastructureModels.jl optimization library ecosystem, particularly those related to electric power distribution.

PowerModelsONM focuses on optimizing the operations and restoration of phase unbalanced (multiconductor) distribution feeders that feature multiple grid-forming generation assets such as solar PV, deisel generators, energy storage, etc. Phase unbalanced modeling is achieved using PowerModelsDistribution. This library features a custom implementation of an optimal switching / load shedding (mld) problem. See documentation for more details.

Installation

To install PowerModelsONM, use the built-in Julia package manager

pkg> add PowerModelsONM

Or, equivalently, via the Pkg API:

julia> import Pkg; Pkg.add("PowerModelsONM")

or to develop the package,

julia> import Pkg; Pkg.develop(Pkg.PackageSpec(; name="PowerModelsONM", url="https://github.com/lanl-ansi/PowerModelsONM.jl"))

Questions and contributions

Usage questions can be posted on the Github Discussions forum.

Contributions, feature requests, and suggestions are welcome; please open an issue if you encounter any problems. The contributing page has guidelines that should be followed when opening pull requests and contributing code.

This software was supported by the Resilient Operations of Networked Microgrids project funded by the U.S. Department of Energy's Microgrid Research and Development Program.

R&D100 2023 Winner

PowerModelsONM won an R&D100 Award in 2023

Award Entry
R&D100 2023 Winner Logo PowerModelsONM: Optimizing Operations of Networked Microgrids for Resilience
Los Alamos National Laboratory, National Renewable Energy Laboratory, Sandia National Laboratories, National Rural Electric Cooperative Association

You can find a YouTube video that accompanied our entry below for more information on PowerModelsONM:

R&D 100 - PowerModels ONM

Citing PowerModelsONM

If you find PowerModelsONM useful for your work, we kindly request that you cite the following publication:

@ARTICLE{9897093,
  author={Fobes, David M. and Nagarajan, Harsha and Bent, Russell},
  journal={IEEE Transactions on Smart Grid},
  title={Optimal Microgrid Networking for Maximal Load Delivery in Phase Unbalanced Distribution Grids: A Declarative Modeling Approach},
  year={2023},
  volume={14},
  number={3},
  pages={1682-1691},
  doi={10.1109/TSG.2022.3208508}
}

License

This code is provided under a BSD license as part of the Multi-Infrastructure Control and Optimization Toolkit (MICOT) project, C15024.

powermodelsonm.jl's People

Contributors

pseudocubic avatar rb004f avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

powermodelsonm.jl's Issues

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Bug in constraint_radial_topology

Line 255 of constraint_radial_topology has a bug. Currently it states

`` var(pm, nw, :alpha)[(i,j)] = var(pm, nw, :switch_state, s)''

and it should be

``var(pm, nw, :alpha)[(i,j)] = sum var(pm, nw, :switch_state, s)'' for all switches between load block i and j.

As currently stated, if there is more than one switch between a load block, then this constraint will force all those switches to be open or all to be closed (allowing a loop). Using a sum will force at most one switch to be closed since alpha <= 1.

I would recommend adding a test for this corner case

Meshed structure in load blocks

Add a data check function for cycles in a load block and throw a warning. This is an indicator that it is impossible to operate the feeder with a radial structure. The PowerModelsONM model only enforces radiality of operations between load blocks.

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.