Hi there,
I have done some simple optimizations using the U_NSGA3()
optimizer, where the default number of ncores = 1
was sufficient computational power.
Now, I’d like to estimate multiple variables with the U_NSGA3(
) optimizer (adsorption_rate, desorption_rate, and characteristic_charge
of the Steric Mass Action binding model).
Since this particular optimization did not yield to results after a couple of hours, I tried to increase the n_cores
, to have more computational power.
Unfortunately, I ran into an error message:
---------------------------------------------------------------------------
RemoteTraceback Traceback (most recent call last)
RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\multiprocess\pool.py", line 125, in worker
result = (True, func(*args, **kwds))
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\multiprocess\pool.py", line 48, in mapstar
return list(map(*args))
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\pathos\helpers\mp_helper.py", line 15, in <lambda>
func = lambda args: f(*args)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 645, in eval_fun_wrapper
results = eval_fun(ind, force=force)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 131, in wrapper
return func(self, x, *args, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 975, in evaluate_objectives
f = self._evaluate_individual(self.objectives, x, force=force)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 601, in _evaluate_individual
value = self._evaluate(x, eval_fun, force)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 131, in wrapper
return func(self, x, *args, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 737, in _evaluate
result = step.evaluate(current_request)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py", line 2868, in __call__
results = self.evaluator(request, *args, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\simulator\simulator.py", line 199, in simulate
results = self.simulate_n_cycles(
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\log.py", line 150, in wrapper
result = function(*args, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\log.py", line 201, in wrapper
results = function(*args, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\log.py", line 180, in wrapper
raise e
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\log.py", line 172, in wrapper
return function(*args, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\simulator\simulator.py", line 253, in simulate_n_cycles
return self.run(process, **kwargs)
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\CADETProcess\simulator\cadetAdapter.py", line 261, in run
if cadet.is_file:
File "C:\Users\samue\anaconda3\envs\cadet\lib\site-packages\cadet\cadet.py", line 169, in is_file
if self._is_file_class is not None:
AttributeError: 'Cadet' object has no attribute '_is_file_class'
"""
The above exception was the direct cause of the following exception:
AttributeError Traceback (most recent call last)
C:/Users/samue/kcadet/00_Lonza/SystemChara/03_GradientElutions/48CV/pymoo_U_NSGA3_SSE/tmp\ipykernel_8272\3904066991.py in <module>
6 print('Starting Optimization')
7
----> 8 optimization_results = optimizer.optimize(optimization_problem, x0=None, save_results=True,
9 results_directory=None, use_checkpoint=False,
10 overwrite_results_directory=True, exist_ok=True,
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizer.py in optimize(self, optimization_problem, x0, save_results, results_directory, use_checkpoint, overwrite_results_directory, exist_ok, log_level, reinit_cache, delete_cache, *args, **kwargs)
208 start = time.time()
209
--> 210 self.run(self.optimization_problem, x0, *args, **kwargs)
211
212 self.results.time_elapsed = time.time() - start
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\pymooAdapter.py in run(self, optimization_problem, x0)
157
158 # Evaluate objectives and report results
--> 159 algorithm.evaluator.eval(problem, pop)
160
161 F = pop.get("F").tolist()
~\anaconda3\envs\cadet\lib\site-packages\pymoo\core\evaluator.py in eval(self, problem, pop, skip_already_evaluated, evaluate_values_of, count_evals, **kwargs)
67
68 # do the actual evaluation - call the sub-function to set the corresponding values to the population
---> 69 self._eval(problem, pop[I], evaluate_values_of, **kwargs)
70
71 # update the function evaluation counter
~\anaconda3\envs\cadet\lib\site-packages\pymoo\core\evaluator.py in _eval(self, problem, pop, evaluate_values_of, **kwargs)
88
89 # call the problem to evaluate the solutions
---> 90 out = problem.evaluate(X, return_values_of=evaluate_values_of, return_as_dictionary=True, **kwargs)
91
92 # for each of the attributes set it to the problem
~\anaconda3\envs\cadet\lib\site-packages\pymoo\core\problem.py in evaluate(self, X, return_values_of, return_as_dictionary, *args, **kwargs)
185
186 # this is where the actual evaluation takes place
--> 187 _out = self.do(X, return_values_of, *args, **kwargs)
188
189 out = {}
~\anaconda3\envs\cadet\lib\site-packages\pymoo\core\problem.py in do(self, X, return_values_of, *args, **kwargs)
227 self._evaluate_elementwise(X, out, *args, **kwargs)
228 else:
--> 229 self._evaluate_vectorized(X, out, *args, **kwargs)
230
231 # finally format the output dictionary
~\anaconda3\envs\cadet\lib\site-packages\pymoo\core\problem.py in _evaluate_vectorized(self, X, out, *args, **kwargs)
235
236 def _evaluate_vectorized(self, X, out, *args, **kwargs):
--> 237 self._evaluate(X, out, *args, **kwargs)
238
239 def _evaluate_elementwise(self, X, out, *args, **kwargs):
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\pymooAdapter.py in _evaluate(self, x, out, *args, **kwargs)
238 opt = self.optimization_problem
239 if opt.n_objectives > 0:
--> 240 F = opt.evaluate_objectives_population(
241 x,
242 untransform=True,
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py in wrapper(self, x, untransform, *args, **kwargs)
129 x = self.untransform(x)
130
--> 131 return func(self, x, *args, **kwargs)
132
133 return wrapper
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py in wrapper(self, population, *args, **kwargs)
150 population = np.array(population, ndmin=2)
151
--> 152 return func(self, population, *args, **kwargs)
153
154 return wrapper
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py in evaluate_objectives_population(self, population, force, n_cores)
1005 _evaluate
1006 """
-> 1007 results = self._evaluate_population(
1008 self.evaluate_objectives, population, force, n_cores
1009 )
~\anaconda3\envs\cadet\lib\site-packages\CADETProcess\optimization\optimizationProblem.py in _evaluate_population(self, eval_fun, population, force, n_cores)
660
661 with pathos.pools.ProcessPool(ncpus=n_cores) as pool:
--> 662 results = pool.map(eval_fun_wrapper, population)
663
664 return np.array(results, ndmin=2)
~\anaconda3\envs\cadet\lib\site-packages\pathos\multiprocessing.py in map(self, f, *args, **kwds)
133 AbstractWorkerPool._AbstractWorkerPool__map(self, f, *args, **kwds)
134 _pool = self._serve()
--> 135 return _pool.map(star(f), zip(*args)) # chunksize
136 map.__doc__ = AbstractWorkerPool.map.__doc__
137 def imap(self, f, *args, **kwds):
~\anaconda3\envs\cadet\lib\site-packages\multiprocess\pool.py in map(self, func, iterable, chunksize)
362 in a list that is returned.
363 '''
--> 364 return self._map_async(func, iterable, mapstar, chunksize).get()
365
366 def starmap(self, func, iterable, chunksize=None):
~\anaconda3\envs\cadet\lib\site-packages\multiprocess\pool.py in get(self, timeout)
769 return self._value
770 else:
--> 771 raise self._value
772
773 def _set(self, i, obj):
AttributeError: 'Cadet' object has no attribute '_is_file_class'
This error only occurs after increasing n_cores
. When n_cores
is left equal to 1, no error occurs.
How can I increase the n_cores
, in order to have more computational power, and to yield a result more quickly in the optimization?
Thank you!
Samuel