pyfemtet 1.0.0a0__py3-none-any.whl → 1.0.0b0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyfemtet might be problematic. Click here for more details.

@@ -491,7 +491,7 @@ msgstr "グラフを自動更新"
491
491
 
492
492
  #: pyfemtet/_i18n/messages.py:242
493
493
  msgid "Interrupt Optimization"
494
- msgstr "最適化を中断しました"
494
+ msgstr "最適化を中断"
495
495
 
496
496
  #: pyfemtet/_i18n/messages.py:244
497
497
  msgid "Result"
@@ -24,7 +24,7 @@ warnings.filterwarnings('ignore', category=RuntimeWarning, message="Couldn't det
24
24
 
25
25
  cfg.set({'distributed.scheduler.worker-ttl': None})
26
26
 
27
- logger = get_module_logger('opt.dask', True)
27
+ logger = get_module_logger('opt.dask', False)
28
28
 
29
29
 
30
30
  __all__ = [
pyfemtet/opt/__init__.py CHANGED
@@ -1,11 +1,13 @@
1
1
  from .femopt import FEMOpt
2
- from .interface import FemtetInterface
2
+ from .interface import FemtetInterface, FemtetWithNXInterface, FemtetWithSolidworksInterface
3
3
  from .optimizer import OptunaOptimizer, ScipyOptimizer
4
4
 
5
5
 
6
6
  __all__ = [
7
7
  'FEMOpt',
8
8
  'FemtetInterface',
9
+ 'FemtetWithNXInterface',
10
+ 'FemtetWithSolidworksInterface',
9
11
  'OptunaOptimizer',
10
12
  'ScipyOptimizer',
11
13
  ]
pyfemtet/opt/femopt.py CHANGED
@@ -71,16 +71,20 @@ class FEMOpt:
71
71
  name: str,
72
72
  expression_string: str,
73
73
  properties: dict[str, ...] | None = None,
74
+ *,
75
+ pass_to_fem: bool = True,
74
76
  ) -> None:
75
- self.opt.add_expression_string(name, expression_string, properties)
77
+ self.opt.add_expression_string(name, expression_string, properties, pass_to_fem=pass_to_fem)
76
78
 
77
79
  def add_expression_sympy(
78
80
  self,
79
81
  name: str,
80
82
  sympy_expr: sympy.Expr,
81
83
  properties: dict[str, ...] | None = None,
84
+ *,
85
+ pass_to_fem: bool = True,
82
86
  ) -> None:
83
- self.opt.add_expression_sympy(name, sympy_expr, properties)
87
+ self.opt.add_expression_sympy(name, sympy_expr, properties, pass_to_fem=pass_to_fem)
84
88
 
85
89
  def add_expression(
86
90
  self,
@@ -89,8 +93,10 @@ class FEMOpt:
89
93
  properties: dict[str, ...] | None = None,
90
94
  args: tuple | None = None,
91
95
  kwargs: dict | None = None,
96
+ *,
97
+ pass_to_fem: bool = True,
92
98
  ) -> None:
93
- self.opt.add_expression(name, fun, properties, args, kwargs)
99
+ self.opt.add_expression(name, fun, properties, args, kwargs, pass_to_fem=pass_to_fem)
94
100
 
95
101
  def add_categorical_parameter(
96
102
  self,
@@ -46,7 +46,7 @@ __all__ = [
46
46
  MAIN_FILTER: dict = {'sub_fidelity_name': MAIN_FIDELITY_NAME}
47
47
 
48
48
 
49
- logger = get_module_logger('opt.history', True)
49
+ logger = get_module_logger('opt.history', False)
50
50
 
51
51
 
52
52
  def create_err_msg_from_exception(e: Exception):
@@ -4,7 +4,6 @@ from typing import TYPE_CHECKING
4
4
 
5
5
  import os
6
6
  import sys
7
- import warnings
8
7
  import subprocess
9
8
  from time import sleep
10
9
  from contextlib import nullcontext
@@ -119,6 +118,7 @@ class FemtetInterface(COMInterface):
119
118
  """
120
119
 
121
120
  com_members = {'Femtet': 'FemtetMacro.Femtet'}
121
+ _show_parametric_index_warning = True # for GUI
122
122
 
123
123
  def __init__(
124
124
  self,
@@ -129,14 +129,19 @@ class FemtetInterface(COMInterface):
129
129
  strictly_pid_specify: bool = True, # dask worker では True にしたいので super() の引数にしない。
130
130
  allow_without_project: bool = False, # main でのみ True を許容したいので super() の引数にしない。
131
131
  open_result_with_gui: bool = True,
132
- parametric_output_indexes_use_as_objective: dict[int, str or float] = None, # TODO: Remove this
133
132
  always_open_copy=False,
133
+ # ユーザーはメソッドを使うことを推奨。GUI などで使用。
134
+ parametric_output_indexes_use_as_objective: dict[int, str | float] = None,
134
135
  ):
135
- # warning
136
136
  if parametric_output_indexes_use_as_objective is not None:
137
- warnings.warn(
138
- "解析モデルに設定された既存のスイープテーブルは削除されます。"
139
- )
137
+ if FemtetInterface._show_parametric_index_warning:
138
+ logger.warning(_(
139
+ en_message='The argument `parametric_output_indexes_use_as_objective` is deprecated. '
140
+ 'Please use `FemtetInterface.use_parametric_output_as_objective()` instead.',
141
+ jp_message='`parametric_output_indexes_use_as_objective` は非推奨の引数です。'
142
+ '代わりに `FemtetInterface.use_parametric_output_as_objective()` '
143
+ 'を使ってください。',
144
+ ))
140
145
 
141
146
  # 引数の処理
142
147
  if femprj_path is None:
@@ -255,6 +260,13 @@ class FemtetInterface(COMInterface):
255
260
  None
256
261
 
257
262
  """
263
+
264
+ # warning
265
+ logger.warning(_(
266
+ en_message='The existing sweep table in the project will be removed.',
267
+ jp_message='解析モデルに設定された既存のスイープテーブルは削除されます。'
268
+ ))
269
+
258
270
  # check
259
271
  if isinstance(direction, str):
260
272
  if direction not in ("minimize", "maximize"):
@@ -504,6 +516,8 @@ class FemtetInterface(COMInterface):
504
516
  name = fun.__name__
505
517
  if fun.__name__ == 'Solve':
506
518
  context = nullcontext()
519
+ elif fun.__name__ == 'solve_via_parametric_dll':
520
+ context = nullcontext()
507
521
 
508
522
  elif isinstance(fun, str):
509
523
 
@@ -525,7 +539,7 @@ class FemtetInterface(COMInterface):
525
539
  'If the optimization is hanging, the most reason is '
526
540
  'a dialog is opening in Femtet and it waits for your '
527
541
  'input. Please confirm there is no dialog in Femtet.',
528
- '{name} の実行に {warning_time_sec} 以上かかっています。'
542
+ '{name} の実行に {warning_time_sec} 秒以上かかっています。'
529
543
  'もし最適化がハングしているならば、考えられる理由として、'
530
544
  'Femtet で予期せずダイアログが開いてユーザーの入力待ちをしている場合があります。'
531
545
  'もし Femtet でダイアログが開いていれば、閉じてください。',
@@ -156,7 +156,7 @@ class FemtetWithNXInterface(FemtetInterface, _NXInterface):
156
156
  strictly_pid_specify: bool = True, # dask worker では True にしたいので super() の引数にしない。
157
157
  allow_without_project: bool = False, # main でのみ True を許容したいので super() の引数にしない。
158
158
  open_result_with_gui: bool = True,
159
- parametric_output_indexes_use_as_objective: dict[int, str or float] = None, # TODO: Remove this
159
+ parametric_output_indexes_use_as_objective: dict[int, str | float] = None,
160
160
  always_open_copy=False,
161
161
  export_curves: bool or None = None,
162
162
  export_surfaces: bool or None = None,
@@ -31,7 +31,7 @@ class FemtetWithSolidworksInterface(FemtetInterface, SolidworksInterface, Abstra
31
31
  strictly_pid_specify: bool = True,
32
32
  allow_without_project: bool = False,
33
33
  open_result_with_gui: bool = True,
34
- parametric_output_indexes_use_as_objective: dict[int, str or float] = None,
34
+ parametric_output_indexes_use_as_objective: dict[int, str | float] = None,
35
35
  always_open_copy=False,
36
36
  close_solidworks_on_terminate=False,
37
37
  solidworks_visible=True,
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import TYPE_CHECKING
3
+ from typing import TYPE_CHECKING, Sequence
4
4
 
5
5
  from pyfemtet.opt.history import *
6
6
 
7
7
  from pyfemtet.opt.interface import AbstractFEMInterface
8
+ from pyfemtet._i18n import _
8
9
 
9
10
  if TYPE_CHECKING:
10
11
  from pyfemtet.opt.optimizer import AbstractOptimizer
@@ -16,6 +17,7 @@ __all__ = [
16
17
 
17
18
 
18
19
  class AbstractSurrogateModelInterfaceBase(AbstractFEMInterface):
20
+ _load_problem_from_fem = True
19
21
  current_obj_values: dict[str, float]
20
22
  train_history: History
21
23
 
@@ -23,8 +25,15 @@ class AbstractSurrogateModelInterfaceBase(AbstractFEMInterface):
23
25
  self,
24
26
  history_path: str = None,
25
27
  train_history: History = None,
28
+ _output_directions: (
29
+ Sequence[str | float]
30
+ | dict[str, str | float]
31
+ | dict[int, str | float]
32
+ ) = None
26
33
  ):
27
34
 
35
+ self._output_directions = _output_directions
36
+
28
37
  # history_path が与えられた場合、train_history をコンストラクトする
29
38
  if history_path is not None:
30
39
  train_history = History()
@@ -37,13 +46,95 @@ class AbstractSurrogateModelInterfaceBase(AbstractFEMInterface):
37
46
  self.current_obj_values = {}
38
47
 
39
48
  def load_objectives(self, opt: AbstractOptimizer):
40
- # add_objective された目的のうち、
41
- # training data に含まれる名前ならば
42
- # fun を「その時点の current_obj_values を返す関数」で
43
- # 上書き
44
- for obj_name, obj in opt.objectives.items():
45
- if obj_name in self.train_history.obj_names:
46
- obj.fun = lambda obj_name_=obj_name: self.current_obj_values[obj_name_]
49
+
50
+ # output directions が与えられない場合、
51
+ # opt.add_objective との整合をチェックする
52
+ if self._output_directions is None:
53
+
54
+ # add_objective された目的のうち、
55
+ # training data に含まれる名前ならば
56
+ # fun を「その時点の current_obj_values を返す関数」で
57
+ # 上書き
58
+ obj_name: str
59
+ for obj_name, obj in opt.objectives.items():
60
+ # あれば上書き、なければ surrogate 最適化の際に
61
+ # 新しく追加した model を使わない目的関数と見做して何もしない
62
+ if obj_name in self.train_history.obj_names:
63
+ obj.fun = lambda _, obj_name_=obj_name: self.current_obj_values[obj_name_]
64
+
65
+ # dict で与えられた場合
66
+ elif isinstance(self._output_directions, dict):
67
+
68
+ # index 入力か str 入力かで統一されているか確認
69
+ keys = tuple(self._output_directions.keys())
70
+ assert all([isinstance(key, type(keys[0])) for key in keys]), _(
71
+ en_message='The keys of _output_directions must be '
72
+ 'all-int or all-str.',
73
+ jp_message='_output_directions のキーは int または str で'
74
+ '統一されていなければなりません。',
75
+ )
76
+
77
+ # index がキーである場合
78
+ if isinstance(keys[0], int):
79
+
80
+ for index, direction in self._output_directions.items():
81
+ obj_name = self.train_history.obj_names[index]
82
+
83
+ opt.add_objective(
84
+ name=obj_name,
85
+ fun=lambda _, obj_name_=obj_name: self.current_obj_values[obj_name_],
86
+ direction=direction,
87
+ args=(),
88
+ kwargs={},
89
+ )
90
+
91
+ # obj_name がキーである場合
92
+ if isinstance(keys[0], str):
93
+
94
+ for obj_name, direction in self._output_directions.items():
95
+ assert obj_name in self.train_history.obj_names, _(
96
+ en_message='The objective name passed as a key of '
97
+ '_output_direction must be one of the history\'s '
98
+ 'objective names. Passed name: {obj_name} / '
99
+ 'History\'s names: {obj_names}',
100
+ jp_message='_output_directions に目的関数名を与える場合は'
101
+ 'history に含まれる名前を指定しなければなりません。'
102
+ '与えられた目的名: {obj_name} / history に含まれる'
103
+ '目的名: {obj_names}',
104
+ obj_name=obj_name,
105
+ obj_names=', '.join(self.train_history.obj_names)
106
+ )
107
+
108
+ opt.add_objective(
109
+ name=obj_name,
110
+ fun=lambda obj_name_=obj_name: self.current_obj_values[obj_name_],
111
+ direction=direction,
112
+ args=(),
113
+ kwargs={},
114
+ )
115
+
116
+ # tuple で与えられた場合
117
+ elif isinstance(self._output_directions, list) \
118
+ or isinstance(self._output_directions, tuple):
119
+
120
+ obj_names = self.train_history.obj_names
121
+ assert len(self._output_directions) == len(obj_names), _(
122
+ en_message='The length of _output_directions passed as a list '
123
+ 'must be same with that of the history\'s objective '
124
+ 'names.',
125
+ jp_message='_output_directions をリストで渡す場合は'
126
+ 'その長さが history の目的関数数と一致して'
127
+ 'いなければなりません。'
128
+ )
129
+
130
+ for obj_name, direction in zip(obj_names, self._output_directions):
131
+ opt.add_objective(
132
+ name=obj_name,
133
+ fun=lambda _, obj_name_=obj_name: self.current_obj_values[obj_name_],
134
+ direction=direction,
135
+ args=(),
136
+ kwargs={},
137
+ )
47
138
 
48
139
  def load_variables(self, opt: AbstractOptimizer):
49
140
  # opt の変数が充分であるかのチェックのみ
@@ -1,3 +1,5 @@
1
+ from typing import Sequence
2
+
1
3
  import numpy as np
2
4
  from scipy.stats.distributions import norm
3
5
 
@@ -24,8 +26,22 @@ __all__ = [
24
26
 
25
27
  class BoTorchInterface(AbstractSurrogateModelInterfaceBase):
26
28
 
27
- def __init__(self, history_path: str = None, train_history: History = None):
28
- AbstractSurrogateModelInterfaceBase.__init__(self, history_path, train_history)
29
+ def __init__(
30
+ self,
31
+ history_path: str = None,
32
+ train_history: History = None,
33
+ _output_directions: (
34
+ Sequence[str | float]
35
+ | dict[str, str | float]
36
+ | dict[int, str | float]
37
+ ) = None
38
+ ):
39
+ AbstractSurrogateModelInterfaceBase.__init__(
40
+ self,
41
+ history_path,
42
+ train_history,
43
+ _output_directions
44
+ )
29
45
 
30
46
  self.model = SingleTaskGPModel()
31
47
  self.pyfemtet_model = PyFemtetModel()
@@ -62,11 +78,22 @@ class PoFBoTorchInterface(BoTorchInterface, AbstractSurrogateModelInterfaceBase)
62
78
  def __init__(
63
79
  self,
64
80
  history_path: str,
81
+ train_history: History = None,
65
82
  observation_noise: float | str | None = None,
66
83
  feasibility_noise: float | str | None = None,
67
84
  feasibility_cdf_threshold: float | str = 0.5, # or 'sample_mean'
85
+ _output_directions: (
86
+ Sequence[str | float]
87
+ | dict[str, str | float]
88
+ | dict[int, str | float]
89
+ ) = None
68
90
  ):
69
- AbstractSurrogateModelInterfaceBase.__init__(self, history_path, None)
91
+ AbstractSurrogateModelInterfaceBase.__init__(
92
+ self,
93
+ history_path,
94
+ train_history,
95
+ _output_directions
96
+ )
70
97
 
71
98
  self.model = SingleTaskGPModel()
72
99
  self.pyfemtet_model = PyFemtetModel()
@@ -32,7 +32,7 @@ DIRECTION: TypeAlias = (
32
32
  ]
33
33
  )
34
34
 
35
- logger = get_module_logger('opt.optimizer', True)
35
+ logger = get_module_logger('opt.optimizer', False)
36
36
 
37
37
 
38
38
  def _log_hidden_constraint(e: Exception):
@@ -177,11 +177,14 @@ class AbstractOptimizer:
177
177
  name: str,
178
178
  expression_string: str,
179
179
  properties: dict[str, ...] | None = None,
180
+ *,
181
+ pass_to_fem: bool = True,
180
182
  ) -> None:
181
183
  var = ExpressionFromString()
182
184
  var.name = name
183
185
  var._expr = ExpressionFromString.InternalClass(expression_string=expression_string)
184
186
  var.properties = properties or dict()
187
+ var.pass_to_fem = pass_to_fem
185
188
  _duplicated_name_check(name, self.variable_manager.variables.keys())
186
189
  self.variable_manager.variables.update({name: var})
187
190
 
@@ -190,11 +193,14 @@ class AbstractOptimizer:
190
193
  name: str,
191
194
  sympy_expr: sympy.Expr,
192
195
  properties: dict[str, ...] | None = None,
196
+ *,
197
+ pass_to_fem: bool = True,
193
198
  ) -> None:
194
199
  var = ExpressionFromString()
195
200
  var.name = name
196
201
  var._expr = ExpressionFromString.InternalClass(sympy_expr=sympy_expr)
197
202
  var.properties = properties or dict()
203
+ var.pass_to_fem = pass_to_fem
198
204
  _duplicated_name_check(name, self.variable_manager.variables.keys())
199
205
  self.variable_manager.variables.update({name: var})
200
206
 
@@ -205,6 +211,8 @@ class AbstractOptimizer:
205
211
  properties: dict[str, ...] | None = None,
206
212
  args: tuple | None = None,
207
213
  kwargs: dict | None = None,
214
+ *,
215
+ pass_to_fem: bool = True,
208
216
  ) -> None:
209
217
  var = ExpressionFromFunction()
210
218
  var.name = name
@@ -212,6 +220,7 @@ class AbstractOptimizer:
212
220
  var.args = args or tuple()
213
221
  var.kwargs = kwargs or dict()
214
222
  var.properties = properties or dict()
223
+ var.pass_to_fem = pass_to_fem
215
224
  _duplicated_name_check(name, self.variable_manager.variables.keys())
216
225
  self.variable_manager.variables.update({name: var})
217
226
 
@@ -138,7 +138,7 @@ if TYPE_CHECKING:
138
138
  # noinspection PyTypeChecker
139
139
  _logger = get_logger(False)
140
140
 
141
- DEBUG = True
141
+ DEBUG = False
142
142
  logger = get_module_logger('opt.PoFBoTorchSampler', DEBUG)
143
143
 
144
144
  warnings.filterwarnings('ignore', category=InputDataWarning)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pyfemtet
3
- Version: 1.0.0a0
3
+ Version: 1.0.0b0
4
4
  Summary: Design parameter optimization using Femtet.
5
5
  License: MIT
6
6
  Author: kazuma.naito
@@ -28,7 +28,8 @@ Requires-Dist: optuna-integration (>=3.6.0,<5.0.0)
28
28
  Requires-Dist: pandas (>=2.2.3,<3)
29
29
  Requires-Dist: plotly (>=5.22.0,<6)
30
30
  Requires-Dist: psutil (>=5.9.6,<6)
31
- Requires-Dist: pywin32 (>=306,<311) ; sys_platform == "win32"
31
+ Requires-Dist: pywin32 (<307) ; sys_platform == "win32" and python_version < "3.13"
32
+ Requires-Dist: pywin32 (>=309) ; sys_platform == "win32" and python_version >= "3.13"
32
33
  Requires-Dist: pyyaml (>=6.0.2,<7)
33
34
  Requires-Dist: scipy (>=1.11.4,<2)
34
35
  Requires-Dist: torch
@@ -4,13 +4,13 @@ pyfemtet/_i18n/2. build_mo.bat,sha256=CyMa93U9wYI2tYXwd1lb99ZmlWWCVIirhXq-pDfD8G
4
4
  pyfemtet/_i18n/__init__.py,sha256=myrXUHec6SWNLhYf8KY2ktpD42fmAVDpoIZP4xe259w,103
5
5
  pyfemtet/_i18n/babel.cfg,sha256=I9-MZMHtXQ0giwl4SsDKtZJqFziRVvrFiO3HVJhcJbQ,58
6
6
  pyfemtet/_i18n/i18n.py,sha256=zBbatQO7bkyO1MU6Y8TtrhGpDoUMP2PetRyWsINVcHc,808
7
- pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo,sha256=-j897a47Sg5gLo9d2ufwrpEbQfZ3I3EfyJtKUmc0VZE,34457
8
- pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po,sha256=Io9A9Dpwvt26dCQ8ywhwmvu9dbolvIjl5sf6UisXk_Q,48337
7
+ pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo,sha256=7A_bNBwAdgsCldl9-MKKQoTYMj3VHOk-zjtNUqL8f2o,34436
8
+ pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po,sha256=y4QIFJVELQEHLDLHaA4GNqyA8ZjBEAaHc6lWJgwgGKM,48325
9
9
  pyfemtet/_i18n/locales/messages.pot,sha256=krqoEumXnY45pG5dm-dQPmynb-eNx1BbIfbHB0URCvE,30025
10
10
  pyfemtet/_i18n/messages.py,sha256=mzTARnpZPZ-Pmcq8RdOyy5a4XGCCSxwxuoHjN_HJ0TM,17382
11
11
  pyfemtet/_util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  pyfemtet/_util/closing.py,sha256=JPcgHDbW249YF20bMOX6UX-LquWoCWA14KhX-qFouR4,502
13
- pyfemtet/_util/dask_util.py,sha256=uVEa4EXzILzgZf_Cdb_2QXHdT7itcCdhuYqpa7IjL0U,2158
13
+ pyfemtet/_util/dask_util.py,sha256=Wm_1p_LR1yhhZNaGgazf-yQ-eialLfmqtgBjxha6qWk,2159
14
14
  pyfemtet/_util/df_util.py,sha256=J4eij4B99UQI2GBAu2SsIeKzwPRAnnJPJyRmjjrSMYo,860
15
15
  pyfemtet/_util/excel_macro_util.py,sha256=pUCpENpM1q6AbC7wH7rMXwnQ7nIFnabQ4xlbsli9VzM,8028
16
16
  pyfemtet/_util/excel_parse_util.py,sha256=k8Y5EI9r0txwkieKUzlZqQ93b-9SMXldNIfq5ksWg28,5525
@@ -27,11 +27,11 @@ pyfemtet/dispatch_extensions/__init__.py,sha256=BzxYq3x8YdkdClq4VvH4G5HTGxu5nyAh
27
27
  pyfemtet/dispatch_extensions/_impl.py,sha256=Sgp350ioKcNVslXv9xRdtRjaQGRQM-BwbJYXjeildtw,11107
28
28
  pyfemtet/logger/__init__.py,sha256=lofBrZHr0P1hsxPUiPG1SQqKxCuSBk8zGnR7vUfCHYw,516
29
29
  pyfemtet/logger/_impl.py,sha256=uJ9el3kR-A4W2DvO_G5A6k9z2u1lkyl7GSvZ68uPy-U,6321
30
- pyfemtet/opt/__init__.py,sha256=-GCFMVODsIadW8glw66N5tParw1xDEWOX_Q-1NET9m4,219
30
+ pyfemtet/opt/__init__.py,sha256=1LcwTddtoi8plemxkzmX0YEKiNpAZvKn9OoNQysyDLE,339
31
31
  pyfemtet/opt/exceptions.py,sha256=M_O7jm20Y4e_QxsKF6tnEl-OrAtErUOj6hNT7eEXCO4,1327
32
- pyfemtet/opt/femopt.py,sha256=-4G82xfsRvFgo6yFv1Tc8RGeZoDqOVAWIp7RVxcVfbM,22333
32
+ pyfemtet/opt/femopt.py,sha256=CeejR3bDipPqCJnSx2X3Af2d4oJZlLKcHIXO2TZT9fc,22567
33
33
  pyfemtet/opt/history/__init__.py,sha256=pUp3SO4R7RGzmpNDLBg_pQH0X2yzBd-oqsHXWmB33os,201
34
- pyfemtet/opt/history/_history.py,sha256=mPHkzcCvGszM3CXreZUvV7OwrW-6O2XHT3sARJVqugU,48689
34
+ pyfemtet/opt/history/_history.py,sha256=AVnWBVJDCBd4EWqG1LNb87OA9a8s2oiixGWv1ZbrUB8,48690
35
35
  pyfemtet/opt/history/_hypervolume.py,sha256=_IvGH71ZNreWvDQCG815Q2hS1OEvPFPQhUnNXf1UxRQ,4449
36
36
  pyfemtet/opt/history/_optimality.py,sha256=6vLySZmrrklr04Qir0hGethTykf8NYFod88NDGrBrG0,2407
37
37
  pyfemtet/opt/interface/__init__.py,sha256=D88d0yj-pQNvDij4HI2BG3OPXP5tvc5ZOomd_Jp4UE0,964
@@ -41,20 +41,19 @@ pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm,sha256=TM1CEO
41
41
  pyfemtet/opt/interface/_excel_interface/excel_interface.py,sha256=zDl-lhveB0OSFe_9rz9fBEj1kziLyKqekPOcyTnzFm0,39735
42
42
  pyfemtet/opt/interface/_femtet_interface/__init__.py,sha256=snQruC8Rl_5rFeVmiqw9lmzdJ5mL42HpIlHIn5ytd8s,77
43
43
  pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py,sha256=dEe6udq2CBpXAcKCye90sXC0UVKok14LORitobc8DK8,10282
44
- pyfemtet/opt/interface/_femtet_interface/femtet_interface.py,sha256=MnZZuhVpcyik7csXXyE6jzM5IBEdEwDUfSsjeF2kELI,43807
44
+ pyfemtet/opt/interface/_femtet_interface/femtet_interface.py,sha256=VY6oRCZ4_LWBhCOvumNwSUPMuA94_f1oqpIUbI4zAmo,44710
45
45
  pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py,sha256=ppeoWVSmVsTmDNKpuFRVTnhjcoefQVEog3-FRiKpEe4,104
46
- pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py,sha256=SUEjmYz_Vc87hnzP9RlY3m6-1hFx64xCbzcuGgO8B3c,8381
46
+ pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py,sha256=x1drM80W7gbsZMXWh1B2rFotyEPkDbbCQkxVnl12FcI,8359
47
47
  pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt,sha256=cYVw2izr4_9PCPHOpi46XmDVOuNZ5ksuwKqzBtCZfNA,104833
48
48
  pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t,sha256=BHZJwc9gCCfleIkPMx7hZmNLZ3y6sJamFv6OSsHWhW0,6804
49
49
  pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py,sha256=2U5SJWnG7Tyu6PP_7mtf6dOguNuub8c_1DBRtF0XuT0,3036
50
50
  pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py,sha256=5McSpy2uTmJNBylCrKt4xMSq90hlSpqyXYsjwZT3yGA,128
51
- pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py,sha256=lAfZxM_4oNx4mzA3G1ajlE0moT4VyQWzR48EuGjbZGc,4348
51
+ pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py,sha256=Wiaho2qwbnAzrpq2t7CPL2ameiexuqhWxvpWMziPsj4,4347
52
52
  pyfemtet/opt/interface/_solidworks_interface/__init__.py,sha256=2c52Hfme1xdJepewRGVkPT4yhrZMQgzlCuqvHzEZPVk,95
53
53
  pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py,sha256=qeGsWhw94PfnK_HAKR08mM8mqdJfMlWAWXVE_GLLxSM,7191
54
- pyfemtet/opt/interface/_surrogate/_base.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
54
  pyfemtet/opt/interface/_surrogate_model_interface/__init__.py,sha256=9sjzQjJsMLdpBSpURyl8x4VQHEO_PGYgAshCHoycAPI,252
56
- pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py,sha256=Gay8jyZBN7jGUCJcQWUFQNksM4xoo_cm4bzjxv6GN58,1978
57
- pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py,sha256=q6fEy60vcmlp_lL00S8E7Tp7pyFNv9TNVRBAr1rMlHw,9625
55
+ pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py,sha256=vdYw8m09e6OCSYPsXUCXqoJcA_lpAOAYuEGmqDNgffM,6276
56
+ pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py,sha256=bteAg6nPAIY8M9BoVycYRDtON7p0RLGT_RuPj0JNRtM,10279
58
57
  pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv,sha256=Clv7t2vgSWym8-uMQPtcc8-hyjwuCk-b69PjtqWqphc,1910
59
58
  pyfemtet/opt/interface/_with_excel_settings/__init__.py,sha256=B3ZTQDNUDpZBLEVnCh2iHL_bnTJTUaclEfOFztHfl5c,2265
60
59
  pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py,sha256=JqgS8IAkhgnzO2IqL6xJJzidwSb6K2VK8zZG95qyml8,5453
@@ -64,14 +63,14 @@ pyfemtet/opt/meta_script/__main__.py,sha256=9-QM6eZOLpZ_CxERpRu3RAMqpudorSJdPCiK
64
63
  pyfemtet/opt/meta_script/sample/sample.bas,sha256=2iuSYMgPDyAdiSDVGxRu3avjcZYnULz0l8e25YBa7SQ,27966
65
64
  pyfemtet/opt/meta_script/sample/sample.femprj,sha256=6_0ywhgXxZjdzZzQFog8mgMUEjKNCFVNlEgAWoptovk,292885
66
65
  pyfemtet/opt/optimizer/__init__.py,sha256=A4QYeF0KHEFdwoxLfkDND7ikDQ186Ryy3oXEGdakFSg,463
67
- pyfemtet/opt/optimizer/_base_optimizer.py,sha256=D2M23CO-uHRtka_awNSLlmavxqFyIODyply8RTQSjvI,30275
66
+ pyfemtet/opt/optimizer/_base_optimizer.py,sha256=Pt4-fdCffcAYrv4AJ1EpJIdV-vPYJxYirlM-l74AOFQ,30549
68
67
  pyfemtet/opt/optimizer/optuna_optimizer/__init__.py,sha256=u2Bwc79tkZTU5dMbhzzrPQi0RlFg22UgXc-m9K9G6wQ,242
69
68
  pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py,sha256=cGI2jIqyBadoEC8C3jXFN0tl2tZpRCqu8vRq44Xy1xU,2206
70
69
  pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py,sha256=kFX_MUW3lWhHloe_26y1rYG6RVGZlwlBQR639d3FlIo,24494
71
70
  pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py,sha256=BFbMNvdXqV9kl1h340pW2sq0-cwNFV5dfTo6UnNnX2M,179
72
71
  pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv,sha256=K6oI9jPi_5yayhBrI9Tm1RX3PoWWKo74TOdqnaPsIy8,1746
73
72
  pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py,sha256=FY0fIwiFvakEdeQNv13eb1YtTXKzu2lF67HL2Hfs06w,9814
74
- pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py,sha256=3rZZemRH4j_gqDygeKoSXsyY_l2cKSWoXXyEKGifw1g,46764
73
+ pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py,sha256=gChJrOCQSQIwvoK-iIf-LDjDNNGKNXyJmWi-bCPQet4,46765
75
74
  pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj,sha256=-M54MTNrV7muZWPm9Tjptd6HDdtgUFBsRroC6ytyqa0,180970
76
75
  pyfemtet/opt/optimizer/scipy_optimizer/__init__.py,sha256=oXx2JAVLvgz0WwIXAknuV4p2MupaiutYYvjI8hXcFwc,45
77
76
  pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py,sha256=41GF7eiyEbeYH1RLhybb-JpF9MIr_25UlzPhbbJyBUQ,12026
@@ -165,9 +164,9 @@ pyfemtet/opt/visualization/plotter/main_figure_creator.py,sha256=9RXz6Wt52MiSz3H
165
164
  pyfemtet/opt/visualization/plotter/pm_graph_creator.py,sha256=hUvvYeckMhkE1nH0FAOkXrA5K3A8PbfpxKYaYnBllB4,10864
166
165
  pyfemtet/opt/wat_ex14_parametric_jp.femprj,sha256=dMwQMt6yok_PbZLyxPYdmg5wJQwgQDZ4RhS76zdGLGk,177944
167
166
  pyfemtet/opt/worker_status.py,sha256=xSVW9lcw5jzYBwnmlVzk-1zCCyvmXVOH6EoRjqVbE9M,3605
168
- pyfemtet-1.0.0a0.dist-info/LICENSE,sha256=LWUL5LlMGjSRTvsalS8_fFuwS4VMw18fJSNWFwDK8pc,1060
169
- pyfemtet-1.0.0a0.dist-info/LICENSE_THIRD_PARTY.txt,sha256=8_9-cgzTpmeuCqItPZb9-lyAZcH2Qp9sZTU_hYuOZIQ,191
170
- pyfemtet-1.0.0a0.dist-info/METADATA,sha256=kschcYV514z3EQXuRYmTcXBFl_H3EkxPjFYFs9bNR_U,3365
171
- pyfemtet-1.0.0a0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
172
- pyfemtet-1.0.0a0.dist-info/entry_points.txt,sha256=Tsb_l_8Z6pyyq2tRfuKiwfJUV3nq_cHoLS61foALtsg,134
173
- pyfemtet-1.0.0a0.dist-info/RECORD,,
167
+ pyfemtet-1.0.0b0.dist-info/LICENSE,sha256=LWUL5LlMGjSRTvsalS8_fFuwS4VMw18fJSNWFwDK8pc,1060
168
+ pyfemtet-1.0.0b0.dist-info/LICENSE_THIRD_PARTY.txt,sha256=8_9-cgzTpmeuCqItPZb9-lyAZcH2Qp9sZTU_hYuOZIQ,191
169
+ pyfemtet-1.0.0b0.dist-info/METADATA,sha256=5ACU3bq6vcFxcOBZ5Krvh3VanMyfiAFL0gTfaQgJZck,3473
170
+ pyfemtet-1.0.0b0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
171
+ pyfemtet-1.0.0b0.dist-info/entry_points.txt,sha256=Tsb_l_8Z6pyyq2tRfuKiwfJUV3nq_cHoLS61foALtsg,134
172
+ pyfemtet-1.0.0b0.dist-info/RECORD,,
File without changes