pyfemtet.opt package

サブパッケージ

サブモジュール

モジュール内容

class pyfemtet.opt.FEMOpt(fem=None, opt=None)[ソース]

ベースクラス: object

指定されたオプティマイザと FEM インターフェースを用いて有限要素法(FEM)最適化を管理するためのクラス。

opt

最適化に使用されるオプティマイザのインスタンス。

Type:

AbstractOptimizer

monitor_info

ホストやポートなどの監視情報を格納する辞書。

Type:

dict[str, str | int | None]

パラメータ:
  • fem (AbstractFEMInterface, optional) – FEMインターフェースのインスタンス。デフォルトはNoneで、その場合はFemtetInterfaceが使用されます。

  • opt (AbstractOptimizer, optional) – オプティマイザのインスタンスです。デフォルトは None で、その場合は OptunaOptimizer が使用されます。

add_categorical_parameter(name, initial_value=None, choices=None, properties=None, *, pass_to_fem=True, fix=False)[ソース]
パラメータ:
戻り値の型:

None

add_constant_value(name, value, properties=None, *, pass_to_fem=True)[ソース]
パラメータ:
add_constraint(name, fun, lower_bound=None, upper_bound=None, args=None, kwargs=None, strict=True, using_fem=None)[ソース]
パラメータ:
add_expression(name, fun, properties=None, args=None, kwargs=None, *, pass_to_fem=True)[ソース]
パラメータ:
戻り値の型:

None

add_expression_string(name, expression_string, properties=None, *, pass_to_fem=True)[ソース]
パラメータ:
  • name (str) –

  • expression_string (str) –

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

  • pass_to_fem (bool) –

戻り値の型:

None

add_expression_sympy(name, sympy_expr, properties=None, *, pass_to_fem=True)[ソース]
パラメータ:
  • name (str) –

  • sympy_expr (Expr) –

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

  • pass_to_fem (bool) –

戻り値の型:

None

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

fem (AbstractFEMInterface) –

戻り値の型:

OptimizationDataPerFEM

add_objective(name, fun, direction='minimize', args=None, kwargs=None)[ソース]
パラメータ:
戻り値の型:

None

add_objectives(names, fun, n_return, directions=None, args=None, kwargs=None)[ソース]
パラメータ:
add_other_output(name, fun, args=None, kwargs=None)[ソース]
パラメータ:
add_parameter(name, initial_value=None, lower_bound=None, upper_bound=None, step=None, properties=None, *, pass_to_fem=True, fix=False)[ソース]
パラメータ:
  • name (str) –

  • initial_value (float | None) –

  • lower_bound (float | None) –

  • upper_bound (float | None) –

  • step (float | None) –

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

  • pass_to_fem (bool) –

  • fix (bool) –

戻り値の型:

None

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

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

opt: AbstractOptimizer
optimize(n_trials=None, n_parallel=1, timeout=None, wait_setup=True, confirm_before_exit=True, history_path=None, with_monitor=True, scheduler_address=None, seed=None)[ソース]
パラメータ:
  • n_trials (int | None) –

  • n_parallel (int) –

  • timeout (float | None) –

  • wait_setup (bool) –

  • confirm_before_exit (bool) –

  • history_path (str | None) –

  • with_monitor (bool) –

  • scheduler_address (str | None) –

  • seed (int | None) –

set_monitor_host(host=None, port=None)[ソース]

プロセスモニターのホスト IP アドレスとポートを設定します。

パラメータ:
  • host (str) – モニタサーバーのホスト名または IP アドレスです。

  • port (int, optional) – モニタサーバーのポート番号です。None の場合、8080 が使用されます。デフォルトは None です。

Tip

ホスト 0.0.0.0 を指定することで、ローカルネットワーク上のすべてのコンピュータからモニターを表示できます。

ホスト名が指定されていない場合、モニタサーバーは localhost でホストされます。

デフォルトでは、ブラウザで `localhost:8080` にアクセスすることでプロセスモニターにアクセスできます。

set_random_seed(seed)[ソース]
パラメータ:

seed (int) –

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

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

class pyfemtet.opt.FemtetInterface(femprj_path=None, model_name=None, connect_method='auto', save_pdt='all', strictly_pid_specify=True, allow_without_project=False, open_result_with_gui=True, always_open_copy=False, parametric_output_indexes_use_as_objective=None)[ソース]

ベースクラス: COMInterface

最適化ツールから Femtet を制御します。

