pyfemtet 0.8.4__py3-none-any.whl → 0.8.7__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.
- pyfemtet/__init__.py +1 -1
- pyfemtet/_message/locales/ja/LC_MESSAGES/messages.mo +0 -0
- pyfemtet/_message/locales/ja/LC_MESSAGES/messages.po +92 -88
- pyfemtet/_message/locales/messages.pot +94 -90
- pyfemtet/_message/messages.py +2 -0
- pyfemtet/opt/_femopt.py +37 -10
- pyfemtet/opt/_femopt_core.py +63 -28
- pyfemtet/opt/_test_utils/record_history.py +23 -16
- pyfemtet/opt/interface/__init__.py +4 -1
- pyfemtet/opt/interface/_femtet.py +17 -0
- pyfemtet/opt/interface/_femtet_parametric.py +203 -4
- pyfemtet/opt/interface/_surrogate/_base.py +11 -11
- pyfemtet/opt/interface/_surrogate/_singletaskgp.py +4 -3
- pyfemtet/opt/prediction/single_task_gp.py +6 -4
- pyfemtet/opt/visualization/_base.py +12 -1
- pyfemtet/opt/visualization/_complex_components/control_femtet.py +7 -7
- pyfemtet/opt/visualization/_complex_components/main_graph.py +65 -29
- pyfemtet/opt/visualization/_complex_components/pm_graph.py +17 -16
- pyfemtet/opt/visualization/_process_monitor/application.py +20 -3
- pyfemtet/opt/visualization/_process_monitor/pages.py +2 -2
- pyfemtet/opt/visualization/result_viewer/pages.py +6 -6
- {pyfemtet-0.8.4.dist-info → pyfemtet-0.8.7.dist-info}/METADATA +1 -1
- {pyfemtet-0.8.4.dist-info → pyfemtet-0.8.7.dist-info}/RECORD +26 -26
- {pyfemtet-0.8.4.dist-info → pyfemtet-0.8.7.dist-info}/LICENSE +0 -0
- {pyfemtet-0.8.4.dist-info → pyfemtet-0.8.7.dist-info}/WHEEL +0 -0
- {pyfemtet-0.8.4.dist-info → pyfemtet-0.8.7.dist-info}/entry_points.txt +0 -0
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Translations template for PROJECT.
|
|
2
|
-
# Copyright (C)
|
|
2
|
+
# Copyright (C) 2025 ORGANIZATION
|
|
3
3
|
# This file is distributed under the same license as the PROJECT project.
|
|
4
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>,
|
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
|
5
5
|
#
|
|
6
6
|
#, fuzzy
|
|
7
7
|
msgid ""
|
|
8
8
|
msgstr ""
|
|
9
9
|
"Project-Id-Version: PROJECT VERSION\n"
|
|
10
10
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
|
11
|
-
"POT-Creation-Date:
|
|
11
|
+
"POT-Creation-Date: 2025-01-29 15:47+0900\n"
|
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
13
13
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
14
14
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
@@ -189,351 +189,355 @@ msgstr ""
|
|
|
189
189
|
msgid "Restore Femtet setting of autosave."
|
|
190
190
|
msgstr ""
|
|
191
191
|
|
|
192
|
-
#: pyfemtet/_message/messages.py:
|
|
192
|
+
#: pyfemtet/_message/messages.py:88
|
|
193
|
+
msgid "Failed to make output from Femtet. Please check output settings of Parametric Analysis."
|
|
194
|
+
msgstr ""
|
|
195
|
+
|
|
196
|
+
#: pyfemtet/_message/messages.py:92
|
|
193
197
|
msgid "The following features are not supported by the specified optimization method. "
|
|
194
198
|
msgstr ""
|
|
195
199
|
|
|
196
|
-
#: pyfemtet/_message/messages.py:
|
|
200
|
+
#: pyfemtet/_message/messages.py:93
|
|
197
201
|
msgid "The parameter set does not match the one added with add_init_parameter."
|
|
198
202
|
msgstr ""
|
|
199
203
|
|
|
200
|
-
#: pyfemtet/_message/messages.py:
|
|
204
|
+
#: pyfemtet/_message/messages.py:94
|
|
201
205
|
msgid "An exception has occurred during FEM update. Current parameters are: "
|
|
202
206
|
msgstr ""
|
|
203
207
|
|
|
204
|
-
#: pyfemtet/_message/messages.py:
|
|
208
|
+
#: pyfemtet/_message/messages.py:95
|
|
205
209
|
msgid "The constraints were not satisfied for the following sets of variables:"
|
|
206
210
|
msgstr ""
|
|
207
211
|
|
|
208
|
-
#: pyfemtet/_message/messages.py:
|
|
212
|
+
#: pyfemtet/_message/messages.py:96
|
|
209
213
|
msgid "Current parameter set cannot update FEM and this optimization method cannot skip current parameter set. The optimization process will be terminated."
|
|
210
214
|
msgstr ""
|
|
211
215
|
|
|
212
|
-
#: pyfemtet/_message/messages.py:
|
|
216
|
+
#: pyfemtet/_message/messages.py:97
|
|
213
217
|
msgid "Optimization has been interrupted. Note that you cannot acquire the OptimizationResult in case of `trust-constr`, `TNC`, `SLSQP` or `COBYLA`."
|
|
214
218
|
msgstr ""
|
|
215
219
|
|
|
216
|
-
#: pyfemtet/_message/messages.py:
|
|
220
|
+
#: pyfemtet/_message/messages.py:98
|
|
217
221
|
msgid "You can use parameter constraint only with BoTorchSampler."
|
|
218
222
|
msgstr ""
|
|
219
223
|
|
|
220
|
-
#: pyfemtet/_message/messages.py:
|
|
224
|
+
#: pyfemtet/_message/messages.py:99
|
|
221
225
|
msgid "Scipy is deterministic, so whether you set a seed or not will not change the results."
|
|
222
226
|
msgstr ""
|
|
223
227
|
|
|
224
|
-
#: pyfemtet/_message/messages.py:
|
|
228
|
+
#: pyfemtet/_message/messages.py:100
|
|
225
229
|
msgid "Start to candidate new parameter set with constraints. This process may take a long time."
|
|
226
230
|
msgstr ""
|
|
227
231
|
|
|
228
|
-
#: pyfemtet/_message/messages.py:
|
|
232
|
+
#: pyfemtet/_message/messages.py:101
|
|
229
233
|
msgid "Updating FEM parameter during evaluating constraints take a long time. Please consider not to use FEM variables in constraint functions and set `update_fem` to False."
|
|
230
234
|
msgstr ""
|
|
231
235
|
|
|
232
|
-
#: pyfemtet/_message/messages.py:
|
|
236
|
+
#: pyfemtet/_message/messages.py:105
|
|
233
237
|
msgid "Connect to Femtet"
|
|
234
238
|
msgstr ""
|
|
235
239
|
|
|
236
|
-
#: pyfemtet/_message/messages.py:
|
|
240
|
+
#: pyfemtet/_message/messages.py:106
|
|
237
241
|
msgid "Analysis model name described in csv does not exist in project."
|
|
238
242
|
msgstr ""
|
|
239
243
|
|
|
240
|
-
#: pyfemtet/_message/messages.py:
|
|
244
|
+
#: pyfemtet/_message/messages.py:107
|
|
241
245
|
msgid "History csv is not read yet. Open your project manually."
|
|
242
246
|
msgstr ""
|
|
243
247
|
|
|
244
|
-
#: pyfemtet/_message/messages.py:
|
|
248
|
+
#: pyfemtet/_message/messages.py:108
|
|
245
249
|
msgid "Cannot read project data from csv. Open your project manually."
|
|
246
250
|
msgstr ""
|
|
247
251
|
|
|
248
|
-
#: pyfemtet/_message/messages.py:
|
|
252
|
+
#: pyfemtet/_message/messages.py:109
|
|
249
253
|
msgid ".femprj file described in csv is not found. Open your project manually."
|
|
250
254
|
msgstr ""
|
|
251
255
|
|
|
252
|
-
#: pyfemtet/_message/messages.py:
|
|
256
|
+
#: pyfemtet/_message/messages.py:110
|
|
253
257
|
msgid "Analysis model name is not specified. Open your model in the project manually."
|
|
254
258
|
msgstr ""
|
|
255
259
|
|
|
256
|
-
#: pyfemtet/_message/messages.py:
|
|
260
|
+
#: pyfemtet/_message/messages.py:112
|
|
257
261
|
msgid "Constraint"
|
|
258
262
|
msgstr ""
|
|
259
263
|
|
|
260
|
-
#: pyfemtet/_message/messages.py:
|
|
264
|
+
#: pyfemtet/_message/messages.py:113
|
|
261
265
|
msgid "feasible"
|
|
262
266
|
msgstr ""
|
|
263
267
|
|
|
264
|
-
#: pyfemtet/_message/messages.py:
|
|
268
|
+
#: pyfemtet/_message/messages.py:114
|
|
265
269
|
msgid "infeasible"
|
|
266
270
|
msgstr ""
|
|
267
271
|
|
|
268
|
-
#: pyfemtet/_message/messages.py:
|
|
272
|
+
#: pyfemtet/_message/messages.py:115
|
|
269
273
|
msgid "Optimality"
|
|
270
274
|
msgstr ""
|
|
271
275
|
|
|
272
|
-
#: pyfemtet/_message/messages.py:
|
|
276
|
+
#: pyfemtet/_message/messages.py:116
|
|
273
277
|
msgid "non dominated"
|
|
274
278
|
msgstr ""
|
|
275
279
|
|
|
276
|
-
#: pyfemtet/_message/messages.py:
|
|
280
|
+
#: pyfemtet/_message/messages.py:117
|
|
277
281
|
msgid "dominated"
|
|
278
282
|
msgstr ""
|
|
279
283
|
|
|
280
|
-
#: pyfemtet/_message/messages.py:
|
|
284
|
+
#: pyfemtet/_message/messages.py:118
|
|
281
285
|
msgid "Hypervolume Plot"
|
|
282
286
|
msgstr ""
|
|
283
287
|
|
|
284
|
-
#: pyfemtet/_message/messages.py:
|
|
288
|
+
#: pyfemtet/_message/messages.py:119
|
|
285
289
|
msgid "Objective Plot"
|
|
286
290
|
msgstr ""
|
|
287
291
|
|
|
288
|
-
#: pyfemtet/_message/messages.py:
|
|
292
|
+
#: pyfemtet/_message/messages.py:120
|
|
289
293
|
msgid "Multi Objective Pair Plot"
|
|
290
294
|
msgstr ""
|
|
291
295
|
|
|
292
|
-
#: pyfemtet/_message/messages.py:
|
|
296
|
+
#: pyfemtet/_message/messages.py:121
|
|
293
297
|
msgid "Succeeded trial number"
|
|
294
298
|
msgstr ""
|
|
295
299
|
|
|
296
|
-
#: pyfemtet/_message/messages.py:
|
|
300
|
+
#: pyfemtet/_message/messages.py:122
|
|
297
301
|
msgid "All solutions"
|
|
298
302
|
msgstr ""
|
|
299
303
|
|
|
300
|
-
#: pyfemtet/_message/messages.py:
|
|
304
|
+
#: pyfemtet/_message/messages.py:123
|
|
301
305
|
msgid "Transition of<br>optimal solutions"
|
|
302
306
|
msgstr ""
|
|
303
307
|
|
|
304
|
-
#: pyfemtet/_message/messages.py:
|
|
308
|
+
#: pyfemtet/_message/messages.py:124
|
|
305
309
|
msgid "Target value"
|
|
306
310
|
msgstr ""
|
|
307
311
|
|
|
308
|
-
#: pyfemtet/_message/messages.py:
|
|
312
|
+
#: pyfemtet/_message/messages.py:126
|
|
309
313
|
msgid "Objectives"
|
|
310
314
|
msgstr ""
|
|
311
315
|
|
|
312
|
-
#: pyfemtet/_message/messages.py:
|
|
316
|
+
#: pyfemtet/_message/messages.py:127
|
|
313
317
|
msgid "Objectives (all)"
|
|
314
318
|
msgstr ""
|
|
315
319
|
|
|
316
|
-
#: pyfemtet/_message/messages.py:
|
|
320
|
+
#: pyfemtet/_message/messages.py:129
|
|
317
321
|
msgid "Prediction Model"
|
|
318
322
|
msgstr ""
|
|
319
323
|
|
|
320
|
-
#: pyfemtet/_message/messages.py:
|
|
324
|
+
#: pyfemtet/_message/messages.py:130
|
|
321
325
|
msgid " Recalculate Model"
|
|
322
326
|
msgstr ""
|
|
323
327
|
|
|
324
|
-
#: pyfemtet/_message/messages.py:
|
|
328
|
+
#: pyfemtet/_message/messages.py:131
|
|
325
329
|
msgid " Redraw graph"
|
|
326
330
|
msgstr ""
|
|
327
331
|
|
|
328
|
-
#: pyfemtet/_message/messages.py:
|
|
332
|
+
#: pyfemtet/_message/messages.py:132
|
|
329
333
|
msgid "Parameter"
|
|
330
334
|
msgstr ""
|
|
331
335
|
|
|
332
|
-
#: pyfemtet/_message/messages.py:
|
|
336
|
+
#: pyfemtet/_message/messages.py:133
|
|
333
337
|
msgid "Parameter2"
|
|
334
338
|
msgstr ""
|
|
335
339
|
|
|
336
|
-
#: pyfemtet/_message/messages.py:
|
|
340
|
+
#: pyfemtet/_message/messages.py:134
|
|
337
341
|
msgid "Objective"
|
|
338
342
|
msgstr ""
|
|
339
343
|
|
|
340
|
-
#: pyfemtet/_message/messages.py:
|
|
344
|
+
#: pyfemtet/_message/messages.py:135
|
|
341
345
|
msgid "No history selected."
|
|
342
346
|
msgstr ""
|
|
343
347
|
|
|
344
|
-
#: pyfemtet/_message/messages.py:
|
|
348
|
+
#: pyfemtet/_message/messages.py:136
|
|
345
349
|
msgid "No FEM result (yet)."
|
|
346
350
|
msgstr ""
|
|
347
351
|
|
|
348
|
-
#: pyfemtet/_message/messages.py:
|
|
352
|
+
#: pyfemtet/_message/messages.py:137
|
|
349
353
|
msgid "Prediction model is not calculated yet."
|
|
350
354
|
msgstr ""
|
|
351
355
|
|
|
352
|
-
#: pyfemtet/_message/messages.py:
|
|
356
|
+
#: pyfemtet/_message/messages.py:138
|
|
353
357
|
msgid "Cannot select same parameter"
|
|
354
358
|
msgstr ""
|
|
355
359
|
|
|
356
|
-
#: pyfemtet/_message/messages.py:
|
|
360
|
+
#: pyfemtet/_message/messages.py:139
|
|
357
361
|
msgid "3D graph (two or more parameters required)"
|
|
358
362
|
msgstr ""
|
|
359
363
|
|
|
360
|
-
#: pyfemtet/_message/messages.py:
|
|
364
|
+
#: pyfemtet/_message/messages.py:141
|
|
361
365
|
msgid "Prediction Model of Objective"
|
|
362
366
|
msgstr ""
|
|
363
367
|
|
|
364
|
-
#: pyfemtet/_message/messages.py:
|
|
368
|
+
#: pyfemtet/_message/messages.py:142
|
|
365
369
|
msgid "prediction model"
|
|
366
370
|
msgstr ""
|
|
367
371
|
|
|
368
|
-
#: pyfemtet/_message/messages.py:
|
|
372
|
+
#: pyfemtet/_message/messages.py:143
|
|
369
373
|
msgid "std. dev. of model"
|
|
370
374
|
msgstr ""
|
|
371
375
|
|
|
372
|
-
#: pyfemtet/_message/messages.py:
|
|
376
|
+
#: pyfemtet/_message/messages.py:145
|
|
373
377
|
msgid "Progress"
|
|
374
378
|
msgstr ""
|
|
375
379
|
|
|
376
|
-
#: pyfemtet/_message/messages.py:
|
|
380
|
+
#: pyfemtet/_message/messages.py:146
|
|
377
381
|
msgid "Prediction"
|
|
378
382
|
msgstr ""
|
|
379
383
|
|
|
380
|
-
#: pyfemtet/_message/messages.py:
|
|
384
|
+
#: pyfemtet/_message/messages.py:147
|
|
381
385
|
msgid "Workers"
|
|
382
386
|
msgstr ""
|
|
383
387
|
|
|
384
|
-
#: pyfemtet/_message/messages.py:
|
|
388
|
+
#: pyfemtet/_message/messages.py:148
|
|
385
389
|
msgid "Details"
|
|
386
390
|
msgstr ""
|
|
387
391
|
|
|
388
|
-
#: pyfemtet/_message/messages.py:
|
|
392
|
+
#: pyfemtet/_message/messages.py:150
|
|
389
393
|
msgid "Optimization status will be shown here."
|
|
390
394
|
msgstr ""
|
|
391
395
|
|
|
392
|
-
#: pyfemtet/_message/messages.py:
|
|
396
|
+
#: pyfemtet/_message/messages.py:151
|
|
393
397
|
msgid "Auto-update graph"
|
|
394
398
|
msgstr ""
|
|
395
399
|
|
|
396
|
-
#: pyfemtet/_message/messages.py:
|
|
400
|
+
#: pyfemtet/_message/messages.py:152
|
|
397
401
|
msgid "Interrupt Optimization"
|
|
398
402
|
msgstr ""
|
|
399
403
|
|
|
400
|
-
#: pyfemtet/_message/messages.py:
|
|
404
|
+
#: pyfemtet/_message/messages.py:154
|
|
401
405
|
msgid "Result"
|
|
402
406
|
msgstr ""
|
|
403
407
|
|
|
404
|
-
#: pyfemtet/_message/messages.py:
|
|
408
|
+
#: pyfemtet/_message/messages.py:156
|
|
405
409
|
msgid "Open Result in Femtet"
|
|
406
410
|
msgstr ""
|
|
407
411
|
|
|
408
|
-
#: pyfemtet/_message/messages.py:
|
|
412
|
+
#: pyfemtet/_message/messages.py:157
|
|
409
413
|
msgid "Reconstruct Model"
|
|
410
414
|
msgstr ""
|
|
411
415
|
|
|
412
|
-
#: pyfemtet/_message/messages.py:
|
|
416
|
+
#: pyfemtet/_message/messages.py:158
|
|
413
417
|
msgid "Drag and drop or select csv file"
|
|
414
418
|
msgstr ""
|
|
415
419
|
|
|
416
|
-
#: pyfemtet/_message/messages.py:
|
|
420
|
+
#: pyfemtet/_message/messages.py:159
|
|
417
421
|
msgid "Connection to Femtet is not established. Launch Femtet and Open a project."
|
|
418
422
|
msgstr ""
|
|
419
423
|
|
|
420
|
-
#: pyfemtet/_message/messages.py:
|
|
424
|
+
#: pyfemtet/_message/messages.py:160
|
|
421
425
|
msgid "No result plot is selected."
|
|
422
426
|
msgstr ""
|
|
423
427
|
|
|
424
|
-
#: pyfemtet/_message/messages.py:
|
|
428
|
+
#: pyfemtet/_message/messages.py:161
|
|
425
429
|
msgid "The femprj file path in the history csv is not found or valid."
|
|
426
430
|
msgstr ""
|
|
427
431
|
|
|
428
|
-
#: pyfemtet/_message/messages.py:
|
|
432
|
+
#: pyfemtet/_message/messages.py:162
|
|
429
433
|
msgid "The model name in the history csv is not found."
|
|
430
434
|
msgstr ""
|
|
431
435
|
|
|
432
|
-
#: pyfemtet/_message/messages.py:
|
|
436
|
+
#: pyfemtet/_message/messages.py:163
|
|
433
437
|
msgid ".pdt file is not found. Please check the .Results folder. Note that .pdt file save mode depends on the `save_pdt` argument of FemtetInterface in optimization script(default to `all`)."
|
|
434
438
|
msgstr ""
|
|
435
439
|
|
|
436
|
-
#: pyfemtet/_message/messages.py:
|
|
440
|
+
#: pyfemtet/_message/messages.py:168
|
|
437
441
|
msgid "Failed to open "
|
|
438
442
|
msgstr ""
|
|
439
443
|
|
|
440
|
-
#: pyfemtet/_message/messages.py:
|
|
444
|
+
#: pyfemtet/_message/messages.py:169
|
|
441
445
|
msgid "Specified model is not in current project. Please check opened project. For example, not \"analysis model only\" but your .femprj file."
|
|
442
446
|
msgstr ""
|
|
443
447
|
|
|
444
|
-
#: pyfemtet/_message/messages.py:
|
|
448
|
+
#: pyfemtet/_message/messages.py:172
|
|
445
449
|
msgid ".femprj file path of the history csv is invalid. Please certify matching between csv and opening .femprj file."
|
|
446
450
|
msgstr ""
|
|
447
451
|
|
|
448
|
-
#: pyfemtet/_message/messages.py:
|
|
452
|
+
#: pyfemtet/_message/messages.py:173
|
|
449
453
|
msgid "Analysis model name of the history csv is invalid. Please certify matching between csv and opening analysis model."
|
|
450
454
|
msgstr ""
|
|
451
455
|
|
|
452
|
-
#: pyfemtet/_message/messages.py:
|
|
456
|
+
#: pyfemtet/_message/messages.py:174
|
|
453
457
|
msgid "Analysis model name of the history csv and opened in Femtet is inconsistent. Please certify matching between csv and opening analysis model."
|
|
454
458
|
msgstr ""
|
|
455
459
|
|
|
456
|
-
#: pyfemtet/_message/messages.py:
|
|
460
|
+
#: pyfemtet/_message/messages.py:175
|
|
457
461
|
msgid "tutorial mode"
|
|
458
462
|
msgstr ""
|
|
459
463
|
|
|
460
|
-
#: pyfemtet/_message/messages.py:
|
|
464
|
+
#: pyfemtet/_message/messages.py:176
|
|
461
465
|
msgid "Load Sample CSV"
|
|
462
466
|
msgstr ""
|
|
463
467
|
|
|
464
|
-
#: pyfemtet/_message/messages.py:
|
|
468
|
+
#: pyfemtet/_message/messages.py:177
|
|
465
469
|
msgid "Load CSV"
|
|
466
470
|
msgstr ""
|
|
467
471
|
|
|
468
|
-
#: pyfemtet/_message/messages.py:
|
|
472
|
+
#: pyfemtet/_message/messages.py:178
|
|
469
473
|
msgid "Open your optimization result. Then connecting to femtet will start automatically. Note that in tutorial mode, this button loads the ready-made sample csv and open sample femprj."
|
|
470
474
|
msgstr ""
|
|
471
475
|
|
|
472
|
-
#: pyfemtet/_message/messages.py:
|
|
476
|
+
#: pyfemtet/_message/messages.py:180
|
|
473
477
|
msgid "Main Graph"
|
|
474
478
|
msgstr ""
|
|
475
479
|
|
|
476
|
-
#: pyfemtet/_message/messages.py:
|
|
480
|
+
#: pyfemtet/_message/messages.py:181
|
|
477
481
|
msgid "Here the optimization history is shown. Each plot represents single FEM result. You can pick a result to open the corresponding result in Femtet. "
|
|
478
482
|
msgstr ""
|
|
479
483
|
|
|
480
|
-
#: pyfemtet/_message/messages.py:
|
|
484
|
+
#: pyfemtet/_message/messages.py:184
|
|
481
485
|
msgid "Open Result"
|
|
482
486
|
msgstr ""
|
|
483
487
|
|
|
484
|
-
#: pyfemtet/_message/messages.py:
|
|
488
|
+
#: pyfemtet/_message/messages.py:185
|
|
485
489
|
msgid "After pick a point in the main graph, This button shows the corresponding FEM result in Femtet."
|
|
486
490
|
msgstr ""
|
|
487
491
|
|
|
488
|
-
#: pyfemtet/_message/messages.py:
|
|
492
|
+
#: pyfemtet/_message/messages.py:187
|
|
489
493
|
msgid "Re-connect to Femtet."
|
|
490
494
|
msgstr ""
|
|
491
495
|
|
|
492
|
-
#: pyfemtet/_message/messages.py:
|
|
496
|
+
#: pyfemtet/_message/messages.py:188
|
|
493
497
|
msgid "Sample csv is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
|
|
494
498
|
msgstr ""
|
|
495
499
|
|
|
496
|
-
#: pyfemtet/_message/messages.py:
|
|
500
|
+
#: pyfemtet/_message/messages.py:189
|
|
497
501
|
msgid "Sample femprj file is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
|
|
498
502
|
msgstr ""
|
|
499
503
|
|
|
500
|
-
#: pyfemtet/_message/messages.py:
|
|
504
|
+
#: pyfemtet/_message/messages.py:190
|
|
501
505
|
msgid "Sample femprj result folder is not found. Please consider to re-install pyfemtet by `py -m pip install pyfemtet -U --force-reinstall`"
|
|
502
506
|
msgstr ""
|
|
503
507
|
|
|
504
|
-
#: pyfemtet/_message/messages.py:
|
|
508
|
+
#: pyfemtet/_message/messages.py:192
|
|
505
509
|
msgid "Loading data..."
|
|
506
510
|
msgstr ""
|
|
507
511
|
|
|
508
|
-
#: pyfemtet/_message/messages.py:
|
|
512
|
+
#: pyfemtet/_message/messages.py:193
|
|
509
513
|
msgid "Plots of objectives versus trials"
|
|
510
514
|
msgstr ""
|
|
511
515
|
|
|
512
|
-
#: pyfemtet/_message/messages.py:
|
|
516
|
+
#: pyfemtet/_message/messages.py:194
|
|
513
517
|
msgid "The vertical axis is the objective, and the horizontal axis is the number of trials."
|
|
514
518
|
msgstr ""
|
|
515
519
|
|
|
516
|
-
#: pyfemtet/_message/messages.py:
|
|
520
|
+
#: pyfemtet/_message/messages.py:195
|
|
517
521
|
msgid "Parallel coordinate plots"
|
|
518
522
|
msgstr ""
|
|
519
523
|
|
|
520
|
-
#: pyfemtet/_message/messages.py:
|
|
524
|
+
#: pyfemtet/_message/messages.py:196
|
|
521
525
|
msgid "The vertical axis is an objective or parameters, and one polyline indicates one result."
|
|
522
526
|
msgstr ""
|
|
523
527
|
|
|
524
|
-
#: pyfemtet/_message/messages.py:
|
|
528
|
+
#: pyfemtet/_message/messages.py:197
|
|
525
529
|
msgid "The heatmap of objectives"
|
|
526
530
|
msgstr ""
|
|
527
531
|
|
|
528
|
-
#: pyfemtet/_message/messages.py:
|
|
532
|
+
#: pyfemtet/_message/messages.py:198
|
|
529
533
|
msgid "The axes are parameters, and the color shows objective value."
|
|
530
534
|
msgstr ""
|
|
531
535
|
|
|
532
|
-
#: pyfemtet/_message/messages.py:
|
|
536
|
+
#: pyfemtet/_message/messages.py:199
|
|
533
537
|
msgid "The response of an objective versus one parameter"
|
|
534
538
|
msgstr ""
|
|
535
539
|
|
|
536
|
-
#: pyfemtet/_message/messages.py:
|
|
540
|
+
#: pyfemtet/_message/messages.py:200
|
|
537
541
|
msgid "The vertical axis is objective, and the horizontal axis is parameter."
|
|
538
542
|
msgstr ""
|
|
539
543
|
|
pyfemtet/_message/messages.py
CHANGED
|
@@ -85,6 +85,8 @@ class Message:
|
|
|
85
85
|
INFO_TERMINATING_EXCEL = _('Terminating Excel process...')
|
|
86
86
|
INFO_TERMINATED_EXCEL = _('Excel process is terminated.')
|
|
87
87
|
INFO_RESTORING_FEMTET_AUTOSAVE = _('Restore Femtet setting of autosave.')
|
|
88
|
+
ERR_PARAMETRIC_CSV_CONTAINS_ERROR = _('Failed to make output from Femtet. '
|
|
89
|
+
'Please check output settings of Parametric Analysis.')
|
|
88
90
|
|
|
89
91
|
# ===== pyfemtet.opt.optimizer =====
|
|
90
92
|
ERR_NOT_IMPLEMENTED = _('The following features are not supported by the specified optimization method. ')
|
pyfemtet/opt/_femopt.py
CHANGED
|
@@ -27,6 +27,7 @@ from pyfemtet.opt._femopt_core import (
|
|
|
27
27
|
History,
|
|
28
28
|
OptimizationStatus,
|
|
29
29
|
logger,
|
|
30
|
+
MonitorHostRecord,
|
|
30
31
|
)
|
|
31
32
|
from pyfemtet._message import Msg, encoding
|
|
32
33
|
from pyfemtet.opt.optimizer.parameter import Parameter, Expression
|
|
@@ -135,6 +136,7 @@ class FEMOpt:
|
|
|
135
136
|
self.monitor_process_future = None
|
|
136
137
|
self.monitor_server_kwargs = dict()
|
|
137
138
|
self.monitor_process_worker_name = None
|
|
139
|
+
self.monitor_host_record = None
|
|
138
140
|
self._hv_reference = None
|
|
139
141
|
self._extra_space_dir = None
|
|
140
142
|
|
|
@@ -403,7 +405,7 @@ class FEMOpt:
|
|
|
403
405
|
|
|
404
406
|
if names is not None:
|
|
405
407
|
if isinstance(names, str):
|
|
406
|
-
names = [f'
|
|
408
|
+
names = [f'{names}_{i}' for i in range(n_return)]
|
|
407
409
|
else:
|
|
408
410
|
# names = names
|
|
409
411
|
pass
|
|
@@ -679,11 +681,11 @@ class FEMOpt:
|
|
|
679
681
|
# ===== fem の設定 ==--=
|
|
680
682
|
|
|
681
683
|
# Femtet 特有の処理
|
|
682
|
-
|
|
684
|
+
extra_data = dict()
|
|
683
685
|
if isinstance(self.fem, FemtetInterface):
|
|
684
686
|
|
|
685
687
|
# 結果 csv に記載する femprj に関する情報の作成
|
|
686
|
-
|
|
688
|
+
extra_data.update(
|
|
687
689
|
dict(
|
|
688
690
|
femprj_path=self.fem.original_femprj_path,
|
|
689
691
|
model_name=self.fem.model_name
|
|
@@ -774,23 +776,25 @@ class FEMOpt:
|
|
|
774
776
|
|
|
775
777
|
with self.client.cluster as _cluster, self.client as _client:
|
|
776
778
|
|
|
777
|
-
# actor の設定
|
|
779
|
+
# ===== status actor の設定 =====
|
|
778
780
|
self.status = OptimizationStatus(_client, worker_address=self.monitor_process_worker_name)
|
|
779
781
|
self.worker_status_list = [OptimizationStatus(_client, worker_address=self.monitor_process_worker_name, name=name) for name in worker_addresses] # tqdm 検討
|
|
780
782
|
self.status.set(OptimizationStatus.SETTING_UP)
|
|
783
|
+
self.monitor_host_record = MonitorHostRecord(_client, self.monitor_process_worker_name)
|
|
784
|
+
logger.info('Status Actor initialized successfully.')
|
|
785
|
+
|
|
786
|
+
# ===== initialize history =====
|
|
781
787
|
self.history = History(
|
|
782
788
|
self.history_path,
|
|
783
789
|
self.opt.variables.get_parameter_names(),
|
|
784
790
|
list(self.opt.objectives.keys()),
|
|
785
791
|
list(self.opt.constraints.keys()),
|
|
786
792
|
_client,
|
|
787
|
-
metadata,
|
|
788
793
|
self._hv_reference
|
|
789
794
|
)
|
|
790
|
-
logger.info('Status Actor initialized successfully.')
|
|
791
795
|
|
|
796
|
+
# ===== launch monitor =====
|
|
792
797
|
# launch monitor
|
|
793
|
-
# noinspection PyTypeChecker
|
|
794
798
|
self.monitor_process_future = _client.submit(
|
|
795
799
|
# func
|
|
796
800
|
_start_monitor_server,
|
|
@@ -799,6 +803,7 @@ class FEMOpt:
|
|
|
799
803
|
self.status,
|
|
800
804
|
worker_addresses,
|
|
801
805
|
self.worker_status_list,
|
|
806
|
+
self.monitor_host_record,
|
|
802
807
|
# kwargs
|
|
803
808
|
**self.monitor_server_kwargs,
|
|
804
809
|
# kwargs of submit
|
|
@@ -807,6 +812,16 @@ class FEMOpt:
|
|
|
807
812
|
)
|
|
808
813
|
logger.info('Process monitor initialized successfully.')
|
|
809
814
|
|
|
815
|
+
# update extra_data of history to notify
|
|
816
|
+
# how to emit interruption signal by
|
|
817
|
+
# external processes
|
|
818
|
+
start = time()
|
|
819
|
+
while len(self.monitor_host_record.get()) == 0:
|
|
820
|
+
sleep(0.1)
|
|
821
|
+
extra_data.update(self.monitor_host_record.get())
|
|
822
|
+
self.history.extra_data.update(extra_data)
|
|
823
|
+
|
|
824
|
+
# ===== setup fem and opt before parallelization =====
|
|
810
825
|
# fem
|
|
811
826
|
self.fem._setup_before_parallel(_client)
|
|
812
827
|
|
|
@@ -817,6 +832,11 @@ class FEMOpt:
|
|
|
817
832
|
self.opt.history = self.history
|
|
818
833
|
self.opt._setup_before_parallel()
|
|
819
834
|
|
|
835
|
+
# ===== 最適化ループ開始 =====
|
|
836
|
+
# opt から non-serializable な com を
|
|
837
|
+
# 有している可能性のある fem を削除
|
|
838
|
+
# ただし main process の sub thread では
|
|
839
|
+
# これをそのまま使うので buff に退避
|
|
820
840
|
buff = self.opt.fem
|
|
821
841
|
del self.opt.fem
|
|
822
842
|
|
|
@@ -832,8 +852,12 @@ class FEMOpt:
|
|
|
832
852
|
allow_other_workers=False,
|
|
833
853
|
)
|
|
834
854
|
|
|
855
|
+
# 退避した fem を戻す
|
|
835
856
|
self.opt.fem = buff
|
|
836
857
|
|
|
858
|
+
# リモートクラスタではない場合
|
|
859
|
+
# main process の sub thread で
|
|
860
|
+
# 計算開始
|
|
837
861
|
t_main = None
|
|
838
862
|
if not self.opt.is_cluster:
|
|
839
863
|
# ローカルプロセスでの計算(opt._run 相当の処理)
|
|
@@ -857,7 +881,7 @@ class FEMOpt:
|
|
|
857
881
|
)
|
|
858
882
|
t_main.start()
|
|
859
883
|
|
|
860
|
-
# save history
|
|
884
|
+
# ===== save history during optimization =====
|
|
861
885
|
def save_history():
|
|
862
886
|
while True:
|
|
863
887
|
sleep(2)
|
|
@@ -872,7 +896,6 @@ class FEMOpt:
|
|
|
872
896
|
t_save_history.start()
|
|
873
897
|
|
|
874
898
|
# ===== 終了 =====
|
|
875
|
-
|
|
876
899
|
# クラスターの Unexpected Exception のリストを取得
|
|
877
900
|
opt_exceptions: list[Exception or None] = _client.gather(calc_futures) # gather() で終了待ちも兼ねる
|
|
878
901
|
|
|
@@ -884,7 +907,7 @@ class FEMOpt:
|
|
|
884
907
|
local_opt_exception = self.opt._exception # Exception を取得
|
|
885
908
|
opt_exceptions.append(local_opt_exception)
|
|
886
909
|
|
|
887
|
-
#
|
|
910
|
+
# 終了シグナルを送る
|
|
888
911
|
self.status.set(OptimizationStatus.TERMINATED)
|
|
889
912
|
end = time()
|
|
890
913
|
|
|
@@ -910,6 +933,8 @@ class FEMOpt:
|
|
|
910
933
|
print()
|
|
911
934
|
|
|
912
935
|
# monitor worker を残してユーザーが結果を確認できるようにする
|
|
936
|
+
# with 文を抜けると monitor worker が終了して
|
|
937
|
+
# daemon thread である run_forever が終了する
|
|
913
938
|
if confirm_before_exit:
|
|
914
939
|
print()
|
|
915
940
|
print('='*len(Msg.CONFIRM_BEFORE_EXIT))
|
|
@@ -945,6 +970,7 @@ def _start_monitor_server(
|
|
|
945
970
|
status,
|
|
946
971
|
worker_addresses,
|
|
947
972
|
worker_status_list,
|
|
973
|
+
host_record,
|
|
948
974
|
host=None,
|
|
949
975
|
port=None,
|
|
950
976
|
):
|
|
@@ -955,5 +981,6 @@ def _start_monitor_server(
|
|
|
955
981
|
worker_status_list,
|
|
956
982
|
host,
|
|
957
983
|
port,
|
|
984
|
+
host_record,
|
|
958
985
|
)
|
|
959
986
|
return 'Exit monitor server process gracefully'
|