Skip to main content

No project description provided

Project description

PyZefir

Pyzefir is used to build and configure a specific class of mathematical optimization models that represent a given energy system. This System is clearly defined by identifying sources, transmission infrastructure and energy customers. The processes provided in the model are the acquisition, transfer and processing of various types of energy to meet the needs of consumers.

In the model, we distinguish between the supply side (energy sources) and the demand side (energy consumers). The key relationship that must occur in the model is the balance relation, which assumes that in each analyzed hour the volume of energy supplied to customers is equal to their energy demand.

The tool aims to find the solution of the optimization by determining how – with the given scenario assumptions – the technological structure of the given energy system will change over the next years. Subjects to optimize are the total cost of maintenance (operating costs), modernization (investment costs) and operation (variable costs) of a given energy system.

The elements of the energy system represented in the tool are energy carriers, energy sources, energy storage facilities, transmission infrastructure elements and energy consumers.

Pyzefir module

Install repository from global pip index

pip install pyzefir

Make setup

Check if make is already installed

make --version

If not, install make

sudo apt install make

Make stages

Install virtual environment and all dependencies

make install

If you are developing pyZefir it is recommended to use editable mode.

make install EDITABLE=yes

which allows you to install a package in such a way that any changes made to the source code are immediately reflected in the installed package without the need to reinstall it.

Run linters check (black, pylama)

make lint

Run unit and fast integration tests (runs lint stage before)

Make unit

Run integration tests (runs lint and unit stages before)

make test

Remove temporary files such as .venv, .mypy_cache, .pytest_cache etc.

make clean

Creating project environment

You can create virtual environment using make:

make install

or manually:

# Create and source virtual Environment
python -m venv .venv
source .venv/bin/active

# Install all requirements and dependencies
pip install .
pip install .[dev]

# Init pre-commit hook
pre-commit install

Preparation of input data

Run input structure creator

structure-creator --help

Usage: structure-creator [OPTIONS]
Options:
  -i, --input_path PATH     Input data for the creator.  [required]
  -o, --output_path PATH    Path to dump the results.  [required]
  -s, --scenario_name TEXT  Name of the scenario.  [required]
  -h, --n_hours INTEGER     N_HOURS constant.
  -y, --n_years INTEGER     N_YEARS constant.
  --help                    Show this message and exit.

E.g.

structure-creator -i pyzefir\resources\structure_creator_resources -o pyzefir\results -s base_scenario -h 8760 -y 20

How structure creator resources directory must look like:

.
└── structure_creator_resources/
    ├── lbs/
    │   ├── boiler_coal_new_lkt.xlsx
    │   ├── boiler_gas_lkt.xlsx
    │   └── ...
    ├── scenarios/
    │   └── base_scenario/
    │       ├── fractions/
    │       │   ├── boiler_coal_new_lkt.xlsx
    │       │   ├── boiler_gas_lkt.xlsx
    │       │   └── ...
    │       ├── cost_parameters.xlsx
    │       ├── fuel_parameters.xlsx
    │       ├── generation_fraction.xlsx
    │       ├── n_consumers.xlsx
    │       ├── relative_emission_limits.xlsx
    │       ├── technology_cap_limits.xlsx
    │       ├── technology_type_cap_limits.xlsx
    │       └── yearly_demand.xlsx
    ├── aggregates.xlsx
    ├── configuration.xlsx
    ├── emissions.xlsx
    ├── subsystems.xlsx
    └── transmission_fees.xlsx

Simulation run

  1. Prepare config.ini file (look at config_example.ini file in project directory)

:information_source: The section create of config.ini file is used for structure creator only, so if you're not going to use structure-creator do not add the section.

  1. Run pyzefir
pyzefir --help

Usage: pyzefir [OPTIONS]
Options:
  -c, --config PATH  Path to *.ini file.  [required]
  --help             Show this message and exit.

E.g.

pyzefir -c pyzefir/config_basic.ini

How pyzefir resources directory must look like:

XLSX input
.
└── /pyzefir resources/
    ├── /scenarios/
    │   ├── scenario_1.xlsx
    │   ├── scenario_2.xlsx
    │   └── ...
    ├── capacity_factors.xlsx
    ├── conversion_rate.xlsx
    ├── demand_chunks.xlsx
    ├── fuels.xlsx
    ├── generator_types.xlsx
    ├── initial_state.xlsx
    ├── storage_types.xlsx
    └── structure.xlsx