パラメータ:
  • femprj_path (str, optional) – プロジェクトファイルへのパスです。指定されていない場合は、接続された Femtet から取得します。

  • model_name (str, optional) – モデルの名前です。指定されていない場合は、接続された Femtet から取得するか、Femtet がプロジェクトファイルを開いたときの最初のモデルを取得します。

  • connect_method (str, optional) – 接続方法です。デフォルトは 『auto』 です。他の有効な値は 『new』 または 『existing』 です。

  • save_pdt (str, optional) – 結果ファイルを保存する方法です。 『all』, 『optimal』 または 『none』 を指定できます。デフォルトは 『all』 です。

  • strictly_pid_specify (bool, optional) – Femtet 接続で PID を厳密に指定するかどうかです。デフォルトは True です。

  • allow_without_project (bool, optional) – プロジェクトなしでの実行を許可するかどうかです。デフォルトは False です。

  • open_result_with_gui (bool, optional) – 結果を GUI で開くかどうかです。デフォルトは True です。

  • parametric_output_indexes_use_as_objective (dict[int, str or float], optional) –

    目的関数として使用するパラメトリック出力インデックスのリストとその方向です。指定されていない場合は None となり、パラメトリック出力は目的として使用されません。

    注釈

    インデックスは0から始まりますが、Femtet のパラメトリック解析ダイアログの結果出力設定タブには、1から始まる設定番号が表示されます。

    警告

    この引数を設定すると、femprj ファイルに設定されているパラメトリック解析スイープテーブルが削除されます。 スイープテーブルを削除したくない場合は、元のファイルをコピーしてください。

警告

コンストラクタで strictly_pid_specify=True を指定しても、並列処理では接続の動作が strictly_pid_specify=False のようになります。これは大きなオーバーヘッドによるものです。したがって、n_parallel が 2 以上の場合は、FEMOpt.optimize() を実行する前にすべての Femtet プロセスを閉じるべきです。

Tip

Python と Femtet を接続する方法についての情報を探している場合は、connect_femtet() を参照してください。

close(timeout=15, force=True)[ソース]

Destructor.

May not quit Femtet. If you want to quit certainly, Please use quit() method.

com_members = {'Femtet': 'FemtetMacro.Femtet'}
connect_femtet(connect_method='auto', pid=None)[ソース]

Femtet プロセスに接続します。

パラメータ:
  • connect_method (str, optional) – 接続方法です。 『new』 、 『existing』 、または 『auto』 を指定できます。デフォルトは 『auto』 です。

  • pid (int or None, optional) – 接続したい既存の Femtet プロセスのプロセス ID です。

注釈

接続方法が 『new』 の場合、新しい Femtet プロセスを起動して接続します。pid は無視されます。

注釈

『existing』 の場合、既存の Femtet プロセスに接続します。ただし、接続できる Femtet がない場合(すなわち、他の Python または Excel プロセスにすでに接続されている場合)、例外をスローします。

注釈

『auto』 に設定されている場合、最初に 『existing』 を試み、失敗した場合は 『new』 で接続します。pid が指定されていて接続に失敗した場合、別の Femtet プロセスへの接続は試みません。

femtet_is_alive()[ソース]

接続された Femtet プロセスが存在するかどうかを返します。

戻り値の型:

bool

load_objectives(*args, **kwargs)
property object_pass_to_fun

ユーザー定義目的関数の第1引数に渡されるオブジェクト。

戻り値:

Femtet の COM オブジェクト.

戻り値の型:

Femtet (CDispatch)

open(femprj_path, model_name=None)[ソース]

接続された Femtet で特定の解析モデルを開きます。

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

  • model_name (str | None) –

戻り値の型:

None

postprocess(*args, **kwargs)
preprocess(*args, **kwargs)
quit(timeout=15, force=True)[ソース]

接続された Femtet を強制終了します。

reopen()[ソース]
solve(*args, **kwargs)
update(*args, **kwargs)
update_model(*args, **kwargs)
update_parameter(*args, **kwargs)
use_parametric_output_as_objective(number, direction='minimize')[ソース]

Femtetのパラメトリック解析の出力設定を目的関数として使用します。

パラメータ:
  • number (int) – Femtet のパラメトリック分析ダイアログにおける出力設定タブの行番号です。1 から始まります。

  • direction (str | float) – 最適化の方向です。変数の値は 『maximize』 、 『minimize』 、または浮動小数点値です。デフォルトは 『minimize』 です。

戻り値:

None

戻り値の型:

None

