Source code for gemseo.algos.doe.base_doe_settings
# Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License version 3 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""Settings for the DOE library."""
from __future__ import annotations
from collections.abc import Callable # noqa:TC003
from collections.abc import Sequence # noqa:TC003
from typing import Annotated
from typing import Any # noqa:TC003
from pydantic import Field
from pydantic import NonNegativeFloat # noqa:TC002
from pydantic import PositiveInt # noqa:TC002
from pydantic import WithJsonSchema
from gemseo.algos.base_driver_settings import BaseDriverSettings
from gemseo.algos.evaluation_problem import EvaluationType # noqa:TC001
[docs]
class BaseDOESettings(BaseDriverSettings):
"""The settings for the ``DOELibrary``."""
eval_func: bool = Field(
default=True,
description="Whether to sample the function computing the output values.",
)
eval_jac: bool = Field(
default=False,
description="Whether to sample the function computing the Jacobian data.",
)
n_processes: PositiveInt = Field(
default=1,
description="The maximum number of processes to parallelize the execution.",
)
wait_time_between_samples: NonNegativeFloat = Field(
default=0.0,
description="The time to wait between each sample evaluation, in seconds.",
)
callbacks: Sequence[
Annotated[Callable[[int, EvaluationType], Any], WithJsonSchema({})]
] = Field(
default=(),
description="""The functions to be evaluated after each functions evaluation.
The functions evaluation is done by
:meth:`.OptimizationProblem.evaluate_functions` and the callback must be
called as ``callback(index, (output, Jacobian))``.""",
)
normalize_design_space: bool = Field(
default=False,
description="Whether to normalize the design space variables between 0 and 1.",
)