WaterStrategy
русский
русский
  • WaterStrategy Документация
  • Поддержка
  • Приступаем к работе
    • Создание учетной записи
    • Вход в систему
    • Экскурсия по интерфейсу
    • Создание нового проекта и сети
    • Совместное использование проектов и сетей
    • Экспорт и импорт моделей
    • Устранение ошибок модели
    • Загрузка внешних данных
  • Основы моделирования
    • Моделирование системы водных ресурсов?
    • Что такое Pywr?
    • Концепции Pywr
    • Типы узлов
      • Ввод воды
        • Узел ввода
        • Водосборный узел
        • Узел пропорционального ввода
      • Водный транспорт
        • Link Node
        • Речной узел
        • Узел задержки
        • RiverSplit Node
        • RiverSplitWithGauge Node
        • Узел речной колеи
        • BreakLink Node
        • PiecewiseLink Node
        • MultiSplitLink Node
      • Хранение воды
        • Storage Node
        • Резервуарный узел
        • VirtualStorage Node
        • Подвижной виртуальный узел хранения
        • Годовой виртуальный узел хранения
        • Сезонный виртуальный узел хранения
        • Узел агрегированного хранения
      • Выход воды
        • Выходной узел
        • Убыток Link Node
      • Гидроэнергетика
        • Турбинный узел
      • Другие
        • Агрегированный узел
    • Штрафы за распределение
    • Сценарии
      • WaterStrategy Сценарии
      • Сценарии PywR
        • Интеграция параметров и pywr-сценариев
    • параметры
      • Класс базовых параметров
        • Параметр
        • Параметр индекса
      • Простые параметры
        • Постоянный
        • Параметр постоянного сценария
        • Параметр индекса постоянного сценария
      • Объединение нескольких параметров
        • Агрегированный параметр
        • Параметр агрегированного индекса
        • Параметр деления
        • Отрицательный параметр
        • Максимальный параметр
        • Отрицательный максимальный параметр
        • Минимальный параметр
        • Отрицательный минимальный параметр
        • Параметр смещения
      • Временные ряды и профили
        • Ежедневный профиль
        • Еженедельный профиль
        • Ежемесячный профиль
        • Равномерный профиль просадки
        • Ежедневный профиль Scenario
        • Еженедельный профиль сценария
        • Ежемесячный профиль сценария
        • Ежемесячные коэффициенты индексированных сценариев
        • Профиль RBF
      • Параметр DataFrame
      • Параметр HDF5
      • Параметры на основе массива
        • Индексированный параметр массива
        • Параметр сценария с индексом массива
        • Параметр индексного массива
      • Пороговые параметры
        • Абстрактный порог
        • Порог хранения
        • Пороговое значение узла
        • Пороговое значение параметра
        • Пороговое значение рекордера
        • Пороговое значение текущего года
        • Порог текущего обычного дня
      • Параметры интерполяции
        • Интерполированный параметр
        • Интерполированная квадратура
        • Интерполированный поток
        • Интерполированный объем
      • Параметры контрольной кривой
        • Кривая базового управления
        • Интерполированный параметр контрольной кривой
        • Параметр с кусочной интерполяцией кривой управления
        • Параметр индекса контрольной кривой
      • Параметры гидроэнергетики
      • Другие
        • Параметр годового ряда гармоник
        • Параметр дефицита
        • Параметр оболочки сценария
        • Кусочно-интегральный параметр
        • Параметр потока
        • Параметр задержки потока
        • Параметр коэффициента дисконтирования
    • Рекордеры
      • Базовый рекордер
        • Рекордер
        • Регистратор узлов
        • Регистратор хранения
        • Регистратор параметров
        • Регистратор параметров индекса
        • Агрегатор
      • Регистраторы массивов Numpy
        • Регистратор узлов массива Numpy
        • Регистратор массивов Numpy
        • Регистратор уровней массива Numpy
        • Регистратор области массива Numpy
        • Регистратор параметров массива Numpy
        • Регистратор параметров индекса массива Numpy
        • Регистратор параметров ежедневного профиля Numpy Array
      • Регистраторы кривых длительности потока
        • Регистратор кривой продолжительности потока
        • Регистратор кривых продолжительности хранения
        • Регистратор отклонения кривой длительности потока
        • Регистратор кривой продолжительности сезонного стока
      • Регистраторы дефицита
        • Регистратор дефицита узлов массива Numpy
        • Рекордер соотношений, поставляемый узлом массива Num
        • Регистратор коэффициента сокращения количества узлов массива Numpy
        • Регистратор полного дефицита узлов
        • Регистратор узлов дефицита частоты
      • Статистические регистраторы
        • Сводный рекордер
        • Регистратор узлов среднего расхода
        • Регистратор узлов общего расхода
        • Годовой регистратор общего расхода
        • Регистратор средних параметров
        • Регистратор общих параметров
        • Регистратор узлов скользящего среднего расхода
        • Регистратор минимального объема
        • Регистратор минимального порогового объема памяти
        • Регистратор параметров индекса Timestep Count
        • Регистратор пороговых значений годового индекса подсчета
        • Регистратор параметров скользящего окна
      • Регистраторы индексов
        • Регистратор параметров годового индекса подсчета
      • Устройства записи файлов
        • CSV-рекордер
        • Регистратор таблиц
      • Регистраторы гидроэлектроэнергии
        • Регистратор гидроэлектроэнергии
        • Регистратор общей гидроэнергии
  • Прикладное моделирование
    • Резервуары и узлы хранения
  • Учебные пособия
    • Создание и запуск простой модели
      • Создание и запуск модели
        • Настройка проекта и сети
        • Добавление узлов и связей (ребер)
        • Добавление данных в узлы
        • Настройка временного горизонта
        • Запуск модели и визуализация ее результатов
        • Создание нового сценария
        • Упражнение
      • Внесение изменений в модель
        • Добавление резервуара
        • Добавление основных правил эксплуатации
    • Моделирование бассейновых водохранилищ
      • Создание нового проекта и сети
      • Добавление плотины (водохранилища)
      • Добавление спроса
      • Добавление водоочистных сооружений с потерями
      • Добавление источника, представляющего грунтовые воды
      • Дополнительные упражнения
      • Добавление батиметрии резервуаров, испарения и количества осадков
        • Общие сведения об испарении и осадках в водохранилищах
        • Добавление батиметрии резервуара (площадь)
        • Добавление батиметрии резервуара (уровень)
        • Добавление ежемесячного испарения и количества осадков
      • Использование штрафов за распределение средств и правил контроля для сбалансирования источников
      • Кривые управления и экономия спроса
        • Добавление кривых управления резервуарами и экономия (сокращение) спроса
    • Использование штрафов за распределение воды
    • PyWR-сценарии, считывающие внешний DataFrame и добавляющие собственные правила
      • Загрузка файлов
      • Чтение CSV-фрейма данных
      • Запуск pywr-сценариев
      • Чтение H5 DataFrame для сценариев pywr-
      • Создать собственное правило — параметр TranscientDecision