class pyfemtet.opt.FemtetWithNXInterface(prt_path, femprj_path=None, model_name=None, connect_method='auto', save_pdt='all', strictly_pid_specify=True, allow_without_project=False, open_result_with_gui=True, parametric_output_indexes_use_as_objective=None, always_open_copy=False, export_curves=None, export_surfaces=None, export_solids=None, export_flattened_assembly=None)[ソース]

ベースクラス: FemtetInterface, _NXInterface

Femtet と NX を制御します。

このクラスを使用すると、NX で作成された CAD ファイルを Parasolid 形式を介して Femtet プロジェクトにインポートできます。これにより、設計変数を NX に渡し、モデルを更新し、更新されたモデルを使用して Femtet で解析を実行することができます。

パラメータ:
  • prt_path (str) – インポート元の CAD データを含む .prt ファイルへのパスです。

  • export_curves (bool or None, optional) – デフォルトは None です。

  • export_surfaces (bool or None, optional) – デフォルトは None です。

  • export_solids (bool or None, optional) – デフォルトは None です。

  • export_flattened_assembly (bool or None, optional) – デフォルトは None です。

  • femprj_path (str) –

  • model_name (str) –

  • connect_method (str) –

  • save_pdt (str) –

  • strictly_pid_specify (bool) –

  • allow_without_project (bool) –

  • open_result_with_gui (bool) –

  • parametric_output_indexes_use_as_objective (dict[int, str | float]) –

メモ

`export_*` 引数は NX の Parasolid エクスポート設定を設定します。None の場合、PyFemtet は NX の現在の設定を変更しません。

Femtet にインポートされた Parasolid をエクスポートする際に使用された設定から、これらの値を変更しないことを推奨します。

update_model()[ソース]
class pyfemtet.opt.FemtetWithSolidworksInterface(sldprt_path, femprj_path=None, model_name=None, connect_method='auto', save_pdt='all', strictly_pid_specify=True, allow_without_project=False, open_result_with_gui=True, parametric_output_indexes_use_as_objective=None, always_open_copy=False, close_solidworks_on_terminate=False, solidworks_visible=True)[ソース]

ベースクラス: FemtetInterface, SolidworksInterface, AbstractFEMInterface

Femtet と SolidWorks の操作を統合するインターフェースクラス。

このクラスは、Femtet と SolidWorks のインターフェースの機能を組み合わせており、シミュレーション(Femtet)と CAD 操作(SolidWorks)間の連携動作を可能にします。

パラメータ:
  • sldprt_path (str) – SolidWorks 部品ファイル(.sldprt)へのパス。

  • femprj_path (str, optional) – Femtetプロジェクトファイル(.femprj)へのパス。デフォルトはNoneです。

  • model_name (str, optional) – プロジェクト内のモデル名。デフォルトは None です。

  • connect_method (str, optional) – 接続方法です。』new』 、 『existing』 、または 『auto』 を指定できます。デフォルトは 『auto』 です。

  • save_pdt (str, optional) – 保存するデータを指定します。デフォルトは「all」です。

  • strictly_pid_specify (bool, optional) – Femtet 接続で PID を厳密に指定するかどうかです。デフォルトは True です。

  • allow_without_project (bool, optional) – プロジェクトなしでの実行を許可するかどうかです。デフォルトは False です。

  • open_result_with_gui (bool, optional) – 結果を GUI で開くかどうかです。デフォルトは True です。

  • parametric_output_indexes_use_as_objective (dict[int, str | float], optional) – 目的関数として使用されるパラメトリック出力のインデックス。デフォルトは None です。

  • always_open_copy (bool, optional) – True の場合、常にプロジェクトのコピーを開きます。デフォルトは False です。

  • close_solidworks_on_terminate (bool, optional) – True の場合、このオブジェクトが破棄されると SolidWorks は終了します。デフォルトは False です。

  • solidworks_visible (bool, optional) – True の場合、SolidWorks は表示モードで起動されます。初期値は True です。

close(timeout=15, force=True)[ソース]

Destructor.

May not quit Femtet. If you want to quit certainly, Please use quit() method.

update_model()[ソース]

Update .sldprt

update_parameter(x, with_warning=False)[ソース]
パラメータ:

x (dict[str, Variable]) –

戻り値の型:

None

class pyfemtet.opt.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
n_trials: int | None
run()[ソース]
sampler_class: type[optuna.samplers.BaseSampler]
sampler_kwargs: dict
storage: str | optuna.storages.BaseStorage
storage_path: str
study_name = 'pyfemtet-study'
timeout: float | None
class pyfemtet.opt.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()[ソース]