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/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
- print("min_trust_radius must be smaller than max_trust_radius")
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: