MultiOptPy 1.20.2__py3-none-any.whl → 1.20.4__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.
- multioptpy/Calculator/ase_calculation_tools.py +13 -0
- multioptpy/Calculator/ase_tools/fairchem.py +12 -7
- multioptpy/Constraint/constraint_condition.py +208 -245
- multioptpy/ModelFunction/binary_image_ts_search_model_function.py +111 -18
- multioptpy/ModelFunction/opt_meci.py +94 -27
- multioptpy/ModelFunction/opt_mesx.py +47 -15
- multioptpy/ModelFunction/opt_mesx_2.py +35 -18
- multioptpy/Optimizer/crsirfo.py +182 -0
- multioptpy/Optimizer/mf_rsirfo.py +266 -0
- multioptpy/Optimizer/mode_following.py +273 -0
- multioptpy/Utils/calc_tools.py +1 -0
- multioptpy/fileio.py +13 -6
- multioptpy/interface.py +3 -2
- multioptpy/optimization.py +2159 -1259
- multioptpy/optimizer.py +158 -6
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.4.dist-info}/METADATA +497 -438
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.4.dist-info}/RECORD +21 -18
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.4.dist-info}/WHEEL +0 -0
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.4.dist-info}/entry_points.txt +0 -0
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.4.dist-info}/licenses/LICENSE +0 -0
- {multioptpy-1.20.2.dist-info → multioptpy-1.20.4.dist-info}/top_level.txt +0 -0
multioptpy/optimizer.py
CHANGED
|
@@ -32,6 +32,8 @@ from multioptpy.Optimizer.conjugate_gradient import ConjgateGradient
|
|
|
32
32
|
#from multioptpy.Optimizer.ric_rfo import RedundantInternalRFO
|
|
33
33
|
from multioptpy.Optimizer.rsprfo import EnhancedRSPRFO
|
|
34
34
|
from multioptpy.Optimizer.rsirfo import RSIRFO
|
|
35
|
+
from multioptpy.Optimizer.crsirfo import CRSIRFO
|
|
36
|
+
from multioptpy.Optimizer.mf_rsirfo import MF_RSIRFO
|
|
35
37
|
#from multioptpy.Optimizer.newton import Newton
|
|
36
38
|
from multioptpy.Optimizer.lbfgs import LBFGS
|
|
37
39
|
from multioptpy.Optimizer.tr_lbfgs import TRLBFGS
|
|
@@ -81,7 +83,140 @@ specific_cases = {
|
|
|
81
83
|
"adamlookaheadlars": {"optimizer": Adam, "lookahead": LookAhead(), "lars": LARS()},
|
|
82
84
|
}
|
|
83
85
|
|
|
84
|
-
quasi_newton_mapping = {
|
|
86
|
+
quasi_newton_mapping = {
|
|
87
|
+
"mwsmf_rsirfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
88
|
+
"mwsmf_rsirfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
89
|
+
"mwsmf_rsirfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
90
|
+
"mwsmf_rsirfo_block_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
91
|
+
"mwsmf_rsirfo_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
92
|
+
"mwsmf_rsirfo_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
93
|
+
"mwsmf_rsirfo_block_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
94
|
+
"mwsmf_rsirfo_block_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
95
|
+
"mwsmf_rsirfo_block_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
96
|
+
"mwsmf_rsirfo_block_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
97
|
+
"mwsmf_rsirfo_block_cfd_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
98
|
+
"mwsmf_rsirfo_block_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
99
|
+
"mwsmf_rsirfo_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
100
|
+
"mwsmf_rsirfo_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
101
|
+
"mwsmf_rsirfo_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
102
|
+
"mwsmf_rsirfo_block_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
103
|
+
"mwsmf_rsirfo_block_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
104
|
+
"mwsmf_rsirfo_block_cfd_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
105
|
+
"mwsmf_rsirfo_block_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
106
|
+
"mwsmf_rsirfo_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
107
|
+
"mwsmf_rsirfo_pcfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
108
|
+
"mwsmf_rsirfo_msp": {"delta": 0.50, "rfo_type": 1},
|
|
109
|
+
"mwsmf_rsirfo_sr1": {"delta": 0.50, "rfo_type": 1},
|
|
110
|
+
"mwsmf_rsirfo_psb": {"delta": 0.50, "rfo_type": 1},
|
|
111
|
+
"mwsmf_rsirfo_flowchart": {"delta": 0.50, "rfo_type": 1},
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
"mwmf_rsirfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
115
|
+
"mwmf_rsirfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
116
|
+
"mwmf_rsirfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
117
|
+
"mwmf_rsirfo_block_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
118
|
+
"mwmf_rsirfo_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
119
|
+
"mwmf_rsirfo_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
120
|
+
"mwmf_rsirfo_block_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
121
|
+
"mwmf_rsirfo_block_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
122
|
+
"mwmf_rsirfo_block_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
123
|
+
"mwmf_rsirfo_block_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
124
|
+
"mwmf_rsirfo_block_cfd_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
125
|
+
"mwmf_rsirfo_block_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
126
|
+
"mwmf_rsirfo_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
127
|
+
"mwmf_rsirfo_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
128
|
+
"mwmf_rsirfo_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
129
|
+
"mwmf_rsirfo_block_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
130
|
+
"mwmf_rsirfo_block_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
131
|
+
"mwmf_rsirfo_block_cfd_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
132
|
+
"mwmf_rsirfo_block_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
133
|
+
"mwmf_rsirfo_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
134
|
+
"mwmf_rsirfo_pcfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
135
|
+
"mwmf_rsirfo_msp": {"delta": 0.50, "rfo_type": 1},
|
|
136
|
+
"mwmf_rsirfo_sr1": {"delta": 0.50, "rfo_type": 1},
|
|
137
|
+
"mwmf_rsirfo_psb": {"delta": 0.50, "rfo_type": 1},
|
|
138
|
+
"mwmf_rsirfo_flowchart": {"delta": 0.50, "rfo_type": 1},
|
|
139
|
+
|
|
140
|
+
"smf_rsirfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
141
|
+
"smf_rsirfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
142
|
+
"smf_rsirfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
143
|
+
"smf_rsirfo_block_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
144
|
+
"smf_rsirfo_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
145
|
+
"smf_rsirfo_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
146
|
+
"smf_rsirfo_block_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
147
|
+
"smf_rsirfo_block_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
148
|
+
"smf_rsirfo_block_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
149
|
+
"smf_rsirfo_block_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
150
|
+
"smf_rsirfo_block_cfd_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
151
|
+
"smf_rsirfo_block_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
152
|
+
"smf_rsirfo_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
153
|
+
"smf_rsirfo_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
154
|
+
"smf_rsirfo_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
155
|
+
"smf_rsirfo_block_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
156
|
+
"smf_rsirfo_block_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
157
|
+
"smf_rsirfo_block_cfd_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
158
|
+
"smf_rsirfo_block_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
159
|
+
"smf_rsirfo_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
160
|
+
"smf_rsirfo_pcfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
161
|
+
"smf_rsirfo_msp": {"delta": 0.50, "rfo_type": 1},
|
|
162
|
+
"smf_rsirfo_sr1": {"delta": 0.50, "rfo_type": 1},
|
|
163
|
+
"smf_rsirfo_psb": {"delta": 0.50, "rfo_type": 1},
|
|
164
|
+
"smf_rsirfo_flowchart": {"delta": 0.50, "rfo_type": 1},
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
"mf_rsirfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
168
|
+
"mf_rsirfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
169
|
+
"mf_rsirfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
170
|
+
"mf_rsirfo_block_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
171
|
+
"mf_rsirfo_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
172
|
+
"mf_rsirfo_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
173
|
+
"mf_rsirfo_block_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
174
|
+
"mf_rsirfo_block_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
175
|
+
"mf_rsirfo_block_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
176
|
+
"mf_rsirfo_block_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
177
|
+
"mf_rsirfo_block_cfd_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
178
|
+
"mf_rsirfo_block_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
179
|
+
"mf_rsirfo_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
180
|
+
"mf_rsirfo_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
181
|
+
"mf_rsirfo_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
182
|
+
"mf_rsirfo_block_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
183
|
+
"mf_rsirfo_block_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
184
|
+
"mf_rsirfo_block_cfd_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
185
|
+
"mf_rsirfo_block_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
186
|
+
"mf_rsirfo_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
187
|
+
"mf_rsirfo_pcfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
188
|
+
"mf_rsirfo_msp": {"delta": 0.50, "rfo_type": 1},
|
|
189
|
+
"mf_rsirfo_sr1": {"delta": 0.50, "rfo_type": 1},
|
|
190
|
+
"mf_rsirfo_psb": {"delta": 0.50, "rfo_type": 1},
|
|
191
|
+
"mf_rsirfo_flowchart": {"delta": 0.50, "rfo_type": 1},
|
|
192
|
+
|
|
193
|
+
"crsirfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
194
|
+
"crsirfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
195
|
+
"crsirfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
196
|
+
"crsirfo_block_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
197
|
+
"crsirfo_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
198
|
+
"crsirfo_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
199
|
+
"crsirfo_block_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
200
|
+
"crsirfo_block_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
201
|
+
"crsirfo_block_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
202
|
+
"crsirfo_block_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
203
|
+
"crsirfo_block_cfd_fsb_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
204
|
+
"crsirfo_block_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
205
|
+
"crsirfo_cfd_fsb_dd": {"delta": 0.50, "rfo_type": 1},
|
|
206
|
+
"crsirfo_cfd_fsb": {"delta": 0.50, "rfo_type": 1},
|
|
207
|
+
"crsirfo_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
208
|
+
"crsirfo_block_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
209
|
+
"crsirfo_block_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
210
|
+
"crsirfo_block_cfd_bofill_weighted": {"delta": 0.50, "rfo_type": 1},
|
|
211
|
+
"crsirfo_block_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
212
|
+
"crsirfo_cfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
213
|
+
"crsirfo_pcfd_bofill": {"delta": 0.50, "rfo_type": 1},
|
|
214
|
+
"crsirfo_msp": {"delta": 0.50, "rfo_type": 1},
|
|
215
|
+
"crsirfo_sr1": {"delta": 0.50, "rfo_type": 1},
|
|
216
|
+
"crsirfo_psb": {"delta": 0.50, "rfo_type": 1},
|
|
217
|
+
"crsirfo_flowchart": {"delta": 0.50, "rfo_type": 1},
|
|
218
|
+
|
|
219
|
+
|
|
85
220
|
"rsirfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
86
221
|
"rsirfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
87
222
|
"rsirfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
@@ -107,7 +242,9 @@ quasi_newton_mapping = {
|
|
|
107
242
|
"rsirfo_sr1": {"delta": 0.50, "rfo_type": 1},
|
|
108
243
|
"rsirfo_psb": {"delta": 0.50, "rfo_type": 1},
|
|
109
244
|
"rsirfo_flowchart": {"delta": 0.50, "rfo_type": 1},
|
|
110
|
-
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
|
|
111
248
|
"rsprfo_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
112
249
|
"rsprfo_bfgs": {"delta": 0.50, "rfo_type": 1},
|
|
113
250
|
"rsprfo_block_bfgs_dd": {"delta": 0.50, "rfo_type": 1},
|
|
@@ -138,7 +275,7 @@ quasi_newton_mapping = {
|
|
|
138
275
|
|
|
139
276
|
|
|
140
277
|
class CalculateMoveVector:
|
|
141
|
-
def __init__(self, DELTA, element_list, saddle_order=0, FC_COUNT=-1, temperature=0.0, model_hess_flag=None, max_trust_radius=None, min_trust_radius=None):
|
|
278
|
+
def __init__(self, DELTA, element_list, saddle_order=0, FC_COUNT=-1, temperature=0.0, model_hess_flag=None, max_trust_radius=None, min_trust_radius=None, **kwargs):
|
|
142
279
|
self.DELTA = DELTA
|
|
143
280
|
self.temperature = temperature
|
|
144
281
|
np.set_printoptions(precision=12, floatmode="fixed", suppress=True)
|
|
@@ -148,7 +285,7 @@ class CalculateMoveVector:
|
|
|
148
285
|
self.MIN_MAX_FORCE_SWITCHING_THRESHOLD = 0.0010
|
|
149
286
|
self.MAX_RMS_FORCE_SWITCHING_THRESHOLD = 0.05
|
|
150
287
|
self.MIN_RMS_FORCE_SWITCHING_THRESHOLD = 0.005
|
|
151
|
-
|
|
288
|
+
self.projection_constraint = kwargs.get("projection_constraint", None)
|
|
152
289
|
self.max_trust_radius = max_trust_radius
|
|
153
290
|
self.min_trust_radius = min_trust_radius
|
|
154
291
|
self.CALC_TRUST_RADII = TrustRadius()
|
|
@@ -158,6 +295,7 @@ class CalculateMoveVector:
|
|
|
158
295
|
exit()
|
|
159
296
|
|
|
160
297
|
self.CALC_TRUST_RADII.set_max_trust_radius(self.max_trust_radius)
|
|
298
|
+
|
|
161
299
|
if self.max_trust_radius is None:
|
|
162
300
|
if saddle_order > 0:
|
|
163
301
|
self.max_trust_radius = 0.1
|
|
@@ -176,8 +314,7 @@ class CalculateMoveVector:
|
|
|
176
314
|
print("min_trust_radius must be greater than 0.0")
|
|
177
315
|
exit()
|
|
178
316
|
if self.trust_radii < self.min_trust_radius:
|
|
179
|
-
|
|
180
|
-
exit()
|
|
317
|
+
self.trust_radius = self.min_trust_radius
|
|
181
318
|
|
|
182
319
|
self.CALC_TRUST_RADII.set_min_trust_radius(self.min_trust_radius)
|
|
183
320
|
|
|
@@ -315,6 +452,21 @@ class CalculateMoveVector:
|
|
|
315
452
|
print(key)
|
|
316
453
|
if "rsprfo" in key:
|
|
317
454
|
optimizer = EnhancedRSPRFO(method=m, saddle_order=self.saddle_order, element_list=self.element_list, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius)
|
|
455
|
+
|
|
456
|
+
elif "mwsmf_rsirfo" in key:
|
|
457
|
+
optimizer = MF_RSIRFO(method=m, saddle_order=self.saddle_order, element_list=self.element_list, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius, adaptive_mode_following=False)
|
|
458
|
+
|
|
459
|
+
elif "mwmf_rsirfo" in key:
|
|
460
|
+
optimizer = MF_RSIRFO(method=m, saddle_order=self.saddle_order, element_list=self.element_list, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius)
|
|
461
|
+
|
|
462
|
+
elif "smf_rsirfo" in key:
|
|
463
|
+
optimizer = MF_RSIRFO(method=m, saddle_order=self.saddle_order, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius, adaptive_mode_following=False)
|
|
464
|
+
|
|
465
|
+
elif "mf_rsirfo" in key:
|
|
466
|
+
optimizer = MF_RSIRFO(method=m, saddle_order=self.saddle_order, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius)
|
|
467
|
+
|
|
468
|
+
elif "crsirfo" in key and self.projection_constraint:
|
|
469
|
+
optimizer = CRSIRFO(method=m, constraints=self.projection_constraint, saddle_order=self.saddle_order, element_list=self.element_list, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius)
|
|
318
470
|
elif "rsirfo" in key:
|
|
319
471
|
optimizer = RSIRFO(method=m, saddle_order=self.saddle_order, element_list=self.element_list, trust_radius_max=self.max_trust_radius, trust_radius_min=self.min_trust_radius)
|
|
320
472
|
else:
|