UnitCommitment

Optimization package for the Security-Constrained Unit Commitment Problem

https://github.com/anl-ceeesa/unitcommitment.jl

Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 22 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
    1 of 6 committers (16.7%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.4%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Optimization package for the Security-Constrained Unit Commitment Problem

Basic Info
  • Host: GitHub
  • Owner: ANL-CEEESA
  • License: other
  • Language: Julia
  • Default Branch: dev
  • Homepage:
  • Size: 72.2 MB
Statistics
  • Stars: 123
  • Watchers: 6
  • Forks: 33
  • Open Issues: 5
  • Releases: 7
Created about 6 years ago · Last pushed 11 months ago
Metadata Files
Readme Changelog License Zenodo

README.md

UnitCommitment.jl

DOI

UnitCommitment.jl (UC.jl) is an optimization package for the Security-Constrained Unit Commitment Problem (SCUC), a fundamental optimization problem in power systems used, for example, to clear the day-ahead electricity markets. The package provides benchmark instances for the problem and Julia/JuMP implementations of state-of-the-art mixed-integer programming formulations.

Package Components

  • Data Format: The package proposes an extensible and fully-documented JSON-based data format for SCUC, developed in collaboration with Independent System Operators (ISOs), which describes the most important aspects of the problem. The format supports the most common generator characteristics (including ramping, piecewise-linear production cost curves and time-dependent startup costs), as well as operating reserves, price-sensitive loads, transmission networks and contingencies.
  • Benchmark Instances: The package provides a diverse collection of large-scale benchmark instances collected from the literature, converted into a common data format, and extended using data-driven methods to make them more challenging and realistic.
  • Model Implementation: The package provides Julia/JuMP implementations of state-of-the-art formulations and solution methods for SCUC, including multiple ramping formulations (ArrCon2000, MorLatRam2013, DamKucRajAta2016, PanGua2016), multiple piecewise-linear costs formulations (Gar1962, CarArr2006, KnuOstWat2018) and contingency screening methods (XavQiuWanThi2019). Our goal is to keep these implementations up-to-date as new methods are proposed in the literature.
  • Benchmark Tools: The package provides automated benchmark scripts to accurately evaluate the performance impact of proposed code changes.

Sample Usage

```julia using Cbc using JuMP using UnitCommitment

import UnitCommitment: Formulation, KnuOstWat2018, MorLatRam2013, ShiftFactorsFormulation

Read benchmark instance

instance = UnitCommitment.read_benchmark( "matpower/case118/2017-02-01", )

Construct model (using state-of-the-art defaults)

model = UnitCommitment.build_model( instance = instance, optimizer = Cbc.Optimizer, )

Construct model (using customized formulation)

model = UnitCommitment.buildmodel( instance = instance, optimizer = Cbc.Optimizer, formulation = Formulation( pwlcosts = KnuOstWat2018.PwlCosts(), ramping = MorLatRam2013.Ramping(), startupcosts = MorLatRam2013.StartupCosts(), transmission = ShiftFactorsFormulation( isfcutoff = 0.005, lodf_cutoff = 0.001, ), ), )

Modify the model (e.g. add custom constraints)

@constraint( model, model[:is_on]["g3", 1] + model[:is_on]["g4", 1] <= 1, )

Solve model

UnitCommitment.optimize!(model)

Extract solution

solution = UnitCommitment.solution(model) UnitCommitment.write("/tmp/output.json", solution) ```

Documentation

See official documentation at: https://anl-ceeesa.github.io/UnitCommitment.jl/

Authors

  • Alinson S. Xavier (Argonne National Laboratory)
  • Aleksandr M. Kazachkov (University of Florida)
  • Ogün Yurdakul (Technische Universität Berlin)
  • Jun He (Purdue University)
  • Feng Qiu (Argonne National Laboratory)

Acknowledgments

  • We would like to thank Yonghong Chen (Midcontinent Independent System Operator), Feng Pan (Pacific Northwest National Laboratory) for valuable feedback on early versions of this package.

  • Based upon work supported by Laboratory Directed Research and Development (LDRD) funding from Argonne National Laboratory, provided by the Director, Office of Science, of the U.S. Department of Energy under Contract No. DE-AC02-06CH11357

  • Based upon work supported by the U.S. Department of Energy Advanced Grid Modeling Program under Grant DE-OE0000875.

Citing

If you use UnitCommitment.jl in your research (instances, models or algorithms), we kindly request that you cite the package as follows:

  • Alinson S. Xavier, Aleksandr M. Kazachkov, Ogün Yurdakul, Jun He, Feng Qiu. "UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment (Version 0.4)". Zenodo (2024). DOI: 10.5281/zenodo.4269874.

If you use the instances, we additionally request that you cite the original sources, as described in the documentation.

License

```text UnitCommitment.jl: A Julia/JuMP Optimization Package for Security-Constrained Unit Commitment Copyright © 2020-2024, UChicago Argonne, LLC. All Rights Reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ```

Owner

  • Name: ANL-CEEESA
  • Login: ANL-CEEESA
  • Kind: organization
  • Location: Argonne, IL

Argonne National Laboratory's Center for Energy, Environmental, and Economic Systems Analysis (CEEESA)

GitHub Events

Total
  • Watch event: 18
  • Push event: 11
  • Pull request event: 2
  • Fork event: 6
  • Create event: 1
Last Year
  • Watch event: 18
  • Push event: 11
  • Pull request event: 2
  • Fork event: 6
  • Create event: 1

Committers

Last synced: about 3 years ago

All Time
  • Total Commits: 173
  • Total Committers: 6
  • Avg Commits per committer: 28.833
  • Development Distribution Score (DDS): 0.301
Top Committers
Name Email Commits
Alinson S Xavier a****r@a****v 121
Alinson S. Xavier g****t@a****g 34
oyurdakul o****l@g****m 9
mtanneau m****u@g****m 6
Feng h****s@u****m 2
Aleksandr Kazachkov a****k@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 8
  • Total pull requests: 26
  • Average time to close issues: about 2 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 6
  • Total pull request authors: 6
  • Average comments per issue: 4.0
  • Average comments per pull request: 1.88
  • Merged pull requests: 13
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mtanneau (2)
  • mzy2240 (2)
  • chengg04 (1)
  • Xuxuduoyu (1)
  • akazachk (1)
  • JuliaTagBot (1)
Pull Request Authors
  • hejun0524 (6)
  • mtanneau (6)
  • oyurdakul (6)
  • akazachk (4)
  • type-null (3)
  • iSoron (2)
Top Labels
Issue Labels
bug (1) invalid (1) cant-reproduce (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 28 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 7
juliahub.com: UnitCommitment

Optimization package for the Security-Constrained Unit Commitment Problem

  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 28 Total
Rankings
Dependent repos count: 9.9%
Stargazers count: 10.4%
Forks count: 11.7%
Average: 17.8%
Dependent packages count: 38.9%
Last synced: 10 months ago

Dependencies

.github/workflows/lint.yml actions
  • actions/checkout v1 composite
  • julia-actions/setup-julia latest composite
.github/workflows/tagbot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/test.yml actions
  • actions/checkout v2 composite
  • julia-actions/setup-julia v1 composite