https://github.com/ctu-iig/green-scheduling-bab

The repository contains codes for paper "Green Scheduling with Time-of-Use Tariffs and Machine States: Optimizing Energy Cost via Branch-and-Bound and Bin Packing Strategies"

https://github.com/ctu-iig/green-scheduling-bab

Science Score: 67.0%

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

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 11 DOI reference(s) in README
  • Academic publication links
    Links to: researchgate.net
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.3%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

The repository contains codes for paper "Green Scheduling with Time-of-Use Tariffs and Machine States: Optimizing Energy Cost via Branch-and-Bound and Bin Packing Strategies"

Basic Info
  • Host: GitHub
  • Owner: CTU-IIG
  • License: mit
  • Language: C#
  • Default Branch: main
  • Size: 22.8 MB
Statistics
  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 10 months ago · Last pushed 6 months ago
Metadata Files
Readme License Citation Authors

README.md

Energy States and Costs Scheduling

This repository contains the source code for the scheduling problem with energy states and costs studied in [Benedikt2025].

Dependencies

You need the following

  • .NET Core (>= 6.0)
  • Python (>= 3.7)
  • IBM CP Optimizer (>= 12.9)
  • Gurobi (= 10.0)
  • docplex (>= 2.10)
  • g++ (>= 8.3)
  • CMake (>= 3.14)

The code is known to work on Fedora 29 and Debian Stretch operating systems. For using Gurobi and IBM CP Optimizer, environment variables GUROBI_HOME and CPLEX_INSTALL_DIR must be set and point to the installation directories of the solvers. For example, on GNU/Linux

```bash

echo $GUROBIHOME /home/username/opt/gurobi100/linux64 ls $GUROBIHOME bin docs EULA.pdf examples gurobi.log include lib matlab R ReleaseNotes.html setup.py src echo $CPLEXINSTALLDIR /home/username/opt/ibm/ILOG ls $CPLEXINSTALLDIR CPLEX_Studio129 ```

Projects

The repository contains one C# solution with the following projects

  • Shared - library with common code shared among the rest of the projects, e.g., it contains the source codes of the solvers.
  • DatasetGenerators - generators of instance dataset from the given prescription.
  • Experiments - runs the specified solvers on a dataset.
  • SolverCli - command line interface for solving one instance with a specified solver.
  • Tests - project containing tests of the code.

The following sections explains the solutions projects in detail.

The repository provides a few run configurations for Jetbrains Rider IDE. To use them with the data, either modify the paths in run configurations or create a symlink to the data repository in the root directory of the C# solution

bash ln -s DATA_REPOSITORY_PATH data

Shared

