PyFemtet 1.8.2__tar.gz → 1.9.0__tar.gz
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.
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/PKG-INFO +1 -1
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/excel_macro_util.py +10 -1
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/femopt.py +9 -144
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_base_interface.py +10 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/excel_interface.py +28 -12
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py +0 -1
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +11 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +1 -1
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/_base_optimizer.py +149 -62
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +1 -1
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyproject.toml +1 -1
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/LICENSE +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/LICENSE_THIRD_PARTY.txt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/README.md +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/1. make_pot_and_update_po.bat +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/2. build_mo.bat +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/babel.cfg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/i18n.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/locales/messages.pot +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_i18n/messages.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/closing.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/dask_util.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/df_util.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/excel_parse_util.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_access_inspection.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_autosave.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_exit.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/femtet_version.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/helper.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/process_util.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/sample.xlsx +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/solidworks_variable.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/str_enum.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/_util/symbol_support_for_param_name.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/core.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/dispatch_extensions/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/dispatch_extensions/_impl.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/logger/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/logger/_impl.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/exceptions.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/_history.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/_hypervolume.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/history/_optimality.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_dummy_classes.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_multiple_fem_interface.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_reopen_decorator.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_solidworks_interface/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_solidworks_interface/sw_const.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_with_excel_settings/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/__main__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/_trial_queue.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_botorch_utils.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_helper.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/prediction/_model.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/problem.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/variable_manager/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/problem/variable_manager/_variable_manager.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/__main__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_base_application.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_common_pages.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/alert_region.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/control_femtet.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/main_graph.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/pm_graph.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_detail_page.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_helper.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dbc.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dcc.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/html.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/str_enum.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/__init__.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/contour_creator.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/main_figure_creator.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/worker_status.py +0 -0
|
@@ -31,7 +31,16 @@ class _ExcelDialogProcessor:
|
|
|
31
31
|
|
|
32
32
|
def __init__(self, excel_, timeout, restore_book=True):
|
|
33
33
|
self.excel = excel_
|
|
34
|
-
|
|
34
|
+
|
|
35
|
+
if hasattr(excel_, 'hWnd'):
|
|
36
|
+
self.excel_pid = _get_pid(excel_.hWnd)
|
|
37
|
+
elif hasattr(excel_, 'Hwnd'):
|
|
38
|
+
self.excel_pid = _get_pid(excel_.Hwnd)
|
|
39
|
+
elif hasattr(excel_, 'HWnd'):
|
|
40
|
+
self.excel_pid = _get_pid(excel_.HWnd)
|
|
41
|
+
else:
|
|
42
|
+
raise AttributeError('Cannot found excel window handle attribute.')
|
|
43
|
+
|
|
35
44
|
self.__excel_window_title = f' - Excel' # {basename} - Excel
|
|
36
45
|
self.__error_dialog_title = 'Microsoft Visual Basic'
|
|
37
46
|
self.__vbe_window_title = f'Microsoft Visual Basic for Applications - ' # Microsoft Visual Basic for Applications - {basename}
|
|
@@ -49,8 +49,8 @@ class FEMOpt:
|
|
|
49
49
|
|
|
50
50
|
def __init__(
|
|
51
51
|
self,
|
|
52
|
-
fem: AbstractFEMInterface = None,
|
|
53
|
-
opt: AbstractOptimizer = None,
|
|
52
|
+
fem: AbstractFEMInterface | None = None,
|
|
53
|
+
opt: AbstractOptimizer | None = None,
|
|
54
54
|
):
|
|
55
55
|
self.opt: AbstractOptimizer = opt or OptunaOptimizer()
|
|
56
56
|
|
|
@@ -160,7 +160,7 @@ class FEMOpt:
|
|
|
160
160
|
names: str | list[str],
|
|
161
161
|
fun: Callable[..., Sequence[float]],
|
|
162
162
|
n_return: int,
|
|
163
|
-
directions: DIRECTION | Sequence[DIRECTION] = None,
|
|
163
|
+
directions: DIRECTION | Sequence[DIRECTION] | None = None,
|
|
164
164
|
args: tuple | None = None,
|
|
165
165
|
kwargs: dict | None = None,
|
|
166
166
|
):
|
|
@@ -208,7 +208,7 @@ class FEMOpt:
|
|
|
208
208
|
):
|
|
209
209
|
self.opt.set_termination_condition(func)
|
|
210
210
|
|
|
211
|
-
def set_monitor_host(self, host: str = None, port: int = None):
|
|
211
|
+
def set_monitor_host(self, host: str | None = None, port: int | None = None):
|
|
212
212
|
"""Sets the host IP address and the port of the process monitor.
|
|
213
213
|
|
|
214
214
|
Args:
|
|
@@ -240,14 +240,14 @@ class FEMOpt:
|
|
|
240
240
|
|
|
241
241
|
def optimize(
|
|
242
242
|
self,
|
|
243
|
-
n_trials: int = None,
|
|
243
|
+
n_trials: int | None = None,
|
|
244
244
|
n_parallel: int = 1,
|
|
245
|
-
timeout: float = None,
|
|
245
|
+
timeout: float | None = None,
|
|
246
246
|
wait_setup: bool = True,
|
|
247
247
|
confirm_before_exit: bool = True,
|
|
248
|
-
history_path: str = None,
|
|
248
|
+
history_path: str | None = None,
|
|
249
249
|
with_monitor: bool = True,
|
|
250
|
-
scheduler_address: str = None,
|
|
250
|
+
scheduler_address: str | None = None,
|
|
251
251
|
seed: int | None = None,
|
|
252
252
|
):
|
|
253
253
|
|
|
@@ -258,7 +258,7 @@ class FEMOpt:
|
|
|
258
258
|
ver=pyfemtet.__version__,
|
|
259
259
|
)
|
|
260
260
|
)
|
|
261
|
-
client: Client
|
|
261
|
+
client: Client | DummyClient
|
|
262
262
|
|
|
263
263
|
# set arguments
|
|
264
264
|
self.opt.n_trials = n_trials or self.opt.n_trials
|
|
@@ -274,7 +274,6 @@ class FEMOpt:
|
|
|
274
274
|
worker_name_base = 'Sub'
|
|
275
275
|
if n_parallel == 1:
|
|
276
276
|
cluster = nullcontext()
|
|
277
|
-
# noinspection PyTypeChecker
|
|
278
277
|
client = DummyClient()
|
|
279
278
|
|
|
280
279
|
else:
|
|
@@ -534,137 +533,3 @@ class FEMOpt:
|
|
|
534
533
|
logger.info(_('All processes are terminated.'))
|
|
535
534
|
|
|
536
535
|
return df
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
def debug_1():
|
|
540
|
-
# noinspection PyUnresolvedReferences
|
|
541
|
-
from time import sleep
|
|
542
|
-
# from pyfemtet.opt.optimizer import InterruptOptimization
|
|
543
|
-
import optuna
|
|
544
|
-
from pyfemtet.opt.interface import AbstractFEMInterface, NoFEM
|
|
545
|
-
|
|
546
|
-
def _parabola(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
|
|
547
|
-
x = _opt.get_variables('values')
|
|
548
|
-
# print(os.getpid())
|
|
549
|
-
# raise RuntimeError
|
|
550
|
-
# raise Interrupt
|
|
551
|
-
# if get_worker() is None:
|
|
552
|
-
# raise RuntimeError
|
|
553
|
-
return (x ** 2).sum()
|
|
554
|
-
|
|
555
|
-
def _cns(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
|
|
556
|
-
x = _opt.get_variables('values')
|
|
557
|
-
return x[0]
|
|
558
|
-
|
|
559
|
-
_opt = OptunaOptimizer()
|
|
560
|
-
_opt.sampler = optuna.samplers.TPESampler(seed=42)
|
|
561
|
-
_opt.n_trials = 10
|
|
562
|
-
|
|
563
|
-
_fem = NoFEM()
|
|
564
|
-
_opt.fem = _fem
|
|
565
|
-
|
|
566
|
-
_args = (_opt,)
|
|
567
|
-
|
|
568
|
-
_opt.add_parameter('x1', 1, -1, 1, step=0.2)
|
|
569
|
-
_opt.add_parameter('x2', 1, -1, 1, step=0.2)
|
|
570
|
-
|
|
571
|
-
_opt.add_constraint('cns', _cns, lower_bound=-0.5, args=_args)
|
|
572
|
-
|
|
573
|
-
_opt.add_objective('obj', _parabola, args=_args)
|
|
574
|
-
|
|
575
|
-
_femopt = FEMOpt(fem=_fem, opt=_opt)
|
|
576
|
-
_femopt.opt = _opt
|
|
577
|
-
# _femopt.opt.history.path = 'v1test/femopt-restart-test.csv'
|
|
578
|
-
_femopt.optimize(n_parallel=2)
|
|
579
|
-
|
|
580
|
-
print(os.path.abspath(_femopt.opt.history.path))
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
def substrate_size(Femtet):
|
|
584
|
-
"""基板のXY平面上での専有面積を計算します。"""
|
|
585
|
-
substrate_w = Femtet.GetVariableValue('substrate_w')
|
|
586
|
-
substrate_d = Femtet.GetVariableValue('substrate_d')
|
|
587
|
-
|
|
588
|
-
# assert get_worker() is not None
|
|
589
|
-
|
|
590
|
-
return substrate_w * substrate_d # 単位: mm2
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
def debug_2():
|
|
594
|
-
from pyfemtet.opt.interface import FemtetInterface
|
|
595
|
-
from pyfemtet.opt.optimizer import OptunaOptimizer
|
|
596
|
-
|
|
597
|
-
fem = FemtetInterface(
|
|
598
|
-
femprj_path=os.path.join(os.path.dirname(__file__), 'wat_ex14_parametric_jp.femprj'),
|
|
599
|
-
)
|
|
600
|
-
|
|
601
|
-
opt = OptunaOptimizer()
|
|
602
|
-
|
|
603
|
-
opt.fem = fem
|
|
604
|
-
|
|
605
|
-
opt.add_parameter(name="substrate_w", initial_value=40, lower_bound=22, upper_bound=60)
|
|
606
|
-
opt.add_parameter(name="substrate_d", initial_value=60, lower_bound=34, upper_bound=60)
|
|
607
|
-
opt.add_objective(name='基板サイズ(mm2)', fun=substrate_size)
|
|
608
|
-
opt.add_objective(name='obj2', fun=substrate_size)
|
|
609
|
-
opt.add_objective(name='obj3', fun=substrate_size)
|
|
610
|
-
|
|
611
|
-
opt.n_trials = 10
|
|
612
|
-
# opt.history.path = os.path.join(os.path.dirname(__file__), 'femtet-test.csv')
|
|
613
|
-
|
|
614
|
-
femopt = FEMOpt()
|
|
615
|
-
|
|
616
|
-
femopt.opt = opt
|
|
617
|
-
|
|
618
|
-
femopt.optimize(n_parallel=1)
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
def debug_3():
|
|
622
|
-
# noinspection PyUnresolvedReferences
|
|
623
|
-
from time import sleep
|
|
624
|
-
# from pyfemtet.opt.optimizer import InterruptOptimization
|
|
625
|
-
import optuna
|
|
626
|
-
from pyfemtet.opt.interface import AbstractFEMInterface, NoFEM
|
|
627
|
-
|
|
628
|
-
def _parabola(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
|
|
629
|
-
x = _opt.get_variables('values')
|
|
630
|
-
# print(os.getpid())
|
|
631
|
-
# raise RuntimeError
|
|
632
|
-
# raise Interrupt
|
|
633
|
-
# if get_worker() is None:
|
|
634
|
-
# raise RuntimeError
|
|
635
|
-
return (x ** 2).sum()
|
|
636
|
-
|
|
637
|
-
def _cns(_fem: AbstractFEMInterface, _opt: AbstractOptimizer):
|
|
638
|
-
x = _opt.get_variables('values')
|
|
639
|
-
return x[0]
|
|
640
|
-
|
|
641
|
-
_opt = OptunaOptimizer()
|
|
642
|
-
_opt.sampler = optuna.samplers.TPESampler(seed=42)
|
|
643
|
-
|
|
644
|
-
_fem = NoFEM()
|
|
645
|
-
_opt.fem = _fem
|
|
646
|
-
|
|
647
|
-
_args = (_opt,)
|
|
648
|
-
|
|
649
|
-
_opt.add_parameter('x1', 1, -1, 1, step=0.2)
|
|
650
|
-
_opt.add_parameter('x2', 1, -1, 1, step=0.2)
|
|
651
|
-
|
|
652
|
-
_opt.add_constraint('cns', _cns, lower_bound=-0.5, args=_args)
|
|
653
|
-
|
|
654
|
-
_opt.add_objective('obj', _parabola, args=_args)
|
|
655
|
-
|
|
656
|
-
_femopt = FEMOpt(fem=_fem, opt=_opt)
|
|
657
|
-
_femopt.optimize(
|
|
658
|
-
scheduler_address='<dask scheduler で起動したスケジューラの tcp をここに入力>',
|
|
659
|
-
n_trials=80,
|
|
660
|
-
n_parallel=6,
|
|
661
|
-
with_monitor=True,
|
|
662
|
-
confirm_before_exit=False,
|
|
663
|
-
)
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
if __name__ == '__main__':
|
|
667
|
-
# for i in range(1):
|
|
668
|
-
debug_1()
|
|
669
|
-
# debug_2()
|
|
670
|
-
# debug_3()
|
|
@@ -244,6 +244,16 @@ class AbstractFEMInterface:
|
|
|
244
244
|
def _get_additional_data(self) -> dict:
|
|
245
245
|
return dict()
|
|
246
246
|
|
|
247
|
+
# name
|
|
248
|
+
@property
|
|
249
|
+
def name(self) -> str:
|
|
250
|
+
if hasattr(self, '_name'):
|
|
251
|
+
return self._name
|
|
252
|
+
return self.__class__.__name__
|
|
253
|
+
|
|
254
|
+
@name.setter
|
|
255
|
+
def name(self, value: str):
|
|
256
|
+
self._name = value
|
|
247
257
|
|
|
248
258
|
class COMInterface(AbstractFEMInterface):
|
|
249
259
|
|
{pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_excel_interface/excel_interface.py
RENAMED
|
@@ -470,11 +470,19 @@ class ExcelInterface(COMInterface):
|
|
|
470
470
|
sleep(0.5)
|
|
471
471
|
|
|
472
472
|
# 起動した excel の pid を記憶する
|
|
473
|
-
|
|
473
|
+
if hasattr(self.excel, "hWnd"):
|
|
474
|
+
self._excel_hwnd = self.excel.hWnd
|
|
475
|
+
elif hasattr(self.excel, "Hwnd"):
|
|
476
|
+
self._excel_hwnd = self.excel.Hwnd
|
|
477
|
+
elif hasattr(self.excel, "HWnd"):
|
|
478
|
+
self._excel_hwnd = self.excel.HWnd
|
|
479
|
+
else:
|
|
480
|
+
raise RuntimeError('Failed to get Excel window handle. Cannot determine Excel process ID.')
|
|
481
|
+
|
|
474
482
|
self._excel_pid = 0
|
|
475
483
|
while self._excel_pid == 0:
|
|
476
484
|
sleep(0.5)
|
|
477
|
-
self._excel_pid = _get_pid(self.
|
|
485
|
+
self._excel_pid = _get_pid(self._excel_hwnd)
|
|
478
486
|
|
|
479
487
|
# 可視性の設定
|
|
480
488
|
self.excel.Visible = self.visible
|
|
@@ -583,7 +591,13 @@ class ExcelInterface(COMInterface):
|
|
|
583
591
|
self.remove_femtet_addin_reference(wb)
|
|
584
592
|
femtet_addin_path = self.get_femtet_addin_path()
|
|
585
593
|
if femtet_addin_path is not None:
|
|
586
|
-
|
|
594
|
+
try:
|
|
595
|
+
wb.VBProject.References.AddFromFile(femtet_addin_path)
|
|
596
|
+
except com_error:
|
|
597
|
+
logger.warning(_(
|
|
598
|
+
jp_message="Femtet のアドインファイルの参照の追加に失敗しました。すでに追加されている可能性があります。",
|
|
599
|
+
en_message="Failed to add reference of Femtet add-in file. It may have already been added.",
|
|
600
|
+
))
|
|
587
601
|
|
|
588
602
|
# ===== load =====
|
|
589
603
|
def load_variables(self, opt: OptimizationDataPerFEM, raise_if_no_keyword=True) -> None:
|
|
@@ -648,7 +662,6 @@ class ExcelInterface(COMInterface):
|
|
|
648
662
|
upper_bound=ub,
|
|
649
663
|
step=step,
|
|
650
664
|
fix=not use,
|
|
651
|
-
supress_duplicated_name_check=True,
|
|
652
665
|
)
|
|
653
666
|
|
|
654
667
|
elif kind == 'Categorical':
|
|
@@ -661,7 +674,6 @@ class ExcelInterface(COMInterface):
|
|
|
661
674
|
initial_value=value,
|
|
662
675
|
choices=choices,
|
|
663
676
|
fix=not use,
|
|
664
|
-
supress_duplicated_name_check=True,
|
|
665
677
|
)
|
|
666
678
|
|
|
667
679
|
else:
|
|
@@ -708,7 +720,6 @@ class ExcelInterface(COMInterface):
|
|
|
708
720
|
direction=direction,
|
|
709
721
|
fun=_ScapeGoatObjective(),
|
|
710
722
|
kwargs=dict(name=name),
|
|
711
|
-
supress_duplicated_name_check=True,
|
|
712
723
|
)
|
|
713
724
|
|
|
714
725
|
def load_constraints(self, opt: OptimizationDataPerFEM, raise_if_no_keyword=False):
|
|
@@ -770,19 +781,18 @@ class ExcelInterface(COMInterface):
|
|
|
770
781
|
fun=_ScapeGoatObjective(),
|
|
771
782
|
kwargs=dict(name=name),
|
|
772
783
|
using_fem=not calc_before_solve,
|
|
773
|
-
supress_duplicated_name_check=True,
|
|
774
784
|
)
|
|
775
785
|
|
|
776
786
|
def objective_from_excel(self, _, name: str):
|
|
777
787
|
r = 1 + search_r(self.output_xlsm_path, self.output_sheet_name, name)
|
|
778
788
|
c = 1 + search_c(self.output_xlsm_path, self.output_sheet_name, ParseAsObjective.value)
|
|
779
|
-
v = self.sh_output.Cells(r, c).
|
|
789
|
+
v = self.sh_output.Cells(r, c).Value
|
|
780
790
|
return float(v)
|
|
781
791
|
|
|
782
792
|
def constraint_from_excel(self, _, name: str):
|
|
783
793
|
r = 1 + search_r(self.constraint_xlsm_path, self.constraint_sheet_name, name)
|
|
784
794
|
c = 1 + search_c(self.constraint_xlsm_path, self.constraint_sheet_name, ParseAsConstraint.value)
|
|
785
|
-
v = self.sh_constraint.Cells(r, c).
|
|
795
|
+
v = self.sh_constraint.Cells(r, c).Value
|
|
786
796
|
return float(v)
|
|
787
797
|
|
|
788
798
|
# ===== Workbook and WorkSheet =====
|
|
@@ -797,7 +807,13 @@ class ExcelInterface(COMInterface):
|
|
|
797
807
|
|
|
798
808
|
@staticmethod
|
|
799
809
|
def _get_sh(wb: CDispatch, name) -> CDispatch:
|
|
800
|
-
|
|
810
|
+
if hasattr(wb, 'WorkSheets'):
|
|
811
|
+
sheets = wb.WorkSheets
|
|
812
|
+
elif hasattr(wb, 'Worksheets'):
|
|
813
|
+
sheets = wb.Worksheets
|
|
814
|
+
else:
|
|
815
|
+
raise RuntimeError('Failed to get Worksheets. Cannot determine sheet collection.')
|
|
816
|
+
for sh in sheets:
|
|
801
817
|
if sh.Name == name:
|
|
802
818
|
return sh
|
|
803
819
|
else:
|
|
@@ -857,7 +873,7 @@ class ExcelInterface(COMInterface):
|
|
|
857
873
|
if self.use_named_range:
|
|
858
874
|
for key, variable in self.current_prm_values.items():
|
|
859
875
|
try:
|
|
860
|
-
self.sh_input.Range(key).
|
|
876
|
+
self.sh_input.Range(key).Value = variable.value
|
|
861
877
|
except com_error:
|
|
862
878
|
logger.warning(
|
|
863
879
|
_(
|
|
@@ -874,7 +890,7 @@ class ExcelInterface(COMInterface):
|
|
|
874
890
|
for name, variable in self.current_prm_values.items():
|
|
875
891
|
r = 1 + search_r(self.input_xlsm_path, self.input_sheet_name, name)
|
|
876
892
|
c = 1 + search_c(self.input_xlsm_path, self.input_sheet_name, ParseAsParameter.value)
|
|
877
|
-
self.sh_input.Cells(r, c).
|
|
893
|
+
self.sh_input.Cells(r, c).Value = variable.value
|
|
878
894
|
|
|
879
895
|
# 再計算
|
|
880
896
|
self.excel.CalculateFull()
|
{pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py
RENAMED
|
@@ -223,7 +223,6 @@ def add_parametric_results_as_objectives(opt, Femtet, indexes, directions) -> bo
|
|
|
223
223
|
# objective value function
|
|
224
224
|
opt.add_objective(
|
|
225
225
|
name=name, fun=_parametric_objective, direction=direction, args=(i,),
|
|
226
|
-
supress_duplicated_name_check=True,
|
|
227
226
|
)
|
|
228
227
|
return True # ここまで来たら成功
|
|
229
228
|
|
{pyfemtet-1.8.2 → pyfemtet-1.9.0}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py
RENAMED
|
@@ -185,6 +185,17 @@ class FemtetInterface(COMInterface):
|
|
|
185
185
|
|
|
186
186
|
# ===== system =====
|
|
187
187
|
|
|
188
|
+
@property
|
|
189
|
+
def name(self) -> str:
|
|
190
|
+
name = ""
|
|
191
|
+
if self.femprj_path is not None:
|
|
192
|
+
name += os.path.basename(self.femprj_path)
|
|
193
|
+
if self.model_name is not None:
|
|
194
|
+
name += f' - {self.model_name}'
|
|
195
|
+
if name == "":
|
|
196
|
+
name = super().name
|
|
197
|
+
return name
|
|
198
|
+
|
|
188
199
|
@property
|
|
189
200
|
def object_pass_to_fun(self):
|
|
190
201
|
"""The object pass to the first argument of user-defined objective functions.
|
|
@@ -122,7 +122,7 @@ class AbstractSurrogateModelInterfaceBase(AbstractFEMInterface):
|
|
|
122
122
|
def dummy(*args, **kwargs):
|
|
123
123
|
assert False
|
|
124
124
|
|
|
125
|
-
ctx.add_objective(obj_name, dummy, direction
|
|
125
|
+
ctx.add_objective(obj_name, dummy, direction)
|
|
126
126
|
|
|
127
127
|
# ctx の目的関数のうち train に含まれるものを差し替え
|
|
128
128
|
# directions の目的変数名を validation しているので漏れはないはず
|