Базовые методы параметрических исследований#

Прежде чем на практике ознакомиться с основными способами параметрических исследований, необходимо рассмотреть типовой процесс, характерный для всех параметрических исследований.

flowchart TD subgraph app["**I Подготовка модели**/<br>**I Model preparation**"] direction LR create_model(["**1** Создание и отладка модели системы в приложении REPEAT VISION/<br>**1** Creating and debugging a system model in the REPEAT VISION application"]) prep_model("**2** Подготовка модели для автоматизации/<br>**2** Preparing the model for automation") create_model --> prep_model end subgraph parametric["**II Исследования**/<br>**II Research**"] direction LR get_algorithm("**3** Выбор алгоритма создания пространства параметров/<br>**3** Selecting an algorithm for creating a parameter space") create_bc("**4** Подготовка данных для исследований/<br>**4** Preparing data for research") solve("**5** Выполнение цикла расчётов модели на платформе REPEAT VISION/<br>**5** Performing a model calculation cycle on the REPEAT VISION platform") get_algorithm --> create_bc --> solve end subgraph analyze["**III Анализ результатов**/<br>**III Analysis of results**"] direction LR collect("**6** Подготовка структур данных для анализа/<br>**6** Preparing data structures for analysis") visualize(["**7** Выполнение графического анализа влияния параметров на результаты моделирования/<br>**7** Performing a graphical analysis of the influence of parameters on the simulation results"]) collect --> visualize end app --> parametric --> analyze

Типовой процесс параметрических исследований модели системы на платформе REPEAT VISION/A typical process for parametric studies of a system model on the REPEAT VISION platform#

В рамках данного практического руководства не будет затрагиваться этап I подготовки модели. С данной частью процесса можно ознакомится, выполнив два следующих урока:

  1. Трубопровод между двумя резервуарами

  2. Подготовка модели для автоматизации

В рамках выполнения базового практического руководства о параметрических исследованиях вы узнаете:

  1. Основные шаги, необходимые для выполнения параметрических исследованиях на платформе REPEAT VISION;

  2. Правила выбора метода параметрических исследований, наиболее подходящего для вашего решения задачи.

1.  Обзор примера модели для выполнения параметрических исследований на платформе REPEAT VISION#

Для ознакомления с порядком выполнения параметрических исследований на платформе REPEAT VISION добавьте из папки Демо проекты в свой набор проектов простой пример изотермической гидравлики со следующим названием [DEMO] Трубопровод с местным сопротивлением.

../../../_images/pipeline_with_local_resistance-6a72510d.svg

Проект трубопровода с местным сопротивлением#

Пример [DEMO] Трубопровод с местным сопротивлением позволяет исследовать изменение расхода жидкости, являющегося результатом выполнения расчёта, при изменении параметров, приведённых в таблице ниже.

Параметр

Тип параметра

Имя глобальной переменной

Применяется к блоку

Давление в резервуаре

Граничное условие

pressure

блок №1

Площадь отверстия в местном сопротивлении трубопровода

Параметр конструкции

hole_area

блок №7

Диаметр участков трубопровода

Параметр конструкции

pipe_diameter

блок №3 блок №12

Результат расчёта модели передаётся в блок out_1 с пользовательским названием flowrate.

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

2.  Параметрические исследования на платформе REPEAT VISION#

Сначала откройте ноутбук и в новой тетрадке создайте скрипт для подключения к модели через платформу REPEAT VISION.

Далее в первую ячейку добавьте код загрузки Python пакета repeat, необходимого для взаимодействия с платформой REPEAT VISION и для выполнения параметрических исследований.

import piplite
await piplite.install("repeat")

В следующей ячейке выполните импорт Python пакетов, необходимых для подготовки данных для исследований, обработки результатов расчётов, а также для последующей визуализации графиков с целью выполнения анализа результатов исследований.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

В следующей ячейке выполните импорт Python пакета repeat с модулем параметрических исследований.

1import repeat as rp
2import repeat.parametric_study as ps

Добавлено в версии 1.0.0: В новой версии Python пакета repeat добавлен модуль parametric_study, упрощающий выполнение параметрических исследований.

С подробной информацией о возможностях модуля parametric_study вы можете ознакомиться в справке.

Далее требуется настроить подключение к платформе REPEAT VISION и выбрать модель для выполнения параметрических исследований.

