pyfemtet.opt.optimizer package

サブパッケージ

モジュール内容

class pyfemtet.opt.optimizer.AbstractOptimizer[ソース]

ベースクラス: OptimizationData

add_categorical_parameter(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_constant_value(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_constraint(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_expression(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_expression_string(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_expression_sympy(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_fem(fem)[ソース]
パラメータ:

fem (AbstractFEMInterface) –

戻り値の型:

OptimizationDataPerFEM

add_objective(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_objectives(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_other_output(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_parameter(*args, **kwargs)[ソース]
パラメータ:

self (AbstractOptimizer) –

add_sub_fidelity_model(name, sub_fidelity_model, fidelity)[ソース]
パラメータ:
add_trial(parameters)[ソース]
パラメータ:

parameters (dict[str, str | Real]) –

entire_status: WorkerStatus
property fem: AbstractFEMInterface | tuple[AbstractFEMInterface, ...]
fidelity: float | str | None
get_parameter(format='dict')[ソース]
パラメータ:

format (Literal['dict', 'values', 'raw']) –

get_variables(format='dict')[ソース]
パラメータ:

format (Literal['dict', 'values', 'raw']) –

history: History
include_queued_in_n_trials: bool
n_trials: int | None
run()[ソース]
戻り値の型:

None

seed: int | None
set_solve_condition(fun)[ソース]
パラメータ:

fun (Callable[[History], bool]) –

set_termination_condition(fun)[ソース]
パラメータ:

fun (Callable[[History], bool] | None) –

sub_fidelity_models: SubFidelityModels | None
sub_fidelity_name: str
timeout: float | None
worker_status: WorkerStatus
worker_status_list: list[WorkerStatus]
class pyfemtet.opt.optimizer.OptunaOptimizer(sampler_class=None, sampler_kwargs=None)[ソース]

ベースクラス: AbstractOptimizer

ハイパーパラメータ最適化のためにOptunaを利用するオプティマイザクラス。

このクラスはOptunaを使用して最適化解析を実施するためのインターフェースを提供します。スタディのライフサイクル、サンプラーの設定、およびトライアルの実行を管理します。

study_name

Optuna スタディの名前。

Type:

str

storage

Optuna スタディのストレージ URL またはオブジェクト。

Type:

str | optuna.storages.BaseStorage

storage_path

Optunaスタディストレージへのパス。

Type:

str

current_trial

現在評価中の Optuna トライアル。

Type:

optuna.trial.Trial | None

sampler_class

使用するOptunaサンプラーのクラス。

Type:

type[optuna.samplers.BaseSampler]

sampler_kwargs

サンプラーを初期化するためのキーワード引数。

Type:

dict

n_trials

スタディで実行する試行回数。

Type:

int | None

timeout

最適化に許可される最大時間。

Type:

float | None

callbacks

最適化中に呼び出すコールバック関数の一覧。

Type:

list

パラメータ:
  • sampler_class (type[optuna.samplers.BaseSampler], optional) – パラメーター値を提案するためのサンプラークラス。None の場合はデフォルトで TPESampler が使用されます。

  • sampler_kwargs (dict[str, ...], optional) – サンプラーのキーワード引数の辞書。デフォルトは空の辞書です。

例外:

None

サンプル

>>> optimizer = OptunaOptimizer()
>>> optimizer.n_trials = 100
>>> optimizer.timeout = 600
>>> # Further configuration and usage...
add_categorical_parameter(name, initial_value, choices, properties=None, *, pass_to_fem=True, fix=False)[ソース]
パラメータ:
戻り値の型:

None

add_parameter(name, initial_value, lower_bound=None, upper_bound=None, step=None, properties=None, *, pass_to_fem=True, fix=False)[ソース]
パラメータ:
  • name (str) –

  • initial_value (float) –

  • lower_bound (float | None) –

  • upper_bound (float | None) –

  • step (float | None) –

  • properties (dict[str, ...] | None) –

  • pass_to_fem (bool) –

  • fix (bool) –

戻り値の型:

None

callbacks: list
current_trial: optuna.trial.Trial | None
entire_status: WorkerStatus
fidelity: Fidelity | None
history: History
include_queued_in_n_trials: bool
n_trials: int | None
run()[ソース]
sampler_class: type[optuna.samplers.BaseSampler]
sampler_kwargs: dict
seed: int | None
solve_condition: Callable[[History], bool]
storage: str | optuna.storages.BaseStorage
storage_path: str
study_name = 'pyfemtet-study'
sub_fidelity_models: SubFidelityModels | None
sub_fidelity_name: str
termination_condition: Callable[[History], bool]
timeout: float | None
trial_queue: TrialQueue
worker_status: WorkerStatus
worker_status_list: list[WorkerStatus]
class pyfemtet.opt.optimizer.PartialOptimizeACQFConfig(*, gen_candidates='scipy', timeout_sec=None, method=None, scipy_minimize_kwargs=None, constraint_enhancement=None, constraint_scaling=1000000.0)[ソース]

ベースクラス: object

パラメータ:
  • gen_candidates (str) –

  • timeout_sec (float) –

  • method (str) –

  • scipy_minimize_kwargs (dict) –

  • constraint_enhancement (float) –

  • constraint_scaling (float) –

default_method = 'SLSQP'
class pyfemtet.opt.optimizer.PoFBoTorchSampler(*, candidates_func=None, constraints_func=None, n_startup_trials=10, consider_running_trials=False, independent_sampler=None, seed=None, device=None, observation_noise=None, partial_optimize_acqf_kwargs=None, pof_config=None)[ソース]

ベースクラス: BoTorchSampler

注釈

v2.4.0で実験的機能として追加されました。インターフェースは予告なく新版で変更される場合があります。詳細は https://github.com/optuna/optuna/releases/tag/v2.4.0 をご覧ください。

パラメータ:
  • candidates_func (CandidateFunc) –

  • constraints_func (Callable[[FrozenTrial], Sequence[float]] | None) –

  • n_startup_trials (int) –

  • consider_running_trials (bool) –

  • independent_sampler (BaseSampler | None) –

  • seed (int | None) –

  • device (torch.device | None) –

  • observation_noise (float | str | None) –

  • partial_optimize_acqf_kwargs (PartialOptimizeACQFConfig) –

  • pof_config (PoFConfig) –

current_gp_model: SingleTaskGP | None
observation_noise: float | str | None
partial_optimize_acqf_kwargs: PartialOptimizeACQFConfig
pof_config: PoFConfig
pyfemtet_optimizer: AbstractOptimizer
sample_relative(study, trial, search_space)[ソース]

与えられた探索空間内のサンプルパラメータ。

このメソッドは各試行の開始時、すなわち目的関数の評価直前に一度呼び出されます。このメソッドは、ガウス過程やCMA-ESのようにパラメータ間の関係性を利用するサンプリングアルゴリズムに適しています。

注釈

ビルトインサンプラーは新しいパラメータをサンプリングする際に失敗した試行を無視します。したがって、失敗した試行はサンプラーの観点では削除されたものと見なされます。

パラメータ:
  • study (Study) – 対象解析対象。

  • trial (FrozenTrial) – 対象試行オブジェクト。このオブジェクトを変更する前にコピーを作成してください。

  • search_space (dict[str, BaseDistribution]) – infer_relative_search_space() から返される探索空間。

戻り値:

最適化で使用されるパラメータ名と値を含む dict です。

戻り値の型:

dict[str, Any]

train_model_c(study, search_space, feature_dim_bound=None, feature_param=None)[ソース]
パラメータ:
  • feature_dim_bound (list[float] | None) –

  • feature_param (float | ndarray | None) –

class pyfemtet.opt.optimizer.PoFConfig(consider_pof: 'bool' = True, consider_explicit_hard_constraint: 'bool' = True, _states_to_consider_pof: 'list[PFTrialState]' = <factory>, feasibility_cdf_threshold: 'float | str' = 0.5, feasibility_noise: 'float | str | None' = None, remove_hard_constraints_from_gp: 'bool' = False)[ソース]

ベースクラス: object

パラメータ:
  • consider_pof (bool) –

  • consider_explicit_hard_constraint (bool) –

  • _states_to_consider_pof (list[TrialState]) –

  • feasibility_cdf_threshold (float | str) –

  • feasibility_noise (float | str | None) –

  • remove_hard_constraints_from_gp (bool) –

consider_explicit_hard_constraint: bool = True
consider_pof: bool = True
feasibility_cdf_threshold: float | str = 0.5
feasibility_noise: float | str | None = None
remove_hard_constraints_from_gp: bool = False
class pyfemtet.opt.optimizer.ScipyOptimizer(method=None, tol=None)[ソース]

ベースクラス: AbstractOptimizer

SciPy の最適化手法を利用するオプティマイザクラス。

このクラスは SciPy の最適化ルーチンのラッパーとして機能し、最適化手法、許容誤差、およびオプションのカスタマイズを可能にします。また、拘束条件の取り扱いに対して強化およびスケーリングの機構を提供します。

method

使用する最適化手法(例:「BFGS」、「Nelder-Mead」)。

Type:

str

tol

終了の許容誤差。

Type:

float or None

options

SciPyオプティマイザに渡す追加のオプション。

Type:

dict

constraint_enhancement

拘束処理を強化するために小さな値を加算しました。

Type:

float

constraint_scaling

拘束に適用されるスケーリング係数。

Type:

float

パラメータ:
  • method (str) – 使用する最適化手法(例:「BFGS」、「Nelder-Mead」)。

  • tol (float or None) – 終了の許容誤差。

add_sub_fidelity_model(name, sub_fidelity_model, fidelity)[ソース]
パラメータ:
add_trial(parameters)[ソース]
パラメータ:

parameters (dict[str, str | Real]) –

run()[ソース]
class pyfemtet.opt.optimizer.SubFidelityModel[ソース]

ベースクラス: AbstractOptimizer