Hello,
As in this old post, I would like to optimise the value for film diffusion.
I am also following this case study.
I have changed the code as follows:
from CADETProcess.optimization import OptimizationProblem
optimization_problem = OptimizationProblem('AxialDispersion_filmDiffusion')
optimization_problem.add_evaluation_object(process)
optimization_problem.add_variable(
    name='axial_dispersion', parameter_path='flow_sheet.column.axial_dispersion',
    lb=1e-10, ub=0.1,
    transform='auto'
)
optimization_problem.add_variable(
    name='film_diffusion', parameter_path='flow_sheet.column.film_diffusion',
    lb=1e-10, ub=0.1,
    transform='auto'
)
optimization_problem.add_evaluator(simulator)
optimization_problem.add_objective(
    comparator,
    n_objectives=comparator.n_metrics,
    requires=[simulator]
)
def callback(simulation_results, individual, evaluation_object, callbacks_dir='./'):
    comparator.plot_comparison(
        simulation_results,
        file_name=f'{callbacks_dir}/{individual.id}_{evaluation_object}_comparison.png',
        show=False
    )
optimization_problem.add_callback(callback, requires=[simulator])
Here is the error:
Cell In[13], line 14
      4 optimization_problem.add_evaluation_object(process)
      8 optimization_problem.add_variable(
      9     name='axial_dispersion', parameter_path='flow_sheet.column.axial_dispersion',
     10     lb=1e-10, ub=0.1,
     11     transform='auto'
     12 )
---> 14 optimization_problem.add_variable(
     15     name='film_diffusion', parameter_path='flow_sheet.column.film_diffusion', indices=0,
     16     lb=1e-10, ub=0.1,
     17     transform='auto'
     18 )
     21 optimization_problem.add_evaluator(simulator)
     23 optimization_problem.add_objective(
     24     comparator,
     25     n_objectives=comparator.n_metrics,
     26     requires=[simulator]
     27 )
File ~\anaconda3\Lib\site-packages\CADETProcess\optimization\optimizationProblem.py:347, in OptimizationProblem.add_variable(self, name, evaluation_objects, parameter_path, lb, ub, transform, indices)
    342 if parameter_path is not None and len(evaluation_objects) == 0:
    343     raise ValueError(
    344         "Cannot set parameter_path for variable without evaluation object "
    345     )
--> 347 var = OptimizationVariable(
    348     name, evaluation_objects, parameter_path,
    349     lb=lb, ub=ub, transform=transform,
    350     indices=indices,
    351 )
    353 self._variables.append(var)
    355 with warnings.catch_warnings():
File ~\anaconda3\Lib\site-packages\CADETProcess\optimization\optimizationProblem.py:2962, in OptimizationVariable.__init__(self, name, evaluation_objects, parameter_path, lb, ub, transform, indices, precision)
   2960     self.evaluation_objects = evaluation_objects
   2961     self.parameter_path = parameter_path
-> 2962     self.indices = indices
   2963 else:
   2964     self.evaluation_objects = None
File ~\anaconda3\Lib\site-packages\CADETProcess\optimization\optimizationProblem.py:3169, in OptimizationVariable.indices(self, indices)
   3167     _ = self.indices
   3168 except (ValueError, TypeError) as e:
-> 3169     raise e
File ~\anaconda3\Lib\site-packages\CADETProcess\optimization\optimizationProblem.py:3167, in OptimizationVariable.indices(self, indices)
   3165 # Since indices are constructed on `get`, call the property here:
   3166 try:
-> 3167     _ = self.indices
   3168 except (ValueError, TypeError) as e:
   3169     raise e
File ~\anaconda3\Lib\site-packages\CADETProcess\optimization\optimizationProblem.py:3126, in OptimizationVariable.indices(self)
   3124 parameter_shape = self._get_parameter_shape(eval_obj)
   3125 if isinstance(parameter_shape, tuple):
-> 3126     eval_ind = generate_indices(parameter_shape, eval_ind)
   3127 else:
   3128     if not isinstance(eval_ind, list):
File ~\anaconda3\Lib\site-packages\CADETProcess\dynamicEvents\section.py:663, in generate_indices(shape, indices)
    661 size = np.prod(shape)
    662 if size == 1:
--> 663     raise ValueError("Scalar parameters cannot have index slices.")
    665 if indices is None:
    666     indices = np.s_[:]
ValueError: Scalar parameters cannot have index slices.
I have already reinstalled Cadet Process. However, this did not help.
Could you please explain again what I need to do to solve it? The previous answer is unfortunately unclear to me.
Thanks
Stefanos