This project contains the code of the solvers which is shared among all the remaining projects. The solvers are written in different programming languages (C#, Python and C++). For solvers written in C# and Python, nothing needs to be done as they are compiled when the projects are built. However, the solvers written in C++ must be compiled beforehand

```bash

cd Iirc.EnergyStatesAndCostsScheduling.Shared/cpp cmake -DCMAKEBUILDTYPE=Release . make ```

Note that whenever Python or C++ solver is modified, the C# projects must be rebuilded so that the new solvers can be used (the building procedure copies the new version of the solvers to the output directory).

DatasetGenerators

To compile and run the project from the command line (passing no arguments will print the help message)

```bash

dotnet run -c Release -p Iirc.EnergyStatesAndCostsScheduling.DatasetGenerators -- DATAROOTPATH PRESCRIPTION_FILE ```

where

  • DATA_ROOT_PATH is the path to root directory with data (see the data repository for description of the filesystem structure).
  • PRESCRIPTION_FILE is the filename (including suffix) of the prescription file that describes how the instances are to be generated. The prescription files are in JSON format, see class Prescription in Iirc.EnergyStatesAndCostsScheduling.DatasetGenerators/Prescription.cs for the description of the files content (Prescription class is used for deserializing the JSON files).

The command will create a new dataset directory with a name of the prescription file (without the suffix) in {DATA_ROOT_PATH}/datasets and fills it with the generated instances.

The generated instance files are in JSON format, see class JsonInstance in Iirc.EnergyStatesAndCostsScheduling.Shared/Input/Readers/InputReader.cs for the description of the files content (JsonInstance class is used for deserializing the JSON files).

Experiments

To compile and run the project from the command line (passing no arguments will print the help message)

```bash

dotnet run -c Release -p Iirc.EnergyStatesAndCostsScheduling.Experiments -- DATAROOTPATH PRESCRIPTION_FILE ```

where

  • DATA_ROOT_PATH is the path to root directory with data (see the data repository for description of the filesystem structure).
  • PRESCRIPTION_FILE is the filename of the prescription file that describes the experimental setup, e.g., the solvers to test. The prescription files are in JSON format, see class Prescription in Iirc.EnergyStatesAndCostsScheduling.Experiments/Prescription.cs for the description of the files content (Prescription class is used for deserializing the JSON files).

The command will create a new result directory with a name of the prescription file (without the suffix) and fills it with the results. The location of each result has the following format

bash {DATA_ROOT_PATH}/results/{prescriptionFilename}/{datasetName}/{solverId}/{instanceFilename}.json

where

  • {prescriptionFilename} is the file name of the experimental setup prescription.
  • {datasetName} is the dataset name as specified in the prescription.
  • {solverId} is the solver id as specified in the prescription.
  • {instanceFilename} is the file name of the instance for which a result is generated.

The generated result files are in JSON format, see class Result in Iirc.EnergyStatesAndCostsScheduling.Shared/Output/Result.cs for the description of the files content (Result class is used for deserializing the JSON files).

The experiment is generating the results on the fly. By default, if the experiment is interrupted before it is completed, restarting the experiment will resume from the previous point, i.e., it will keep the previously generated results. If flag --from-scratch is passed, the previously generated results are deleted and the experiment starts from scratch.

By default, only one instance is being solved at a time. The number of instances to solve in parallel can be specified using option --num-threads.

SolverCli

To compile and run the project from the command line (passing no arguments will print the help message)

```bash

dotnet run -c Release -p Iirc.EnergyStatesAndCostsScheduling.SolverCli -- CONFIGPATH INSTANCEPATH ```

where

  • CONFIG_PATH is the path to configuration file. The configuration files are in JSON format, see class Config in Iirc.EnergyStatesAndCostsScheduling.SolverCli/Config.cs for the description of the files content (Config class is used for deserializing the JSON files).
  • INSTANCE_PATH is the path to the instance file.

The command will run the given instance on the specified solver within the configuration and prints the solving information to the standard output.

Tests

The tests can be run by ```bash

dotnet test -c Debug ```

Debug configuration is recommended for enabling asserts and code checks.

License

MIT license

Authors

Please see file AUTHORS.txt for the list of authors.

References

[Aghelinejad2017a] MohammadMohsen Aghelinejad, Yassine Ouazene & Alice Yalaoui (2018) Production scheduling optimisation with machine state and time-dependent energy costs, International Journal of Production Research, 56:16, 5558-5575, DOI: 10.1080/00207543.2017.1414969

[Benedikt2020a] Ondřej Benedikt, István Módos & Zdeněk Hanzálek (2020) Power of Pre-Processing: Production Scheduling with Variable Energy Pricing and Power-Saving States, CPAIOR2020

[Benedikt2025] Ondřej Benedikt, István Módos, Antonin Novak, Zdeněk Hanzálek, Green scheduling with time-of-use tariffs and machine states: Optimizing energy cost via branch-and-bound and bin packing strategies, European Journal of Operational Research, 2025, ISSN 0377-2217, https://doi.org/10.1016/j.ejor.2025.06.026.

Citing

Ondřej Benedikt, István Módos, Antonin Novak, Zdeněk Hanzálek, Green scheduling with time-of-use tariffs and machine states: Optimizing energy cost via branch-and-bound and bin packing strategies, European Journal of Operational Research, 2025, ISSN 0377-2217, https://doi.org/10.1016/j.ejor.2025.06.026.

@article{Benedikt_2025, title={Green scheduling with time-of-use tariffs and machine states: Optimizing energy cost via branch-and-bound and bin packing strategies}, ISSN={0377-2217}, url={http://dx.doi.org/10.1016/j.ejor.2025.06.026}, DOI={10.1016/j.ejor.2025.06.026}, journal={European Journal of Operational Research}, publisher={Elsevier BV}, author={Benedikt, Ondřej and Módos, István and Novak, Antonin and Hanzálek, Zdeněk}, year={2025}, month=jul }

Owner

  • Name: Industrial Informatics Research Center
  • Login: CTU-IIG
  • Kind: organization
  • Email: michal.sojka@cvut.cz
  • Location: Prague, Czech republic

Czech Technical University, Industrial Informatics Research Center

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this work, please cite it as below."
preferred-citation:
  type: article
  title: "Green scheduling with time-of-use tariffs and machine states: Optimizing energy cost via branch-and-bound and bin packing strategies"
  authors:
    - family-names: Benedikt
      given-names: Ondřej
    - family-names: Módos
      given-names: István
    - family-names: Novak
      given-names: Antonin
    - family-names: Hanzálek
      given-names: Zdeněk
  journal: "European Journal of Operational Research"
  publisher: "Elsevier BV"
  year: 2025
  month: 7
  doi: "10.1016/j.ejor.2025.06.026"
  url: "http://dx.doi.org/10.1016/j.ejor.2025.06.026"
  issn: "0377-2217"

GitHub Events

Total
  • Push event: 7
  • Create event: 2
Last Year
  • Push event: 7
  • Create event: 2