user = rp.User(
  "enter a unique API key from REPEAT VISION user cabinet instead of this comment"
  )
app = rp.Application(user)
# enter a project ID from REPEAT VISION application instead of 12345
project = 12345
t_interval = rp.TimeInterval(start = 100, end = 200)
model = app.get_exploration_model(project, t_interval)

Выполним проверку подключения в следующей ячейке, которую можно удалить после отладки программы

print(model, model.existing_variables, sep = "\n")

# ExplorationModel(project = 12345, name = '[DEMO] Трубопровод с местным 
# сопротивлением', time_interval = TimeInterval(start = 100, end = 200))
#
# hole_area            0.001
# pipe_diameter        0.200
# pressure         70000.000
# dtype: float64

В выводе функции print видно, что наименование name экземпляра класса ExplorationModel выбранной модели совпадает с рассмотренной моделью на рисунке выше. Также список existing_variables глобальных переменных соответствует ранее рассмотренной таблице переменных модели.

Теперь всё готово для выбора алгоритма создания пространства параметров.

2.1.  Выбор алгоритма создания пространства параметров#

Для выполнения параметрических исследований требуется выбрать алгоритм создания пространства параметров.

Выбор алгоритма зависит от следующих критериев, приведённых в таблице ниже.

Критерий

Описание

Требуемая дискретизация результатов расчёта

Критерий величины вещественного значения шага между набором параметров \(\mathbf x_i\) и набором \(\mathbf x_{i+1}\). Выбор величины шага зависит от нелинейности функции \(\mathbf y = f(\mathbf x)\), которую требуется рассмотреть по результатам параметрического исследования. Шаг выбирается опытным путём.

Продолжительность времени выполнения одного расчёта

Критерий временных затрат на моделирование при ограниченном общем времени на выполнение исследований. Длительное выполнение каждого расчёта напрямую влияет на временные затраты параметрических исследований.

Размерность задачи параметрических исследований

Критерий, включающий количество варьируемых параметров \(\mathbf n\) и необходимое количество расчётов \(\mathbf m\). Большое количество \(\mathbf n\) и \(\mathbf m\) приводит к значительным затратам времени на выполнение параметрических исследований.

В соответствии рассмотренными критериями выбор алгоритма сводится к одному из следующих вариантов.

Алгоритм подготовки сетки значений параметров

Выбирается в следующих случаях:

  1. Необходима заранее определённая дискретизация результатов расчёта с назначенным шагом по каждому из параметров модели;

  2. Низкая продолжительность времени выполнения одного расчёта модели относительно заданного времени на выполнение исследований;

  3. Низкая размерность задачи параметрических исследований.

Параметрические исследования на платформе REPEAT VISION
Алгоритм подготовки разреженного набора значений параметров

Выбирается в следующих случаях:

  1. Высокая продолжительность времени выполнения одного расчёта модели относительно заданного времени на выполнение исследований;

  2. Высокая размерность задачи параметрических исследований.

Параметрические исследования на платформе REPEAT VISION

Выбор алгоритма создания пространства параметров для модели примера#

  1. Один расчёт модели примера [DEMO] Трубопровод с местным сопротивлением выполняется за короткое время (менее 1 секунды);

  2. Модель содержит всего три глобальных переменных.

Для выполнения параметрических исследований, в первом приближении, выбирается алгоритм подготовки сетки значений параметров.

2.2.  Подготовка данных для исследований#

Поставим следующую задачу параметрических исследований. Требуется выполнить параметрическое исследование при изменении параметров, приведённых в таблице ниже.

Параметр

Описание

Границы изменения

Количество значений

hole_area

Площадь отверстия в местном сопротивлении трубопровода

\([10^{-7}, 0.02] м^2\)

6

pressure

Давление в резервуаре

\([10^4, 10^6] Па\)

5

В параметрическом исследовании не требуется учитывать параметр pipe_diameter, то есть его значение будет постоянным, равным \(0.2 м\).

Для алгоритма подготовки сетки значений параметров в следующей ячейке создайте словарь variable_values в соответствии с требованиями функции get_cartesian_product.

variable_values = dict(
    hole_area = np.linspace(1e-7, 0.02, num = 6),
    pressure = np.linspace(1e4, 1e6, num = 5),
    pipe_diameter = np.array([0.2]),
)

