Version 3.4 リリースノート

製品名:

fxLooper

バージョン:

3.4.0

リリース年月:

2026年3月

API

ベイズ最適化の改良

ベイズ最適化(fxlp.bo.BO モジュール)において、デフォルトのカーネルが変更されました。これにより、最適化の安定性や性能が向上することが期待できます。

ベイズ最適化のソルバー(fxlp.bo.BO クラスなど)における従来のデフォルトのカーネルは、単一のMatern 5/2 カーネルで、

kernel = fxlp.bo.Matern52()

でしたが、新しいデフォルトのカーネルは、

kernel = fxlp.bo.ConstantKernel() * fxlp.bo.Matern52() + fxlp.bo.WhiteKernel()

と、3個の基本カーネルの組合せとなりました。ここで、ConstantKernel (定数カーネル)と WhiteKernel (白色雑音カーネル)は新規で追加されたカーネルです。また、カーネル同士の加算と乗算も可能になりました。

これらの3個の基本カーネルはそれぞれ1個のハイパーパラメーターを持つため、全体ではハイパーパラメーターが3個となります。これにより、ベイズ最適化の内部の回帰モデルの表現力が増加し、最適化の安定性や性能も向上することが期待されます。

CADモジュールAPIの共通化

FreeCADモジュール(fxlp.freecad)やオプションの各種CADモジュールにおいて、APIが公式的に共通化されました。

具体的には、各CADモジュールの基盤となる、基底CADアプリケーションモジュール(fxlp.cad)が導入されました。各CADモジュールの各クラスは、基底モジュールの対応するクラスの派生クラス(サブクラス)となりました。

次のようなプログラムにおいて、2行目のモジュール名と26行目のファイル名(拡張子)を変えるだけで、連携するCADアプリケーションを簡単に切り替えることが可能になります。

 1import fxlp
 2from fxlp import freecad as cad
 3
 4
 5def main():
 6    system = fxlp.System()
 7
 8    # 独立変数
 9    system.add_x('x1', 20, 60)
10    system.add_x('x2', 20, 60)
11    system.add_x('x3', 20, 60)
12
13    # 目的関数
14    system.add_f('f')
15
16    # タスク
17    system.add_task(cad_task, cad.App())
18
19    # 最適化ソルバー
20    ...
21
22    return system
23
24
25def cad_task(case, app):
26    doc = app.open('model.FCStd')           # CADファイルを開く
27    doc.set_value('length', case['x1'])     # 変数「length」の値を変更
28    doc.set_value('width', case['x2'])      # 変数「width」の値を変更
29    doc.set_value('height', case['x3'])     # 変数「height」の値を変更
30    doc.save()                              # CADファイルを上書き保存
31    doc.export_stl('shape.stl')             # STLファイルとしても出力
32    case['f'] = doc.get_volume()            # 体積を取得
33    doc.close()                             # CADファイルを閉じる

またその他、CADモジュール関係のAPIの拡充を行いました。

全般

連携可能CADの新規追加

新たに以下のCADアプリケーションとの連携が可能になり、オプションモジュールとして新規追加されました。

  • ThinkDesign(fxlp.thinkdesign

  • Autodesk Inventor(fxlp.inventor

その他

  • 各種オプションモジュールの機能追加・仕様変更を行いました。