iwopy 0.1.5__py3-none-any.whl → 0.1.8__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 iwopy might be problematic. Click here for more details.
- iwopy/VERSION +1 -1
- iwopy/benchmarks/branin.py +1 -1
- iwopy/core/optimizer.py +9 -3
- iwopy/core/problem.py +66 -6
- iwopy/interfaces/__init__.py +1 -0
- iwopy/interfaces/pygmo/algos.py +24 -24
- iwopy/interfaces/pygmo/imports.py +21 -20
- iwopy/interfaces/pygmo/optimizer.py +5 -5
- iwopy/interfaces/pymoo/__init__.py +1 -1
- iwopy/interfaces/pymoo/factory.py +19 -35
- iwopy/interfaces/pymoo/imports.py +75 -22
- iwopy/interfaces/pymoo/optimizer.py +41 -34
- iwopy/interfaces/pymoo/problem.py +336 -285
- iwopy/interfaces/scipy/__init__.py +1 -0
- iwopy/interfaces/scipy/optimizer.py +232 -0
- iwopy/utils/__init__.py +1 -0
- iwopy/utils/load.py +31 -0
- iwopy/wrappers/discretize_reg_grid.py +66 -18
- {iwopy-0.1.5.dist-info → iwopy-0.1.8.dist-info}/METADATA +6 -3
- {iwopy-0.1.5.dist-info → iwopy-0.1.8.dist-info}/RECORD +24 -21
- {iwopy-0.1.5.dist-info → iwopy-0.1.8.dist-info}/WHEEL +1 -1
- {iwopy-0.1.5.dist-info → iwopy-0.1.8.dist-info}/LICENSE +0 -0
- {iwopy-0.1.5.dist-info → iwopy-0.1.8.dist-info}/top_level.txt +0 -0
- {iwopy-0.1.5.dist-info → iwopy-0.1.8.dist-info}/zip-safe +0 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from scipy.optimize import minimize
|
|
3
|
+
|
|
4
|
+
from iwopy.core import Optimizer
|
|
5
|
+
from iwopy.core import SingleObjOptResults
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Optimizer_scipy(Optimizer):
|
|
9
|
+
"""
|
|
10
|
+
Interface to the scipy optimizers.
|
|
11
|
+
|
|
12
|
+
Note that these solvers do not support
|
|
13
|
+
vectorized evaluation.
|
|
14
|
+
|
|
15
|
+
Parameters
|
|
16
|
+
----------
|
|
17
|
+
problem : iwopy.Problem
|
|
18
|
+
The problem to optimize
|
|
19
|
+
scipy_pars : dict
|
|
20
|
+
Additional parameters for
|
|
21
|
+
scipy.optimze.minimize()
|
|
22
|
+
mem_size : int
|
|
23
|
+
The memory size, number of
|
|
24
|
+
stored obj, cons evaluations
|
|
25
|
+
kwargs : dict, optional
|
|
26
|
+
Additional parameters for base class
|
|
27
|
+
|
|
28
|
+
Attributes
|
|
29
|
+
----------
|
|
30
|
+
scipy_pars : dict
|
|
31
|
+
Additional parameters for
|
|
32
|
+
scipy.optimze.minimize()
|
|
33
|
+
mem_size : int
|
|
34
|
+
The memory size, number of
|
|
35
|
+
stored obj, cons evaluations
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self, problem, scipy_pars={}, mem_size=100, **kwargs):
|
|
40
|
+
super().__init__(problem, **kwargs)
|
|
41
|
+
self.scipy_pars = scipy_pars
|
|
42
|
+
self.mem_size = mem_size
|
|
43
|
+
self._mem = None
|
|
44
|
+
|
|
45
|
+
def print_info(self):
|
|
46
|
+
"""
|
|
47
|
+
Print solver info, called before solving
|
|
48
|
+
"""
|
|
49
|
+
super().print_info()
|
|
50
|
+
|
|
51
|
+
if len(self.scipy_pars):
|
|
52
|
+
print("\nScipy parameters:")
|
|
53
|
+
print("-----------------")
|
|
54
|
+
for k, v in self.scipy_pars.items():
|
|
55
|
+
if isinstance(v, int) or isinstance(v, float) or isinstance(v, str):
|
|
56
|
+
print(f" {k}: {v}")
|
|
57
|
+
|
|
58
|
+
print()
|
|
59
|
+
|
|
60
|
+
def initialize(self, verbosity=1):
|
|
61
|
+
"""
|
|
62
|
+
Initialize the object.
|
|
63
|
+
|
|
64
|
+
Parameters
|
|
65
|
+
----------
|
|
66
|
+
verbosity : int
|
|
67
|
+
The verbosity level, 0 = silent
|
|
68
|
+
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
# Check objectives:
|
|
72
|
+
if self.problem.n_objectives > 1:
|
|
73
|
+
raise RuntimeError(
|
|
74
|
+
"Scipy minimize does not support multi-objective optimization."
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# Define constraints:
|
|
78
|
+
cons = list()
|
|
79
|
+
for i in range(self.problem.n_constraints):
|
|
80
|
+
cons.append({"type": "ineq", "fun": self._constraints, "args": (i,)})
|
|
81
|
+
self.scipy_pars["constraints"] = cons
|
|
82
|
+
|
|
83
|
+
if verbosity:
|
|
84
|
+
print(f"Using optimizer memory, size: {self.mem_size}")
|
|
85
|
+
self._mem = {}
|
|
86
|
+
|
|
87
|
+
super().initialize(verbosity)
|
|
88
|
+
|
|
89
|
+
def _get_results(self, x):
|
|
90
|
+
"""
|
|
91
|
+
Evaluate obj and cons
|
|
92
|
+
|
|
93
|
+
Parameters
|
|
94
|
+
----------
|
|
95
|
+
x: numpy array
|
|
96
|
+
Array containing design variables
|
|
97
|
+
|
|
98
|
+
Returns
|
|
99
|
+
-------
|
|
100
|
+
objs : np.array
|
|
101
|
+
The objective function values, shape: (n_objectives,)
|
|
102
|
+
cons : np.array
|
|
103
|
+
The constraints values, shape: (n_constraints,)
|
|
104
|
+
prob_results : object
|
|
105
|
+
The problem results
|
|
106
|
+
|
|
107
|
+
"""
|
|
108
|
+
key = tuple(x)
|
|
109
|
+
if key not in self._mem:
|
|
110
|
+
|
|
111
|
+
i0 = self.problem.n_vars_int
|
|
112
|
+
vars_int = x[:i0].astype(np.int32)
|
|
113
|
+
vars_float = x[i0:]
|
|
114
|
+
|
|
115
|
+
data = self.problem.evaluate_individual(
|
|
116
|
+
vars_int, vars_float, ret_prob_res=True
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
if len(self._mem) > self.mem_size:
|
|
120
|
+
key0 = next(iter(self._mem.keys()))
|
|
121
|
+
del self._mem[key0]
|
|
122
|
+
|
|
123
|
+
self._mem[key] = data
|
|
124
|
+
|
|
125
|
+
return self._mem[key]
|
|
126
|
+
|
|
127
|
+
def _objective(self, x):
|
|
128
|
+
"""
|
|
129
|
+
Function which converts array from scipy
|
|
130
|
+
to readable variables for the problem and
|
|
131
|
+
evaluates the objective function.
|
|
132
|
+
|
|
133
|
+
Parameters
|
|
134
|
+
----------
|
|
135
|
+
x: numpy array
|
|
136
|
+
Array containing design variables
|
|
137
|
+
|
|
138
|
+
Returns
|
|
139
|
+
-------
|
|
140
|
+
float:
|
|
141
|
+
Current objective function value
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
"""
|
|
145
|
+
objs, __, __ = self._get_results(x)
|
|
146
|
+
return objs[0]
|
|
147
|
+
|
|
148
|
+
def _constraints(self, x, ci):
|
|
149
|
+
"""
|
|
150
|
+
Function which converts array from scipy
|
|
151
|
+
to readable variables for the problem and
|
|
152
|
+
evaluates the constraints.
|
|
153
|
+
|
|
154
|
+
Parameters
|
|
155
|
+
----------
|
|
156
|
+
x: numpy array
|
|
157
|
+
Array containing design variables
|
|
158
|
+
ci: int
|
|
159
|
+
Index for constraint component
|
|
160
|
+
|
|
161
|
+
Returns
|
|
162
|
+
-------
|
|
163
|
+
float:
|
|
164
|
+
Value of constraint component
|
|
165
|
+
|
|
166
|
+
"""
|
|
167
|
+
__, cons, __ = self._get_results(x)
|
|
168
|
+
return cons[ci]
|
|
169
|
+
|
|
170
|
+
def solve(self, verbosity=1):
|
|
171
|
+
"""
|
|
172
|
+
Run the optimization solver.
|
|
173
|
+
|
|
174
|
+
Parameters
|
|
175
|
+
----------
|
|
176
|
+
verbosity : int
|
|
177
|
+
The verbosity level, 0 = silent
|
|
178
|
+
|
|
179
|
+
Returns
|
|
180
|
+
-------
|
|
181
|
+
results: iwopy.SingleObjOptResults
|
|
182
|
+
The optimization results object
|
|
183
|
+
|
|
184
|
+
"""
|
|
185
|
+
|
|
186
|
+
# check problem initialization:
|
|
187
|
+
super().solve()
|
|
188
|
+
|
|
189
|
+
# Initial values:
|
|
190
|
+
x0 = np.array(self.problem.initial_values_int(), dtype=np.float64)
|
|
191
|
+
x0 = np.append(
|
|
192
|
+
x0, np.array(self.problem.initial_values_float(), dtype=np.float64)
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
# Find bounds:
|
|
196
|
+
mini = [
|
|
197
|
+
x if x != -self.problem.INT_INF else None
|
|
198
|
+
for x in self.problem.min_values_int()
|
|
199
|
+
]
|
|
200
|
+
maxi = [
|
|
201
|
+
x if x != self.problem.INT_INF else None
|
|
202
|
+
for x in self.problem.max_values_int()
|
|
203
|
+
]
|
|
204
|
+
bounds = [(mini[i], maxi[i]) for i in range(len(mini))]
|
|
205
|
+
minf = [x if x != -np.inf else None for x in self.problem.min_values_float()]
|
|
206
|
+
maxf = [x if x != np.inf else None for x in self.problem.max_values_float()]
|
|
207
|
+
bounds = [(minf[i], maxf[i]) for i in range(len(minf))]
|
|
208
|
+
|
|
209
|
+
# Run minimization:
|
|
210
|
+
results = minimize(self._objective, x0, bounds=bounds, **self.scipy_pars)
|
|
211
|
+
|
|
212
|
+
# final evaluation:
|
|
213
|
+
if results.success:
|
|
214
|
+
|
|
215
|
+
x = results.x
|
|
216
|
+
i0 = self.problem.n_vars_int
|
|
217
|
+
vars_int = x[:i0].astype(np.int32)
|
|
218
|
+
vars_float = x[i0:]
|
|
219
|
+
prob_res, objs, cons = self.problem.finalize_individual(
|
|
220
|
+
vars_int, vars_float, verbosity=verbosity
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
else:
|
|
224
|
+
prob_res = None
|
|
225
|
+
vars_int = None
|
|
226
|
+
vars_float = None
|
|
227
|
+
objs = None
|
|
228
|
+
cons = None
|
|
229
|
+
|
|
230
|
+
return SingleObjOptResults(
|
|
231
|
+
self.problem, results.success, vars_int, vars_float, objs, cons, prob_res
|
|
232
|
+
)
|
iwopy/utils/__init__.py
CHANGED
iwopy/utils/load.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def import_module(name, package=None, hint=None):
|
|
5
|
+
"""
|
|
6
|
+
Imports a module dynamically.
|
|
7
|
+
|
|
8
|
+
Parameters
|
|
9
|
+
----------
|
|
10
|
+
name: str
|
|
11
|
+
The module name
|
|
12
|
+
package: str, optional
|
|
13
|
+
The explicit package name, deduced from name
|
|
14
|
+
if not given
|
|
15
|
+
hint: str, optional
|
|
16
|
+
Installation advice, in case the import fails
|
|
17
|
+
|
|
18
|
+
Returns
|
|
19
|
+
-------
|
|
20
|
+
mdl: module
|
|
21
|
+
The imnported package
|
|
22
|
+
|
|
23
|
+
:group: utils
|
|
24
|
+
|
|
25
|
+
"""
|
|
26
|
+
try:
|
|
27
|
+
return importlib.import_module(name, package)
|
|
28
|
+
except ModuleNotFoundError:
|
|
29
|
+
mdl = name if package is None else f"{package}.{name}"
|
|
30
|
+
hint = hint if hint is not None else f"pip install {name}"
|
|
31
|
+
raise ModuleNotFoundError(f"Module '{mdl}' not found, maybe try '{hint}'")
|
|
@@ -186,7 +186,7 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
186
186
|
f"Problem '{self.name}' cannot apply non-grid points to problem"
|
|
187
187
|
)
|
|
188
188
|
|
|
189
|
-
def evaluate_individual(self, vars_int, vars_float):
|
|
189
|
+
def evaluate_individual(self, vars_int, vars_float, ret_prob_res=False):
|
|
190
190
|
"""
|
|
191
191
|
Evaluate a single individual of the problem.
|
|
192
192
|
|
|
@@ -196,6 +196,8 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
196
196
|
The integer variable values, shape: (n_vars_int,)
|
|
197
197
|
vars_float : np.array
|
|
198
198
|
The float variable values, shape: (n_vars_float,)
|
|
199
|
+
ret_prob_res : bool
|
|
200
|
+
Flag for additionally returning of problem results
|
|
199
201
|
|
|
200
202
|
Returns
|
|
201
203
|
-------
|
|
@@ -203,11 +205,13 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
203
205
|
The objective function values, shape: (n_objectives,)
|
|
204
206
|
con : np.array
|
|
205
207
|
The constraints values, shape: (n_constraints,)
|
|
208
|
+
prob_res : object, optional
|
|
209
|
+
The problem results
|
|
206
210
|
|
|
207
211
|
"""
|
|
208
212
|
varsf = vars_float[self._vinds]
|
|
209
213
|
if self.grid.is_gridpoint(varsf):
|
|
210
|
-
return super().evaluate_individual(vars_int, vars_float)
|
|
214
|
+
return super().evaluate_individual(vars_int, vars_float, ret_prob_res)
|
|
211
215
|
|
|
212
216
|
else:
|
|
213
217
|
gpts, coeffs = self.grid.interpolation_coeffs_point(varsf)
|
|
@@ -216,16 +220,32 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
216
220
|
objs = np.zeros((n_gpts, self.n_objectives), dtype=np.float64)
|
|
217
221
|
cons = np.zeros((n_gpts, self.n_constraints), dtype=np.float64)
|
|
218
222
|
|
|
223
|
+
res = [None for __ in range(n_gpts)]
|
|
219
224
|
for gi, gp in enumerate(gpts):
|
|
220
225
|
varsf = vars_float.copy()
|
|
221
226
|
varsf[self._vinds] = gp
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
+
if ret_prob_res:
|
|
228
|
+
objs[gi], cons[gi], res[gi] = super().evaluate_individual(
|
|
229
|
+
vars_int, varsf, ret_prob_res
|
|
230
|
+
)
|
|
231
|
+
else:
|
|
232
|
+
objs[gi], cons[gi] = super().evaluate_individual(
|
|
233
|
+
vars_int, varsf, ret_prob_res
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
if ret_prob_res:
|
|
237
|
+
return (
|
|
238
|
+
np.einsum("go,g->o", objs, coeffs),
|
|
239
|
+
np.einsum("gc,g->c", cons, coeffs),
|
|
240
|
+
self.prob_res_einsum_individual(res, coeffs),
|
|
241
|
+
)
|
|
242
|
+
else:
|
|
243
|
+
return (
|
|
244
|
+
np.einsum("go,g->o", objs, coeffs),
|
|
245
|
+
np.einsum("gc,g->c", cons, coeffs),
|
|
246
|
+
)
|
|
227
247
|
|
|
228
|
-
def evaluate_population(self, vars_int, vars_float):
|
|
248
|
+
def evaluate_population(self, vars_int, vars_float, ret_prob_res=False):
|
|
229
249
|
"""
|
|
230
250
|
Evaluate all individuals of a population.
|
|
231
251
|
|
|
@@ -235,6 +255,8 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
235
255
|
The integer variable values, shape: (n_pop, n_vars_int)
|
|
236
256
|
vars_float : np.array
|
|
237
257
|
The float variable values, shape: (n_pop, n_vars_float)
|
|
258
|
+
ret_prob_res : bool
|
|
259
|
+
Flag for additionally returning of problem results
|
|
238
260
|
|
|
239
261
|
Returns
|
|
240
262
|
-------
|
|
@@ -242,13 +264,15 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
242
264
|
The objective function values, shape: (n_pop, n_objectives)
|
|
243
265
|
cons : np.array
|
|
244
266
|
The constraints values, shape: (n_pop, n_constraints)
|
|
267
|
+
prob_res : object, optional
|
|
268
|
+
The problem results
|
|
245
269
|
|
|
246
270
|
"""
|
|
247
271
|
varsf = vars_float[:, self._vinds]
|
|
248
272
|
|
|
249
273
|
# case all points on grid:
|
|
250
274
|
if self.grid.all_gridpoints(varsf):
|
|
251
|
-
return super().evaluate_population(vars_int, vars_float)
|
|
275
|
+
return super().evaluate_population(vars_int, vars_float, ret_prob_res)
|
|
252
276
|
|
|
253
277
|
# case all vars are grid vars:
|
|
254
278
|
elif self.n_vars_int == 0 and len(self._vinds) == self.n_vars_float:
|
|
@@ -262,11 +286,24 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
262
286
|
varsf[:] = vars_float[0, None, :]
|
|
263
287
|
varsf[:, self._vinds] = gpts
|
|
264
288
|
|
|
265
|
-
|
|
289
|
+
if ret_prob_res:
|
|
266
290
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
291
|
+
objs, cons, res = self.evaluate_population(varsi, varsf, ret_prob_res)
|
|
292
|
+
|
|
293
|
+
return (
|
|
294
|
+
np.einsum("go,pg->po", objs, coeffs),
|
|
295
|
+
np.einsum("gc,pg->pc", cons, coeffs),
|
|
296
|
+
self.prob_res_einsum_population(res, coeffs),
|
|
297
|
+
)
|
|
298
|
+
|
|
299
|
+
else:
|
|
300
|
+
|
|
301
|
+
objs, cons = self.evaluate_population(varsi, varsf, ret_prob_res)
|
|
302
|
+
|
|
303
|
+
return (
|
|
304
|
+
np.einsum("go,pg->po", objs, coeffs),
|
|
305
|
+
np.einsum("gc,pg->pc", cons, coeffs),
|
|
306
|
+
)
|
|
270
307
|
|
|
271
308
|
# mixed case:
|
|
272
309
|
else:
|
|
@@ -297,7 +334,10 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
297
334
|
del apts, upts
|
|
298
335
|
|
|
299
336
|
# calculate results for pop3:
|
|
300
|
-
|
|
337
|
+
if ret_prob_res:
|
|
338
|
+
objs, cons, res = self.evaluate_population(varsi, varsf, ret_prob_res)
|
|
339
|
+
else:
|
|
340
|
+
objs, cons = self.evaluate_population(varsi, varsf, ret_prob_res)
|
|
301
341
|
del varsi, varsf
|
|
302
342
|
|
|
303
343
|
# reconstruct results for pop2:
|
|
@@ -308,10 +348,18 @@ class DiscretizeRegGrid(LocalFD):
|
|
|
308
348
|
objs = objs.reshape(n_pop, n_gp, self.n_objectives)
|
|
309
349
|
cons = cons.reshape(n_pop, n_gp, self.n_objectives)
|
|
310
350
|
coeffs = np.take_along_axis(coeffs, gmap, axis=1)
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
351
|
+
|
|
352
|
+
if ret_prob_res:
|
|
353
|
+
return (
|
|
354
|
+
np.einsum("pgo,pg->po", objs, coeffs),
|
|
355
|
+
np.einsum("pgc,pg->pc", cons, coeffs),
|
|
356
|
+
self.prob_res_einsum_population(res, coeffs),
|
|
357
|
+
)
|
|
358
|
+
else:
|
|
359
|
+
return (
|
|
360
|
+
np.einsum("pgo,pg->po", objs, coeffs),
|
|
361
|
+
np.einsum("pgc,pg->pc", cons, coeffs),
|
|
362
|
+
)
|
|
315
363
|
|
|
316
364
|
def finalize_individual(self, vars_int, vars_float, verbosity=1):
|
|
317
365
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: iwopy
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.8
|
|
4
4
|
Summary: Fraunhofer IWES optimization tools in Python
|
|
5
5
|
Home-page: https://github.com/FraunhoferIWES/iwopy
|
|
6
6
|
Author: Fraunhofer IWES
|
|
@@ -13,7 +13,7 @@ Keywords: Optimization,Interface
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
14
|
Classifier: License :: OSI Approved :: MIT License
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
16
|
-
Classifier: Development Status ::
|
|
16
|
+
Classifier: Development Status :: 4 - Beta
|
|
17
17
|
Requires-Python: >=3.7
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
License-File: LICENSE
|
|
@@ -22,7 +22,7 @@ Requires-Dist: scipy
|
|
|
22
22
|
Requires-Dist: matplotlib
|
|
23
23
|
Provides-Extra: all
|
|
24
24
|
Requires-Dist: pygmo ; extra == 'all'
|
|
25
|
-
Requires-Dist: pymoo ; extra == 'all'
|
|
25
|
+
Requires-Dist: pymoo >=0.6 ; extra == 'all'
|
|
26
26
|
Provides-Extra: doc
|
|
27
27
|
Requires-Dist: sphinx ; extra == 'doc'
|
|
28
28
|
Requires-Dist: sphinx-rtd-theme ; extra == 'doc'
|
|
@@ -34,6 +34,8 @@ Provides-Extra: scripts
|
|
|
34
34
|
Provides-Extra: test
|
|
35
35
|
Requires-Dist: flake8 ; extra == 'test'
|
|
36
36
|
Requires-Dist: pytest ; extra == 'test'
|
|
37
|
+
Requires-Dist: pymoo >=0.6 ; extra == 'test'
|
|
38
|
+
Requires-Dist: pygmo ; extra == 'test'
|
|
37
39
|
|
|
38
40
|
# iwopy
|
|
39
41
|
|
|
@@ -75,6 +77,7 @@ The supported Python versions are:
|
|
|
75
77
|
- `Python 3.8`
|
|
76
78
|
- `Python 3.9`
|
|
77
79
|
- `Python 3.10`
|
|
80
|
+
- `Python 3.11`
|
|
78
81
|
|
|
79
82
|
## Installation via conda
|
|
80
83
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
iwopy/VERSION,sha256=
|
|
1
|
+
iwopy/VERSION,sha256=dvgfZOzijQvP453TX20U88h_4AC3eu4RVh4Y0ZGfYH4,6
|
|
2
2
|
iwopy/__init__.py,sha256=6bQcJJYYOA_DMXkGw3spJnQVutirE13L_HM5Q1RMrYY,389
|
|
3
3
|
iwopy/benchmarks/__init__.py,sha256=WQii3TCGi4Q30p_X86mCOQ3RsYpPFegsMHedbQX4QC4,46
|
|
4
|
-
iwopy/benchmarks/branin.py,sha256=
|
|
4
|
+
iwopy/benchmarks/branin.py,sha256=5cDSbKf8zW-6zYtHz73JuGfeqiQ56CeI7jprcsvIyRg,2608
|
|
5
5
|
iwopy/benchmarks/rosenbrock.py,sha256=CYuiYKN1XcolHDW012Pa2-A8wgSX3Qy6H7GXsFH35Qw,2469
|
|
6
6
|
iwopy/core/__init__.py,sha256=IxD4Rzv_JukRMd8fo5e1SZ-QPHZNScOskzdLJCliMNA,389
|
|
7
7
|
iwopy/core/base.py,sha256=aeXjHWSTe84MDnCMdBewFYVQ8tZgw8C-gKot4VWcc-o,1337
|
|
@@ -12,34 +12,37 @@ iwopy/core/function_subset.py,sha256=aJNUZnC4QJE3B7RWtwoO2WKTPc_WNW6Vc367hh4CzSI
|
|
|
12
12
|
iwopy/core/memory.py,sha256=YqY64a-y1wcwXJfD3NGcqH6cWUgH_MFKZMWYQInlbmo,6451
|
|
13
13
|
iwopy/core/objective.py,sha256=knqy7AVaaa7yso1qAL5tKzQh6NOw8lQRKWq-4kn0urM,447
|
|
14
14
|
iwopy/core/opt_results.py,sha256=2MYmtPRdbA4bsvS0ccX92NezHmdSpxpYL6Tn8AZ7vD0,9883
|
|
15
|
-
iwopy/core/optimizer.py,sha256=
|
|
16
|
-
iwopy/core/problem.py,sha256=
|
|
17
|
-
iwopy/interfaces/__init__.py,sha256=
|
|
15
|
+
iwopy/core/optimizer.py,sha256=bpNVryWLG_Wp88orSEbj84UPXvz5mFQxqNPFhRh_abg,4069
|
|
16
|
+
iwopy/core/problem.py,sha256=ThYFshzwU6Ta3Pp4iBraGzBpw0eZ-Us74oDA9mZJuZA,30591
|
|
17
|
+
iwopy/interfaces/__init__.py,sha256=HdZPhQxuaPEpTSEwP4tFOxw55Km0NqqCvl8t1Otzu88,60
|
|
18
18
|
iwopy/interfaces/pygmo/__init__.py,sha256=qDtUhcYG6OVggiuk88uAEFtO5M0RFoMwwxoe1o3Sx9Q,39
|
|
19
|
-
iwopy/interfaces/pygmo/algos.py,sha256=
|
|
20
|
-
iwopy/interfaces/pygmo/imports.py,sha256=
|
|
21
|
-
iwopy/interfaces/pygmo/optimizer.py,sha256=
|
|
19
|
+
iwopy/interfaces/pygmo/algos.py,sha256=BALObK2-88v4tXkxZoILwDoGbynKvL0pvuWsv6pucik,10717
|
|
20
|
+
iwopy/interfaces/pygmo/imports.py,sha256=iBjISncQckQSFyHak5iEdk_E5bNAfXzOH0d4_QfF2lQ,355
|
|
21
|
+
iwopy/interfaces/pygmo/optimizer.py,sha256=iEb65tBu_s7iBhtkwBGE-HktItuw0mPg5VcsZzDO4iU,3615
|
|
22
22
|
iwopy/interfaces/pygmo/problem.py,sha256=aWaarJhBoHSTsN8uIVrjoB48l_e1vUDoGROV5rBvaB0,6807
|
|
23
|
-
iwopy/interfaces/pymoo/__init__.py,sha256=
|
|
24
|
-
iwopy/interfaces/pymoo/factory.py,sha256=
|
|
25
|
-
iwopy/interfaces/pymoo/imports.py,sha256=
|
|
26
|
-
iwopy/interfaces/pymoo/optimizer.py,sha256=
|
|
27
|
-
iwopy/interfaces/pymoo/problem.py,sha256=
|
|
23
|
+
iwopy/interfaces/pymoo/__init__.py,sha256=6U0FRJ1Lgtfu3nf-iXMLeiShoLhLAa_bkS9cebOUmqQ,39
|
|
24
|
+
iwopy/interfaces/pymoo/factory.py,sha256=EtlwxZfYOscidqlJUF_UwfB_qw3bQVwAPhQSj7ImirA,7120
|
|
25
|
+
iwopy/interfaces/pymoo/imports.py,sha256=9-FyOaziO-O9gFKdHZvgCiAM43wPkvx1wC2nYkUzVNw,2806
|
|
26
|
+
iwopy/interfaces/pymoo/optimizer.py,sha256=mxqD0b_ZPEoBfocolT5vCrLUCuiw4eJXz52Bq-PzkAM,7437
|
|
27
|
+
iwopy/interfaces/pymoo/problem.py,sha256=Isi-PDhT3zHKPVllO92-R8WLnzqqVeJjXa4HFO24Ukk,13530
|
|
28
|
+
iwopy/interfaces/scipy/__init__.py,sha256=3xnztLlcSgsjT4wwYAZsNGLyoc-T5sN5mlVjtuw7dQY,39
|
|
29
|
+
iwopy/interfaces/scipy/optimizer.py,sha256=OHLTUwEhU5MqHADJBaSgLs4EsNun0mpy-raYUJH-7UI,6164
|
|
28
30
|
iwopy/optimizers/__init__.py,sha256=qfKVpw4PtH61umx3GulWSN21jjiJuUf5oUTfUGxU1pk,19
|
|
29
31
|
iwopy/optimizers/gg.py,sha256=hg-cUHP6oasvbnLJ4AJ5a3M-ugJdmNUz5JPJbeVQrGU,14479
|
|
30
|
-
iwopy/utils/__init__.py,sha256=
|
|
32
|
+
iwopy/utils/__init__.py,sha256=qPtdU7hcWPuwEeqd9G-SXqGrakvM9_zfwOiDJdPc8pk,122
|
|
31
33
|
iwopy/utils/discretization.py,sha256=XBUm2zbIUAo7v8HFoeM0DaKiNJDVDbkdvpOPLO4Ffq8,36635
|
|
34
|
+
iwopy/utils/load.py,sha256=HBX55VV4H2azK1m3sGrD-led31KErBOS8EI0VGYuBG0,766
|
|
32
35
|
iwopy/utils/stdout.py,sha256=ZVyt8rT8GxQE6mpbFh8V5kf5i_UnP3AP8r9gCGhd1hg,689
|
|
33
36
|
iwopy/wrappers/__init__.py,sha256=dBQebvXOf0g-67Lof3rmscDzF20EO688Lm2ywIT_uEE,261
|
|
34
|
-
iwopy/wrappers/discretize_reg_grid.py,sha256=
|
|
37
|
+
iwopy/wrappers/discretize_reg_grid.py,sha256=xVcDONdkmBlywNtxqiTATiTCQ0eFU5eMFUmUwaxl81k,14169
|
|
35
38
|
iwopy/wrappers/local_fd.py,sha256=hYbcbpnrCu5CajF9jcL-UDgYQLVZJsy5EJNQRyFByXA,11795
|
|
36
39
|
iwopy/wrappers/problem_wrapper.py,sha256=txebURNkFXpoAmxu14GZt5chmQTsrHNRCxOPp-3NPfc,6656
|
|
37
40
|
iwopy/wrappers/simple_constraint.py,sha256=Fq16EhV8Dr8zDEyHUvznIWsci-0DVEX4lNJYn2GeHt4,6632
|
|
38
41
|
iwopy/wrappers/simple_objective.py,sha256=M0QgPNy1aXeFZDXZpJ3FdJt4ifDSP3bCGaU9lbLsSew,6520
|
|
39
42
|
iwopy/wrappers/simple_problem.py,sha256=jlFikZw_wIcWezJoIeC0lYLRRh4WcTVDXUMEEqRyWmE,7365
|
|
40
|
-
iwopy-0.1.
|
|
41
|
-
iwopy-0.1.
|
|
42
|
-
iwopy-0.1.
|
|
43
|
-
iwopy-0.1.
|
|
44
|
-
iwopy-0.1.
|
|
45
|
-
iwopy-0.1.
|
|
43
|
+
iwopy-0.1.8.dist-info/LICENSE,sha256=bBCH6mYTPzSepk2s2UUZ3II_ZYXrn1bnSqB85-aZHxU,1071
|
|
44
|
+
iwopy-0.1.8.dist-info/METADATA,sha256=ePvr5iU2q1gF3Dk_VfNjgXlW8SfvMFBtKtuYQPK1tgw,5461
|
|
45
|
+
iwopy-0.1.8.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
46
|
+
iwopy-0.1.8.dist-info/top_level.txt,sha256=51KNQr27ur_u9xKpuDl7GQiBINPKGOqMaMM63kFNzQE,6
|
|
47
|
+
iwopy-0.1.8.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
48
|
+
iwopy-0.1.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|