В следующей ячейке требуется создать декартово произведение для множества значений параметров с помощью функции get_cartesian_product модуля repeat.parametric_study, который выше был импортирован как ps. В функцию первым аргументом передаётся экземпляр класса ExplorationModel, а вторым аргументом передаётся словарь variable_values, содержащий множества значений параметров.

input_data = ps.get_cartesian_product(model, variable_values)
m, n = input_data.shape
print("Размерность задачи:\n"
  f"Количество варьируемых параметров {n = };\n"
  f"Необходимое количество расчётов {m = }.\n"
)
input_data.head(2)

В результате работы алгоритма подготовки сетки значений параметров на выводе ячейки появится следующая информация.

Размерность задачи:

  • Количество варьируемых параметров n = 3;

  • Необходимое количество расчётов m = 30.

hole_area

pressure

pipe_diameter

0

1.000000e-07

10000.0

0.2

1

4.000080e-03

10000.0

0.2

В результате выполнения следующей ячейки, получим сетку значений параметров hole_area и pressure.

axis = input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:green')
axis.set_xlabel("hole_area $[m^2]$")
axis.set_ylabel("pressure $[Pa]$")
../../../_images/input_data_cart_prod-1750127f.png

Сетка значений параметров в результате работы функции get_cartesian_product модуля repeat.parametric_study#

На графике видно равномерное покрытие 30 значениями параметров pressure и hole_area в границах, соответствующих таблице выше.

В следующей ячейке необходимо создать общую таблицу, пригодную для сохранения результатов расчёта и последующего выполнения анализа параметрических исследований.

design_cases = input_data.copy(deep = True)
design_cases["flowrate"] = pd.NA
design_cases.head(2)

hole_area

pressure

pipe_diameter

flowrate

0

1.000000e-07

10000.0

0.2

<NA>

1

4.000080e-03

10000.0

0.2

<NA>

В новый объект design_cases копируется таблица input_data исходных данных и выполняется создание новой колонки flowrate для последующего сохранения результатов расчёта модели.

Совет

Рекомендуется всегда инициализировать колонку результатов расчёта значениями pd.NA или np.nan для последующего выполнения параметрических исследований.

В случае успешного завершения расчёт вместо pd.NA будет сохранено вещественное значение с результатом расчёта.

В случае возникновения проблем, у пользователя будет информация о номерах расчётов (где остались значения pd.NA), в которых необходимо выполнить дополнительную отладку вашей Python программы или модели.

2.3.  Выполнение цикла расчётов модели на платформе REPEAT VISION#

Далее требуется выполнить цикл расчётов модели на платформе REPEAT VISION. Для этого создадим функцию solve и выполним её в следующей ячейке.

def solve(input_data, design_cases):
    for i, variables in input_data.iterrows():
        with model as md:
            md.run(variables)
            design_cases.loc[i, "flowrate"] = md.get_results("flowrate").iloc[-1]

solve(input_data, design_cases)

В функции solve используется всего один цикл, за который выполняются все 30 расчётов модели.

Внутри цикла с помощью менеджера контекста with выполняется запуск модели на расчёт методом .run() с текущим набором variables значений глобальных переменных.

Также внутри менеджера контекста методом .get_results() выполняется сохранение в таблицу design_cases одного актуального значения результата расчёта расхода "flowrate" на момент завершения времени моделирования. Данное значение получается методом .iloc[-1] из структуры pandas.Series.

3.  Анализ результатов параметрических исследований на сетке значений#

Для отображения результатов расчётов на сетке значений параметров требуется создать вспомогательную функцию трёхмерной визуализации на основе возможностей пакета matplotlib.

def plot_3d_scatter(table):
    fig = plt.figure()
    ax = fig.add_subplot(projection = "3d")
    ax.scatter(
        table["pressure"], 
        table["hole_area"], 
        table["flowrate"], 
        marker='o'
      )
    ax.set_xlabel("pressure $[Pa]$")
    ax.set_ylabel("hole_area $[m^2]$")
    ax.set_zlabel("flowrate $[kg]$")
    plt.show()

В следующей ячейке требуется вызвать данную функцию для выполнения анализа результатов на сетке значений параметров pressure и hole_area. В функцию визуализации plot_3d_scatter передаётся ранее заполненная таблица design_cases.

