PyFemtet 1.3.2__tar.gz → 1.5.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.3.2 → pyfemtet-1.5.0}/PKG-INFO +3 -2
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/exceptions.py +14 -4
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/femopt.py +7 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py +8 -2
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/_base_optimizer.py +12 -2
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py +1 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py +88 -47
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/plotter/main_figure_creator.py +6 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyproject.toml +5 -2
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/LICENSE +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/LICENSE_THIRD_PARTY.txt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/README.md +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/1. make_pot_and_update_po.bat +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/2. build_mo.bat +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/babel.cfg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/i18n.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.mo +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/locales/ja/LC_MESSAGES/messages.po +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/locales/messages.pot +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_i18n/messages.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/closing.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/dask_util.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/df_util.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/excel_macro_util.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/excel_parse_util.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/femtet_access_inspection.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/femtet_autosave.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/femtet_exit.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/femtet_version.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/helper.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/process_util.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/sample.xlsx +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/solidworks_variable.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/str_enum.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/_util/symbol_support_for_param_name.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/core.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/dispatch_extensions/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/dispatch_extensions/_impl.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/logger/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/logger/_impl.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/history/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/history/_history.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/history/_hypervolume.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/history/_optimality.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_base_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_dummy_classes.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_excel_interface/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_excel_interface/excel_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_interface/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/femtet_with_nx_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_solidworks/femtet_with_solidworks_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_solidworks_interface/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_solidworks_interface/solidworks_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_solidworks_interface/sw_const.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_surrogate_model_interface/base_surrogate_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_surrogate_model_interface/botorch_interface.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_surrogate_model_interface/debug-pof-botorch.reccsv +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_with_excel_settings/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/meta_script/YAML_Generator.xlsm +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/meta_script/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/meta_script/__main__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/meta_script/sample/sample.bas +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/meta_script/sample/sample.femprj +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/_trial_queue.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/debug-pof-botorch.reccsv +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/enable_nonlinear_constraint.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/pof_botorch_sampler.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/scipy_optimizer/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/prediction/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/prediction/_botorch_utils.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/prediction/_gpytorch_modules_extension.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/prediction/_helper.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/prediction/_model.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/problem.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/variable_manager/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/variable_manager/_variable_manager.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/_create_wrapped_components.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/__main__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_base_application.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_common_pages.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/alert_region.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/control_femtet.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/detail_graphs.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/main_graph.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_complex_components/pm_graph.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_detail_page.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_helper.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_application.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_process_monitor/_pages.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dbc.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/dcc.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/html.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_wrapped_components/str_enum.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/__main__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_application.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.csv +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08.db +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.log +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_1.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_10.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_11.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_12.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_13.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_14.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_15.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_16.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_17.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_18.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_19.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_2.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_20.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_3.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bgr +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.bnd +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.btr +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.mtl +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_4.prm +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_5.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_6.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_7.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_8.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.jpg +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.Results/ex8_trial_9.pdt +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/tutorial_files/tutorial_gau_ex08_parametric.femprj +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/plotter/__init__.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/plotter/contour_creator.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/plotter/pm_graph_creator.py +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/wat_ex14_parametric_jp.femprj +0 -0
- {pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/worker_status.py +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyfemtet
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.0
|
|
4
4
|
Summary: Design parameter optimization using Femtet.
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
License-File: LICENSE_THIRD_PARTY.txt
|
|
8
8
|
Author: pyfemtet
|
|
9
9
|
Author-email: 148934231+pyfemtet@users.noreply.github.com
|
|
10
|
-
Requires-Python: >= 3.10, < 3.
|
|
10
|
+
Requires-Python: >= 3.10, < 3.15
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.10
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
17
|
Requires-Dist: babel (>=2.15.0,<3)
|
|
17
18
|
Requires-Dist: botorch (>=0.12.0,<0.15.0)
|
|
18
19
|
Requires-Dist: colorlog (>=6.8.0,<7)
|
|
@@ -39,7 +39,17 @@ class InterruptOptimization(ExceptionDuringOptimization): ...
|
|
|
39
39
|
class SkipSolve(ExceptionDuringOptimization): ...
|
|
40
40
|
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
_shown = set()
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def show_experimental_warning(feature_name, logger=None):
|
|
46
|
+
global _shown
|
|
47
|
+
if feature_name not in _shown:
|
|
48
|
+
_shown.add(feature_name)
|
|
49
|
+
msg = (f'{feature_name} は実験的機能です。将来 API 等が'
|
|
50
|
+
'大きく変更されるか、機能自体が削除される'
|
|
51
|
+
'可能性があります。')
|
|
52
|
+
if logger is not None:
|
|
53
|
+
logger.warning(msg)
|
|
54
|
+
else:
|
|
55
|
+
warnings.warn(msg)
|
|
@@ -20,6 +20,7 @@ from pyfemtet.opt.problem.variable_manager import *
|
|
|
20
20
|
from pyfemtet.opt.interface import *
|
|
21
21
|
from pyfemtet.opt.optimizer import *
|
|
22
22
|
from pyfemtet.opt.optimizer._base_optimizer import DIRECTION
|
|
23
|
+
from pyfemtet.opt.history import History
|
|
23
24
|
from pyfemtet.logger import get_module_logger
|
|
24
25
|
from pyfemtet.opt.visualization.history_viewer._process_monitor._application import (
|
|
25
26
|
process_monitor_main,
|
|
@@ -182,6 +183,12 @@ class FEMOpt:
|
|
|
182
183
|
):
|
|
183
184
|
self.opt.add_sub_fidelity_model(name, sub_fidelity_model, fidelity)
|
|
184
185
|
|
|
186
|
+
def set_termination_condition(
|
|
187
|
+
self,
|
|
188
|
+
func: Callable[[History], bool] | None,
|
|
189
|
+
):
|
|
190
|
+
self.opt.set_termination_condition(func)
|
|
191
|
+
|
|
185
192
|
def set_monitor_host(self, host: str = None, port: int = None):
|
|
186
193
|
"""Sets the host IP address and the port of the process monitor.
|
|
187
194
|
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_interface/femtet_interface.py
RENAMED
|
@@ -425,12 +425,18 @@ class FemtetInterface(COMInterface):
|
|
|
425
425
|
# 開く
|
|
426
426
|
if self.model_name is None:
|
|
427
427
|
result = self.Femtet.LoadProject(self.femprj_path, True)
|
|
428
|
+
if not result:
|
|
429
|
+
self.Femtet.ShowLastError()
|
|
428
430
|
else:
|
|
431
|
+
result = self.Femtet.LoadProject(self.femprj_path, True)
|
|
432
|
+
if not result:
|
|
433
|
+
self.Femtet.ShowLastError()
|
|
434
|
+
|
|
429
435
|
result = self.Femtet.LoadProjectAndAnalysisModel(
|
|
430
436
|
self.femprj_path, self.model_name, True
|
|
431
437
|
)
|
|
432
|
-
|
|
433
|
-
|
|
438
|
+
if not result:
|
|
439
|
+
self.Femtet.ShowLastError()
|
|
434
440
|
|
|
435
441
|
def _connect_and_open_femtet(self):
|
|
436
442
|
"""Connects to a Femtet process and open the femprj.
|
|
@@ -17,6 +17,7 @@ from pyfemtet.opt.problem.problem import *
|
|
|
17
17
|
from pyfemtet.opt.problem.variable_manager import *
|
|
18
18
|
from pyfemtet.opt.optimizer._trial_queue import *
|
|
19
19
|
from pyfemtet.logger import get_module_logger
|
|
20
|
+
from pyfemtet.opt.exceptions import show_experimental_warning
|
|
20
21
|
|
|
21
22
|
__all__ = [
|
|
22
23
|
'AbstractOptimizer',
|
|
@@ -114,6 +115,7 @@ class AbstractOptimizer:
|
|
|
114
115
|
self.fem: AbstractFEMInterface | None = None
|
|
115
116
|
self.history: History = History()
|
|
116
117
|
self.solve_condition: Callable[[History], bool] = lambda _: True
|
|
118
|
+
self.termination_condition: Callable[[History], bool] = lambda _: False
|
|
117
119
|
self.entire_status: WorkerStatus = WorkerStatus(ENTIRE_PROCESS_STATUS_KEY)
|
|
118
120
|
self.worker_status: WorkerStatus = WorkerStatus('worker-status')
|
|
119
121
|
self.worker_status_list: list[WorkerStatus] = [self.worker_status]
|
|
@@ -397,6 +399,13 @@ class AbstractOptimizer:
|
|
|
397
399
|
def set_solve_condition(self, fun: Callable[[History], bool]):
|
|
398
400
|
self.solve_condition = fun
|
|
399
401
|
|
|
402
|
+
def set_termination_condition(self, fun: Callable[[History], bool] | None):
|
|
403
|
+
if fun is None:
|
|
404
|
+
self.termination_condition = lambda _: False
|
|
405
|
+
else:
|
|
406
|
+
self.termination_condition = fun
|
|
407
|
+
show_experimental_warning('set_termination_condition', logger)
|
|
408
|
+
|
|
400
409
|
# ===== private =====
|
|
401
410
|
|
|
402
411
|
def _setup_enqueued_trials(self):
|
|
@@ -505,7 +514,8 @@ class AbstractOptimizer:
|
|
|
505
514
|
pass
|
|
506
515
|
|
|
507
516
|
def _postprocess(self):
|
|
508
|
-
|
|
517
|
+
if self.opt.termination_condition(self.opt.history):
|
|
518
|
+
self.opt.entire_status.value = WorkerStatus.interrupting
|
|
509
519
|
|
|
510
520
|
def _solve_or_raise(
|
|
511
521
|
self,
|
|
@@ -879,7 +889,7 @@ class AbstractOptimizer:
|
|
|
879
889
|
|
|
880
890
|
if os.environ.get('DEBUG_FEMOPT_PARALLEL'):
|
|
881
891
|
if isinstance(worker_idx, int):
|
|
882
|
-
sleep(worker_idx)
|
|
892
|
+
sleep((worker_idx + 1) * 2)
|
|
883
893
|
|
|
884
894
|
self.run()
|
|
885
895
|
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_optimizer.py
RENAMED
|
@@ -267,6 +267,7 @@ class OptunaOptimizer(AbstractOptimizer):
|
|
|
267
267
|
def _postprocess(self):
|
|
268
268
|
# update trial attribute
|
|
269
269
|
self.optuna_attr.set_user_attr_to_trial(self.opt.current_trial)
|
|
270
|
+
super()._postprocess()
|
|
270
271
|
|
|
271
272
|
def _create_infeasible_constraints(self, opt_: AbstractOptimizer = None) -> tuple:
|
|
272
273
|
opt_ = opt_ if opt_ is not None else self
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/scipy_optimizer/_scipy_optimizer.py
RENAMED
|
@@ -2,7 +2,8 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Callable
|
|
4
4
|
|
|
5
|
-
from contextlib import suppress
|
|
5
|
+
from contextlib import suppress, contextmanager
|
|
6
|
+
from time import time
|
|
6
7
|
|
|
7
8
|
import numpy as np
|
|
8
9
|
from scipy.optimize import minimize, OptimizeResult
|
|
@@ -10,9 +11,11 @@ from scipy.optimize import NonlinearConstraint
|
|
|
10
11
|
|
|
11
12
|
from pyfemtet._i18n import Msg, _
|
|
12
13
|
from pyfemtet._util.closing import closing
|
|
14
|
+
from pyfemtet._util.dask_util import get_client, Lock
|
|
13
15
|
from pyfemtet.opt.problem.variable_manager import *
|
|
14
16
|
from pyfemtet.opt.problem.problem import *
|
|
15
17
|
from pyfemtet.opt.exceptions import *
|
|
18
|
+
from pyfemtet.opt.history import MAIN_FILTER
|
|
16
19
|
from pyfemtet.logger import get_module_logger
|
|
17
20
|
|
|
18
21
|
from pyfemtet.opt.optimizer._base_optimizer import *
|
|
@@ -26,6 +29,10 @@ __all__ = [
|
|
|
26
29
|
logger = get_module_logger('opt.optimizer', False)
|
|
27
30
|
|
|
28
31
|
|
|
32
|
+
class InterruptScipyMinimize(Exception):
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
|
|
29
36
|
class _ScipyCallback:
|
|
30
37
|
|
|
31
38
|
def __init__(self, opt: ScipyOptimizer):
|
|
@@ -56,9 +63,6 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
56
63
|
|
|
57
64
|
"""
|
|
58
65
|
|
|
59
|
-
_timeout: None = None
|
|
60
|
-
_n_trials: None = None
|
|
61
|
-
|
|
62
66
|
def __init__(self, method: str = None, tol=None):
|
|
63
67
|
super().__init__()
|
|
64
68
|
|
|
@@ -67,30 +71,42 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
67
71
|
self.options = {}
|
|
68
72
|
self.constraint_enhancement = 0.001
|
|
69
73
|
self.constraint_scaling = 1.
|
|
74
|
+
self._scheduler_address: str | None = None
|
|
75
|
+
self.timeout = None
|
|
76
|
+
self._time_start = None
|
|
77
|
+
self.__n_succeeded_trials = None
|
|
70
78
|
|
|
71
79
|
@property
|
|
72
|
-
def
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
@
|
|
84
|
-
def
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
80
|
+
def _n_succeeded_trials_in_current_optimization(self) -> int | None: # オーバーライド不可
|
|
81
|
+
out = None
|
|
82
|
+
client = get_client(self._scheduler_address)
|
|
83
|
+
if client is not None:
|
|
84
|
+
raise NotImplementedError(
|
|
85
|
+
"ScipyOptimizer does not support parallel computing."
|
|
86
|
+
)
|
|
87
|
+
if self.__n_succeeded_trials is None:
|
|
88
|
+
self.__n_succeeded_trials = 0
|
|
89
|
+
return self.__n_succeeded_trials
|
|
90
|
+
|
|
91
|
+
@_n_succeeded_trials_in_current_optimization.setter
|
|
92
|
+
def _n_succeeded_trials_in_current_optimization(self, value: int | None): # オーバーライド不可
|
|
93
|
+
client = get_client(self._scheduler_address)
|
|
94
|
+
with Lock('scipy_n_succeeded_trials'):
|
|
95
|
+
if client is not None:
|
|
96
|
+
raise NotImplementedError('ScipyOptimizer does not support parallel computing.')
|
|
97
|
+
self.__n_succeeded_trials = value
|
|
98
|
+
|
|
99
|
+
def _per_solve_callback(self):
|
|
100
|
+
df = self.history.get_df(equality_filters=MAIN_FILTER)
|
|
101
|
+
self._n_succeeded_trials_in_current_optimization = (
|
|
102
|
+
1 + self._n_succeeded_trials_in_current_optimization
|
|
103
|
+
)
|
|
104
|
+
if self.n_trials is not None:
|
|
105
|
+
if self._n_succeeded_trials_in_current_optimization >= self.n_trials:
|
|
106
|
+
raise InterruptScipyMinimize
|
|
107
|
+
if self.timeout is not None:
|
|
108
|
+
if time() - self._time_start >= self.timeout:
|
|
109
|
+
raise InterruptScipyMinimize
|
|
94
110
|
|
|
95
111
|
def add_trial(self, parameters: dict[str, SupportedVariableTypes]):
|
|
96
112
|
raise NotImplementedError(_(
|
|
@@ -98,8 +114,7 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
98
114
|
jp_message='`ScipyOptimizer` では `add_trial()` は使えません。',
|
|
99
115
|
))
|
|
100
116
|
|
|
101
|
-
def _get_x0(self) -> np.ndarray:
|
|
102
|
-
|
|
117
|
+
def _get_x0(self, after_finalizing_history=False) -> np.ndarray:
|
|
103
118
|
# params を取得
|
|
104
119
|
params: dict[str, Parameter] = self.variable_manager.get_variables(
|
|
105
120
|
filter='parameter', format='raw'
|
|
@@ -112,7 +127,17 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
112
127
|
jp_message='Scipy では数値パラメータのみ最適化できます。'
|
|
113
128
|
))
|
|
114
129
|
|
|
115
|
-
#
|
|
130
|
+
# リスタートならば最適値で初期値を上書きする
|
|
131
|
+
if after_finalizing_history:
|
|
132
|
+
df = self.history.get_df()
|
|
133
|
+
optimal_trials = df[df["optimality"]]
|
|
134
|
+
if len(optimal_trials) > 0:
|
|
135
|
+
optimal_trial = optimal_trials.iloc[-1]
|
|
136
|
+
for prm_name in params.keys():
|
|
137
|
+
if prm_name in optimal_trial:
|
|
138
|
+
params[prm_name].value = optimal_trial[prm_name]
|
|
139
|
+
|
|
140
|
+
# fix == True のものを除いて初期値を作成
|
|
116
141
|
x0 = np.array([p.value for p in params.values() if not p.properties.get('fix', False)])
|
|
117
142
|
|
|
118
143
|
return x0
|
|
@@ -133,8 +158,13 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
133
158
|
logger.warning(Msg.WARN_SCIPY_NELDER_MEAD_BOUND)
|
|
134
159
|
|
|
135
160
|
def _setup_before_parallel(self):
|
|
136
|
-
|
|
137
161
|
if not self._done_setup_before_parallel:
|
|
162
|
+
# 並列プロセスは起動のラグがあるので
|
|
163
|
+
# すべての並列プロセスで起算時刻を同じにしたい
|
|
164
|
+
self._time_start = time()
|
|
165
|
+
# 別のプロセスが計算を始めてから自分のプロセスが上書きし内容
|
|
166
|
+
# ここで初期化
|
|
167
|
+
self._n_succeeded_trials_in_current_optimization = 0
|
|
138
168
|
|
|
139
169
|
super()._setup_before_parallel() # flag inside
|
|
140
170
|
|
|
@@ -343,9 +373,7 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
343
373
|
) from e
|
|
344
374
|
|
|
345
375
|
def _objective(self, xk: np.ndarray) -> float:
|
|
346
|
-
|
|
347
376
|
with self._logging():
|
|
348
|
-
|
|
349
377
|
vm = self.variable_manager
|
|
350
378
|
|
|
351
379
|
# parameter suggestion
|
|
@@ -357,6 +385,7 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
357
385
|
# process main fidelity model
|
|
358
386
|
solve_set = self._get_solve_set()
|
|
359
387
|
f_return = solve_set.solve(x)
|
|
388
|
+
self._per_solve_callback()
|
|
360
389
|
assert f_return is not None
|
|
361
390
|
dict_y_internal = f_return[1]
|
|
362
391
|
y_internal: float = tuple(dict_y_internal.values())[0] # type: ignore
|
|
@@ -364,26 +393,38 @@ class ScipyOptimizer(AbstractOptimizer):
|
|
|
364
393
|
return y_internal
|
|
365
394
|
|
|
366
395
|
def run(self):
|
|
367
|
-
|
|
368
396
|
# ===== finalize =====
|
|
369
397
|
self._finalize()
|
|
370
398
|
|
|
371
399
|
# ===== construct x0 =====
|
|
372
|
-
x0 = self._get_x0()
|
|
400
|
+
x0 = self._get_x0(after_finalizing_history=True)
|
|
401
|
+
|
|
402
|
+
# ===== 終了条件 =====
|
|
403
|
+
# In case that setup_before_parallel is not called
|
|
404
|
+
if self._time_start is None:
|
|
405
|
+
self._time_start = time()
|
|
406
|
+
if self._n_succeeded_trials_in_current_optimization is None:
|
|
407
|
+
self._n_succeeded_trials_in_current_optimization = 0
|
|
373
408
|
|
|
374
409
|
# ===== run =====
|
|
375
410
|
with closing(self.fem):
|
|
376
411
|
|
|
377
|
-
with self._setting_status(),
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
412
|
+
with self._setting_status(), \
|
|
413
|
+
suppress(InterruptOptimization), \
|
|
414
|
+
suppress(InterruptScipyMinimize):
|
|
415
|
+
|
|
416
|
+
try:
|
|
417
|
+
minimize(
|
|
418
|
+
self._objective,
|
|
419
|
+
x0,
|
|
420
|
+
args=(),
|
|
421
|
+
method=self.method,
|
|
422
|
+
bounds=self._get_scipy_bounds(),
|
|
423
|
+
constraints=self._get_scipy_constraints(),
|
|
424
|
+
tol=self.tol,
|
|
425
|
+
callback=self._get_scipy_callback(),
|
|
426
|
+
options=self.options,
|
|
427
|
+
)
|
|
428
|
+
finally:
|
|
429
|
+
self._time_start = None
|
|
430
|
+
self._n_succeeded_trials_in_current_optimization = None
|
|
@@ -98,6 +98,12 @@ def get_hypervolume_plot(_: History, df: pd.DataFrame) -> go.Figure:
|
|
|
98
98
|
# メインデータを抽出
|
|
99
99
|
df = get_partial_df(df, equality_filters=MAIN_FILTER)
|
|
100
100
|
|
|
101
|
+
# 成功した試行のみを抽出
|
|
102
|
+
df = df[df['feasibility']]
|
|
103
|
+
|
|
104
|
+
# 番号を振り直し
|
|
105
|
+
df['trial'] = range(1, len(df) + 1)
|
|
106
|
+
|
|
101
107
|
# create figure
|
|
102
108
|
fig = px.line(
|
|
103
109
|
df,
|
|
@@ -3,7 +3,7 @@ name = "pyfemtet"
|
|
|
3
3
|
dynamic = []
|
|
4
4
|
description = "Design parameter optimization using Femtet."
|
|
5
5
|
authors = [{ name = "pyfemtet", email = "148934231+pyfemtet@users.noreply.github.com" }]
|
|
6
|
-
requires-python = ">= 3.10, < 3.
|
|
6
|
+
requires-python = ">= 3.10, < 3.15"
|
|
7
7
|
readme = "README.md"
|
|
8
8
|
license = "MIT"
|
|
9
9
|
dependencies = [
|
|
@@ -33,7 +33,7 @@ dependencies = [
|
|
|
33
33
|
|
|
34
34
|
#[project.optional-dependencies]
|
|
35
35
|
#brep = ["brepmatching>=0.1.8,<0.2"]
|
|
36
|
-
version = "1.
|
|
36
|
+
version = "1.5.0"
|
|
37
37
|
|
|
38
38
|
[project.urls]
|
|
39
39
|
Repository = "https://github.com/pyfemtet/pyfemtet"
|
|
@@ -56,6 +56,9 @@ dev = [
|
|
|
56
56
|
"pytest-dashboard>=2.0.0",
|
|
57
57
|
"pytest-cov>=6.1.1",
|
|
58
58
|
"pytest-reporter-html-dots>=0.11.0",
|
|
59
|
+
"esbonio>=0.12.0",
|
|
60
|
+
"pandas-stubs>=2.3.2.250926",
|
|
61
|
+
"scipy-stubs>=1.15.3.0",
|
|
59
62
|
]
|
|
60
63
|
|
|
61
64
|
[tool.uv-dynamic-versioning]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_excel_interface/debug-excel-interface.xlsm
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_excel_interface/excel_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_interface/_femtet_parametric.py
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.prt
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/model1.x_t
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_nx_interface/update_model.py
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_femtet_with_solidworks/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_surrogate_model_interface/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/interface/_with_excel_settings/with_excel_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_optuna_attribute.py
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/optimizer/optuna_optimizer/_pof_botorch/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/variable_manager/_string_as_expression.py
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/problem/variable_manager/_variable_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_base_application.py
RENAMED
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/_common_pages.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/history_viewer/result_viewer/_pages.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyfemtet-1.3.2 → pyfemtet-1.5.0}/pyfemtet/opt/visualization/plotter/parallel_plot_creator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|