CSV input

.
└── /pyzefir resources/
    ├── /capacity_factors/
    │   └── Profiles.csv
    ├── /conversion_rate/
    │   ├── HEAT_PUMP.csv
    │   ├── BOILER_COAL.csv
    │   └── ...
    ├── /demand_chunks/
    │   ├── Demand_Chunks.csv
    │   ├── chunk_period_1.csv
    │   ├── chunk_period_2.csv
    │   └── ...
    ├── /demand_types/
    │   ├── family.csv
    │   ├── multifamily.csv
    │   └── ...
    ├── /fuels/
    │   ├── Emission_Per_Unit.csv
    │   └── Energy_Per_Unit.csv
    ├── /generator_types/
    │   ├── Efficiency.csv
    │   ├── Emission_Reduction.csv
    │   ├── Generator_Type_Energy_Carrier.csv
    │   ├── Generator_Type_Energy_Type.csv
    │   ├── Generator_Types.csv
    │   └── Power_Utilization.csv
    ├── /initial_state/
    │   ├── Technology.csv
    │   └── TechnologyStack.csv
    ├── /storage_types/
    │   └── Parameters.csv
    ├── /structure/
    │   ├── Aggregates.csv
    │   ├── Buses.csv
    │   ├── DSR.csv
    │   ├── Emission_Fees_Emission_Types.csv
    │   ├── Emission_Types.csv
    │   ├── Energy_Types.csv
    │   ├── Generator_Binding.csv
    │   ├── Generator_Emission_Fees.csv
    │   ├── Generators.csv
    │   ├── Lines.csv
    │   ├── Power_Reserve.csv
    │   ├── Storages.csv
    │   ├── Technology_Bus.csv
    │   ├── TechnologyStack_Aggregate.csv
    │   ├── TechnologyStack_Buses_out.csv
    │   ├── TechnologyStack_Buses.csv
    │   └── Transmission_Fees.csv
    └── /scenario/
        ├── /scenario_name/
        │   ├── Constants.csv
        │   ├── Cost_Parameters.csv
        │   ├── Curtailment_Cost.csv
        │   ├── Element_Energy_Evolution_Limits.csv
        │   ├── Emission_Fees.csv
        │   ├── Energy_Source_Evolution_Limits.csv
        │   ├── Fractions.csv
        │   ├── Fuel_Availability.csv
        │   ├── Fuel_Prices.csv
        │   ├── Generation_Fraction.csv
        │   ├── N_Consumers.csv
        │   ├── Relative_Emission_Limits.csv
        │   └── Yearly_Demand.csv
        └── /another_scenario_name/
            └── ....

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyzefir-0.4.22.tar.gz (149.6 kB view details)

Uploaded Source

Built Distribution

pyzefir-0.4.22-py3-none-any.whl (255.6 kB view details)

Uploaded Python 3

File details

Details for the file pyzefir-0.4.22.tar.gz.

File metadata

  • Download URL: pyzefir-0.4.22.tar.gz
  • Upload date:
  • Size: 149.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for pyzefir-0.4.22.tar.gz
Algorithm Hash digest
SHA256 bdedce5116ec4ac8cd8684f6344fc5b95bb6afd4c6dcb4c96d823753dd8da56e
MD5 a72b38c6e8c9005886e879c098bf95e5
BLAKE2b-256 6d0cf36762a628cfe73798af362630714ca7f19b135c8364b3e06eabbd972829

See more details on using hashes here.

File details

Details for the file pyzefir-0.4.22-py3-none-any.whl.

File metadata

  • Download URL: pyzefir-0.4.22-py3-none-any.whl
  • Upload date:
  • Size: 255.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for pyzefir-0.4.22-py3-none-any.whl
Algorithm Hash digest
SHA256 30872ac6d30c74f1eb764c77bd88b25ad41d6751caff7a1535e928f5e228973b
MD5 5ede2330c35da82c766966bf31f0b0b3
BLAKE2b-256 98a3d4fd0a834c5d287f42396003f89d8630bd0fe1b8b79d05cbb71bb8004972

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page