plot_3d_scatter(design_cases)
../../../_images/results_cart_prod-2e8b2a65.png

Результаты расчёта массового расхода flowrate на сетке значений параметров pressure и hole_area#

На трёхмерной картине распределения зависимости flowrate от pressure и hole_area видно увеличение массового расхода flowrate при увеличении давления pressure и увеличении площади отверстия hole_area.

4.  Код всей программы выполнения параметрических исследований на сетке значений параметров#

Для удобства обзора и копирования ниже приведён код, рассмотренной выше программы выполнения параметрических исследований на сетке значений параметров.

import piplite
await piplite.install("repeat")

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import repeat as rp
import repeat.parametric_study as ps


user = rp.User(
  "enter a unique API key from REPEAT VISION user cabinet instead of this comment"
  )
app = rp.Application(user)
# enter a project ID from REPEAT VISION application instead of 12345
project = 12345
t_interval = rp.TimeInterval(start = 100, end = 200)
model = app.get_exploration_model(project, t_interval)
print(model, model.existing_variables, sep = "\n")

variable_values = dict(
    hole_area = np.linspace(1e-7, 0.02, num = 6),
    pressure = np.linspace(1e4, 1e6, num = 5),
    pipe_diameter = np.array([0.2]),
)
input_data = ps.get_cartesian_product(model, variable_values)
m, n = input_data.shape
print("Размерность задачи:\n"
  f"Количество варьируемых параметров {n = };\n"
  f"Необходимое количество расчётов {m = }.\n"
)
input_data.head(2)

axis = input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:green')
axis.set_xlabel("hole_area $[m^2]$")
axis.set_ylabel("pressure $[Pa]$")

design_cases = input_data.copy(deep = True)
design_cases["flowrate"] = pd.NA
design_cases.head(2)

def solve(input_data, design_cases):
    for i, variables in input_data.iterrows():
        with model as md:
            md.run(variables)
            design_cases.loc[i, "flowrate"] = md.get_results("flowrate").iloc[-1]

solve(input_data, design_cases)

def plot_3d_scatter(table):
    fig = plt.figure()
    ax = fig.add_subplot(projection = "3d")
    ax.scatter(
        table["pressure"], 
        table["hole_area"], 
        table["flowrate"], 
        marker='o'
      )
    ax.set_xlabel("pressure $[Pa]$")
    ax.set_ylabel("hole_area $[m^2]$")
    ax.set_zlabel("flowrate $[kg]$")
    plt.show()

plot_3d_scatter(design_cases)

5.  Применение алгоритма подготовки разреженного набора значений параметров#

С целью получения базовых навыков использования алгоритма подготовки разреженного набора значений параметров воспользуемся текущим примером модели.

В следующей ячейке текущей программы параметрических исследований создадим словарь variable_bounds в соответствии с требованиями функции get_latin_hypercube для параметров с границами значений, приведённых в таблице выше.

variable_bounds = dict(
    hole_area = [1e-7, 0.02],
    pressure = [1e4, 1e6],
    pipe_diameter = 0.2,
)

Необходимо отметить, что для функции get_latin_hypercube не требуется создание исходного множества значений, как это требуется для функции get_cartesian_product, а необходимо указать только нижние и верхние значения границ параметров.

Существующая постановка задачи параметрических исследований не требует варьирования параметра pipe_diameter, поэтому в словаре variable_bounds он указывается просто вещественным значением 0.2.

Далее необходимо создать разреженный набор значений глобальных переменных по методу латинского гиперкуба с помощью функции get_latin_hypercube.

1lhs_input_data = ps.get_latin_hypercube(
2  model, 
3  variable_bounds,
4  seed = 7,
5  sample_size = 16,
6  strength = 1,
7  optimization = "random-cd"
8  )
9lhs_input_data.head(2)

hole_area

pressure

pipe_diameter

0

0.006205

443808.090862

0.2

1

0.009417

564156.088257

0.2

В функцию первым аргументом передаётся экземпляр класса ExplorationModel, а вторым аргументом передаётся ранее созданный словарь variable_bounds, содержащий нижние и верхние значения границ параметров.

Также в функцию передаётся именованный параметр sample_size со значением 16 количества необходимых параметрических исследований, которое далее необходимо будет выполнить. Настройки strength и optimization необходимы для управления равномерностью заполнения пространства значений параметров, а seed необходим на случай отладки или в случае необходимости обеспечения повторяемости случайного набора значений глобальных переменных.