Powered by GitBook
On this page
  • Зарегистрировать настраиваемое правило — параметр TranscientDecision
  • Использование параметра TranscientDecision
  • Результаты

Was this helpful?

Export as PDF
  1. Учебные пособия
  2. PyWR-сценарии, считывающие внешний DataFrame и добавляющие собственные правила

Создать собственное правило — параметр TranscientDecision

PreviousЧтение H5 DataFrame для сценариев pywr-

Last updated 7 months ago

Was this helpful?

Зарегистрировать настраиваемое правило — параметр TranscientDecision

Вставьте следующий код и нажмите кнопку «Сохранить»

Параметр класса TransientDecision (параметр):
    «"» Возвращает одно из двух значений в зависимости от текущего временного шага

    Этот «Параметр» можно использовать для моделирования дискретного события принятия решения
     это происходит в определенный день. До этой даты «до»
     возвращается значение, а после этой даты возвращается значение «после».

    параметры
    ----------
    decision_date: строка или панды. Timestamp
        Дата начала принятия решения.
    before_parameter: параметр
        Значение, которое следует использовать до даты принятия решения.
    after_parameter: Параметр
        Значение, которое будет использоваться после даты принятия решения.
    earliest_date: строка или пандас.Timestamp или нет
        Самая ранняя дата, на которую можно установить переменную. По умолчанию используется значение `model.timestepper.start`
    latest_date: строка или Pandas.Timestamp или нет
        Последняя дата, на которую можно установить переменную. По умолчанию используется значение `model.timestepper.end`
    decision_freq: частотная строка панд (по умолчанию «AS»)
        Решение возможных дат. Например, «AS» будет каждый раз создавать возможные даты
        год между «самым ранним»_дата` и `последнее_дата`. Используются функции `pandas`
        для внутренних расчетов дельта-дат.

    «"»

    def __инициалировать__(«я», «модель», «решение»)_дата, до_параметр, после_параметр, самый ранний_Дата = нет, последняя_Дата = нет, решение_freq='as', **kwargs):
        super (параметр временного решения, self).__инициалировать__(модель, **кварги)
        себя._решение_дата = Нет
        самостоятельное решение_дата = решение_дата

        если нет, то экземпляр (before_parameter, параметр):
            raise ValueError («Значение «до» должно быть экземпляром параметра. ')
        before_parameter.parents.add (сам)
        селф. раньше_параметр = до_параметр

        если нет, isinstance (after_parameter, параметр):
            raise ValueError ('Значение `after` должно быть экземпляром параметра. ')
        after_parameter.parents.add (сам)
        селф. после_параметр = после_параметр

        # Эти параметры чаще всего используются, если этот класс используется в качестве переменной.
        себя._самый ранний_дата = Нет
        сам. Самый ранний_дата = самая ранняя_дата

        себя._самый последний_дата = Нет
        self.latest_дата = последняя_дата

        самостоятельное решение_частота = решение_частота
        себя._выполнимый_даты = Нет
        self.целочисленный_размер = 1  # Этот параметр содержит одну целочисленную переменную

    def decision_date ():
        дегет (сам):
            возвращайся сам._решение_дата

        def fest («я», «значение»):
            если есть экземпляр (значение, PD.Timestamp):
                себя._решение_дата = значение
            еще:
                себя._решение_дата = pd.to_datetime (значение)

        вернуть местных жителей ()

    решение_дата = свойство (**дата_решения ()

    def arliest_date ():
        дегет (сам):
            если я сам._самый ранний_дата не равна нулю:
                возвращайся сам._самый ранний_дата
            еще:
                верните self.model.timestepper.start

        def fest («я», «значение»):
            если есть экземпляр (значение, PD.Timestamp):
                себя._самый ранний_дата = значение
            еще:
                себя._самый ранний_дата = pd.to_datetime (значение)

        вернуть местных жителей ()

    самый ранний_дата = свойство (**самая ранняя_дата ())

    def latest_date ():
        дегет (сам):
            если я сам._самый последний_дата не равна нулю:
                возвращайся сам._самый последний_дата
            еще:
                верните self.model.timestepper.end

        def fest («я», «значение»):
            если есть экземпляр (значение, PD.Timestamp):
                себя._самый последний_дата = значение
            еще:
                себя._самый последний_дата = pd.to_datetime (значение)

        вернуть местных жителей ()

    самый последний_дата = свойство (**последняя дата ())

    настройка по определению (самостоятельно):
        super (параметр временного решения, self) .setup ()

        # Теперь задайте допустимые даты использования этого объекта в качестве переменной.
        себя._выполнимый_даты = pd.date_диапазон (сам). Самый ранний_дата, self.latest_date,
                                                 freq=self.decision_freq)

    значение по умолчанию (self, ts, scenario_index):

        если оно равно «Нет»:
            v = self.before_параметр.get_значение (индекс_сценария)
        elif ts.datetime >= дата принятия самостоятельного решения:
            v = self.after_параметр.get_значение (индекс_сценария)
        еще:
            v = self.before_параметр.get_значение (индекс_сценария)
        вернуть v

    def get_целое_lower_bounds (сам):
        верните массив np.array ([0,], dtype=np.int)

    def get_целое_upper_bounds (само):
        верните np.array ([len) (self)._выполнимый_даты) - 1,], dtype=np.int)

    набор def_целое_переменные (self, значения):
        # Обновите дату принятия решения соответствующей возможной датой
        самостоятельное решение_дата = я._осуществимые даты [значения [0]]

    def get_целое_переменные (self):
        верните np.array ([self)._выполнимый_dates.get_loc (самостоятельное решение)_дата),], dtype=np.int)

    самосвалка (самовывоз):

        данные = {
            'самый ранний_«дата»: самая ранняя_формат date.iso (),
            'новейший_«дата»: self.latest_формат date.iso (),
            'решение_«дата»: самостоятельное решение_формат date.iso (),
            'решение_частота»: самостоятельное решение_частота
        }

        возвращать данные

    @classmethod
    заданная нагрузка (класс, модель, данные):

        перед_параметр = нагрузка_параметр (модель, data.pop ('before_parameter'))
        после_параметр = нагрузка_параметр (модель, data.pop ('after_parameter'))

        возвращаемый класс (модель), ранее_параметр = до_параметр, после_параметр = после_параметр, **данные)

Параметр временного решения.register ()

Теперь при запуске этой сети в WaterStrategy будет зарегистрирован параметр TranscientDecision.

Убедитесь, что после сохранения настраиваемого правила оно отображается слева, в данном случае в разделе Параметр раздел

Использование параметра TranscientDecision

В этом случае мы удвоим максимальный объем Новое водохранилище storage node начиная с 2045-__-01-01

Перейти к Новое водохранилище storage node и Редактировать Максимальная громкость

Выберите в Опции табуляция ПИВР_ПАРАМЕТР

Вставьте следующий код и нажмите Сохранить

{
  	«тип»: «Переходный параметр решения»,
	«после_параметр»:»__Новое водохранилище__:макс_громкость после»,
	«до_параметр»:»__Новое водохранилище__:макс_объем до»,
	«дата принятия решения»: «2045-01-01»,
	«последняя дата»: «2045-01-01»
}

Параметр TranscientDecision включает атрибуты «до»_параметрипосле_параметр`, который нам нужно будет создать следующим образом:

Откроется небольшое текстовое поле, когда мы сможем написать имя нашего нового PWR_ПАРАМЕТР, в данном случае __Новое водохранилище__:макс_объем до. Нажмите Введите. \

WaterStrategy откроет окно параметров, вставьте следующий код и Сохранить

**__Новое водохранилище__:макс_объем до: **

{
	«тип»: «Постоянный параметр»,
	«значение»: 120000
}

Повторите, чтобы создать максимальную громкость после параметра

**__Новое водохранилище__:макс_объем после: **

{
	«тип»: «Постоянный параметр»,
	«значение»: 240000
}

В качестве последнего шага требуется параметр «TranscientDecision» Начальная объемная пропорция для storage node, поскольку параметр наследует начальные значения от узла, в этом случае мы настроим на 0.99

Результаты

Как видно на следующем рисунке, мы комбинируем сценарии pywr с использованием изменения климата и увеличиваем объем выбранного нами водохранилища с 120.000 мл до 240.____000 мл за 1 января 2045 мл.

смоделированный объем (новое водохранилище)