diff --git a/mpcpy/optimization.py b/mpcpy/optimization.py index 6115a6b..194047d 100755 --- a/mpcpy/optimization.py +++ b/mpcpy/optimization.py @@ -765,7 +765,7 @@ def _set_optimization_options(self, opt_options, init = False): if opt_options[key] != self.opt_options[key]: self._step_from_meas = False; # Set options - self.opt_options = opt_options; + self.opt_options = copy.deepcopy(opt_options); def _get_optimization_statistics(self): '''Get the JModelica optimization result statistics. diff --git a/unittests/test_optimization.py b/unittests/test_optimization.py index 4e8da3b..b5f2070 100755 --- a/unittests/test_optimization.py +++ b/unittests/test_optimization.py @@ -220,17 +220,13 @@ def test_set_options_error(self): optimization.JModelica, \ 'q_flow', \ constraint_data = self.constraints.data); - # Get initial options - opt_options = opt_problem.get_optimization_options(); - # Set new options - opt_options['n_e'] = 2; - self.assertRaises(KeyError, opt_problem.set_optimization_options(opt_options)); - opt_options['external_data'] = 2; - self.assertRaises(KeyError, opt_problem.set_optimization_options(opt_options)); - opt_options['init_traj'] = 2; - self.assertRaises(KeyError, opt_problem.set_optimization_options(opt_options)); - opt_options['nominal_traj'] = 2; - self.assertRaises(KeyError, opt_problem.set_optimization_options(opt_options)); + for key in ['external_data', 'init_traj', 'nominal_traj']: + # Get initial options + opt_options = opt_problem.get_optimization_options(); + # Set new options and check KeyError raised + with self.assertRaises(KeyError): + opt_options[key] = 2; + opt_problem.set_optimization_options(opt_options); def test_get_statistics(self): '''Test the getting of optimization result statistics.