5.1.  Сравнение алгоритма подготовки разреженного набора с алгоритмом подготовки сетки значений параметров#

Для сравнения разных алгоритмов подготовки подготовки наборов значений параметров требуется выполнить в следующей ячейке код отображения распределения значений параметров hole_area и pressure, полученных ранее функцией get_cartesian_product и функцией get_latin_hypercube.

axis = input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:green')
lhs_input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:orange', ax = axis)
axis.set_xlabel("hole_area $[m^2]$")
axis.set_ylabel("pressure $[Pa]$")

На графике ниже приняты следующие обозначения.

Метки

Описание

Зелёные метки

Сетка значений параметров, полученных декартовым произведением исходных множеств с помощью функции get_cartesian_product

Оранжевые метки

Разреженный набор значений параметров, полученный с помощью функции get_latin_hypercube

../../../_images/input_data_cart_prod_and_lhs-8ce9854f.png

График распределения значений параметров в результате работы двух алгоритмов: 1. Алгоритм подготовки разреженного набора значений параметров; 2. Алгоритмом подготовки сетки значений параметров#

На графике выше видно, что набор значений, полученный функцией get_latin_hypercube точках достаточно равномерно заполняет пространство значений для sample_size = 16 наборов параметров.

Осторожно

Как недостаток алгоритма подготовки разреженного набора по методу латинского гиперкуба необходимо отметить, что в наборе значений параметров отсутствуют значения непосредственно на границах параметров, что может быть важно при оценке критических режимов эксплуатации системы.

5.2.  Выполнение цикла расчётов модели на платформе REPEAT VISION#

В следующей ячейке выполним создание общей таблицы для сохранения результатов расчёта и последующего выполнения анализа параметрических исследований (Описание необходимости такого действия ранее приводилось в разделе Подготовка данных для исследований).

lhs_design_cases = lhs_input_data.copy(deep = True)
lhs_design_cases["flowrate"] = pd.NA

Далее выполним цикл расчётов модели на платформе REPEAT VISION, применив ранее созданную функцию solve.

solve(lhs_input_data, lhs_design_cases)

5.3.  Анализ результатов параметрических исследований для алгоритма подготовки разреженного набора значений параметров#

В следующей ячейке выполним вызов функции plot_3d_scatter для визуализации результатов расчётов, полученных на разреженном наборе значений параметров.

plot_3d_scatter(lhs_design_cases)
../../../_images/results_lhs-95329c1a.png

Результаты расчёта массового расхода flowrate на разреженном наборе значений параметров pressure и hole_area#

Несмотря на достаточно хорошую равномерность покрытия пространства значений параметров, очевидно, не хватает результатов массового расхода flowrate на границах значений параметров параметров pressure и hole_area, как отмечалось выше в разделе Сравнение алгоритма подготовки разреженного набора с алгоритмом подготовки сетки значений параметров.

5.4.  Код всей программы для подготовки разреженного набора значений параметров#

Для удобства обзора и копирования ниже приведён код, рассмотренной выше программы выполнения параметрических исследований на разреженном наборе значений параметров. Код инициализации взаимодействия с платформой REPEAT VISION приведён в разделе Код всей программы выполнения параметрических исследований на сетке значений параметров.

variable_bounds = dict(
    hole_area = [1e-7, 0.02],
    pressure = [1e4, 1e6],
    pipe_diameter = 0.2,
)
lhs_input_data = ps.get_latin_hypercube(
  model, 
  variable_bounds,
  seed = 7,
  sample_size = 16,
  strength = 1,
  optimization = "random-cd"
  )
lhs_input_data.head(2)

axis = input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:green')
lhs_input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:orange', ax = axis)
axis.set_xlabel("hole_area $[m^2]$")
axis.set_ylabel("pressure $[Pa]$")

lhs_design_cases = lhs_input_data.copy(deep = True)
lhs_design_cases["flowrate"] = pd.NA
solve(lhs_input_data, lhs_design_cases)
plot_3d_scatter(lhs_design_cases)

6.  Объединение методики подготовки разреженного набора значений с методикой подготовки сетки значений параметров#

Попробуем выполнить объединение двух методик следующим образом. Для граничных значений параметров создадим 4 набора параметров на сетке: 2 набора для hole_area и 2 для pressure.

grid_input_data = ps.get_cartesian_product(
    model, 
    variable_values = dict(
        hole_area = np.linspace(1e-7, 0.02, num = 2),
        pressure = np.linspace(1e4, 1e6, num = 2),
        pipe_diameter = np.array([0.2]),
    )
)

Далее с помощью алгоритма подготовки разреженного набора значений создадим 16 наборов параметров, как в разделе выше.

lhs_input_data = ps.get_latin_hypercube(
    model, 
    variable_bounds = dict(
        hole_area = [1e-7, 0.02],
        pressure = [1e4, 1e6],
        pipe_diameter = 0.2,
        ),
    seed = 7,
    sample_size = 16,
    strength = 1,
    optimization = "random-cd"
  )

На следующем шаге выполним объединение наборов параметров в общую таблицу исходных данных для параметрических исследований.

input_data = pd.concat(
  [grid_input_data, lhs_input_data], 
  ignore_index = True
  )
design_cases = input_data.copy(deep = True)
design_cases["flowrate"] = pd.NA
input_data.shape()
#
# (20, 3)

В результате выполнения ячейки выше сформировано 20 наборов значений для параметрических исследований.

Теперь, выполнив ячейку ниже, посмотрим на получившийся набор значений параметров hole_area и pressure.

axis = grid_input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:green')
lhs_input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:orange', ax = axis)
../../../_images/input_data_common-911251bf.png

Распределения значений объединённого набора параметров#

На графике выше видно, что мы получили разреженный набор значений при наличии значений на границах пространства значений параметров.

Далее необходимо выполнить расчёт для последующего анализа, который можно сделать с помощью трёхмерной картины распределения результатов расчёта, представленной на рисунке ниже.

solve(input_data, design_cases)
plot_3d_scatter(design_cases)
../../../_images/results_common-b174f3a5.png

Результаты расчёта массового расхода flowrate на объединённом наборе значений параметров pressure и hole_area#

В итоге на достаточно равномерно распределённом пространстве значений параметров получены результаты расчётов массового расхода flowrate на 20 наборах значений (против 30 наборов значений, полученных с помощью алгоритма подготовки сетки) с экономией 30% в размерности исследовательской задачи, влияющей на продолжительность выполнения параметрических исследований.

6.1.  Код всей программы объединения методики подготовки разреженного набора значений с методикой подготовки сетки значений параметров#

Для удобства обзора и копирования ниже приведён код, рассмотренной выше программы объединения методики подготовки разреженного набора значений с методикой подготовки сетки значений параметров. Код инициализации взаимодействия с платформой REPEAT VISION приведён в разделе Код всей программы выполнения параметрических исследований на сетке значений параметров.

grid_input_data = ps.get_cartesian_product(
    model, 
    variable_values = dict(
        hole_area = np.linspace(1e-7, 0.02, num = 2),
        pressure = np.linspace(1e4, 1e6, num = 2),
        pipe_diameter = np.array([0.2]),
    )
)
lhs_input_data = ps.get_latin_hypercube(
    model, 
    variable_bounds = dict(
        hole_area = [1e-7, 0.02],
        pressure = [1e4, 1e6],
        pipe_diameter = 0.2,
        ),
    seed = 7,
    sample_size = 16,
    strength = 1,
    optimization = "random-cd"
  )
input_data = pd.concat(
  [grid_input_data, lhs_input_data], 
  ignore_index = True
  )
design_cases = input_data.copy(deep = True)
design_cases["flowrate"] = pd.NA
input_data.shape()

axis = grid_input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:green')
lhs_input_data.plot.scatter(x = 'hole_area', y = 'pressure', c = 'tab:orange', ax = axis)

solve(input_data, design_cases)
plot_3d_scatter(design_cases)

7.  Выводы#

В результаты пошагового выполнения данного практического руководства вы получили:

  1. Рекомендации выбора метода параметрических исследований;

  2. Понимание о преимуществах и недостатках рассмотренных алгоритмов подготовки наборов значений параметров;

  3. Рекомендации по применению алгоритмов подготовки наборов значений параметров;

  4. Представление об основных шагах, необходимых для выполнения параметрических исследованиях на платформе REPEAT VISION.