File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\direct_collocation.py:1470, in ConstraintCollocator.generate_jacobian_function(self)
1467 """Returns a function which evaluates the Jacobian of the
1468 constraints given the array of free optimization variables."""
1469 logging.info('Generating jacobian function.')
-> 1470 self._gen_multi_arg_con_jac_func()
1471 return self._wrap_constraint_funcs(self._multi_arg_con_jac_func, 'jac')
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\direct_collocation.py:1273, in ConstraintCollocator._gen_multi_arg_con_jac_func(self)
1271 discrete_eom_matrix = sm.ImmutableDenseMatrix(self.discrete_eom)
1272 wrt_matrix = sm.ImmutableDenseMatrix([list(wrt)])
-> 1273 symbolic_partials = _forward_jacobian(discrete_eom_matrix,
1274 wrt_matrix.T)
1276 # This generates a numerical function that evaluates the matrix of
1277 # partial derivatives. This function returns the non-zero elements
1278 # needed to build the sparse constraint Jacobian.
1279 logging.info('Compiling the Jacobian function.')
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\utils.py:111, in _forward_jacobian(expr, wrt)
108 absolute_derivative += partial_derivative absolute_derivative_mapping.get(free_symbol, zeros)
109 absolute_derivative_mapping[symbol] = sm.ImmutableDenseMatrix([[add_to_cache(a)[0] for a in absolute_derivative]])
--> 111 replaced_jacobian = sm.ImmutableDenseMatrix.vstack([absolute_derivative_mapping[e] for e in reduced_matrix])
112 finish = timer()
113 logging.info(f'Completed in {finish - start:.2f}s')
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\utils.py:111, in (.0)
108 absolute_derivative += partial_derivative absolute_derivative_mapping.get(free_symbol, zeros)
109 absolute_derivative_mapping[symbol] = sm.ImmutableDenseMatrix([[add_to_cache(a)[0] for a in absolute_derivative]])
--> 111 replaced_jacobian = sm.ImmutableDenseMatrix.vstack([absolute_derivative_mapping[e] for e in reduced_matrix])
112 finish = timer()
113 logging.info(f'Completed in {finish - start:.2f}s')
I am trying to simulate a 2D rocket. When I run it, I get this error below.
What could key error mean, so I can start looking for my mistake.
Thanks for any hints!
KeyError Traceback (most recent call last) Cell In[14], line 74 70 for i in range(2): 72 instance_constraints = tuple(xi.subs({t: t0}) - xi_val for xi, xi_val in initial_state_constraints.items()) + tuple(xi.subs({t: tf}) - xi_val for xi, xi_val in final_state_constraints.items()) ---> 74 prob = Problem(obj, obj_grad, EOM, state_symbols, num_nodes, interval_value, 75 known_parameter_map=par_map, 76 instance_constraints=instance_constraints, 77 bounds=bounds, 78 integration_method=methode) 80 prob.add_option('max_iter', 3000 ) # default is 3000 82 # Find the optimal solution.
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\direct_collocation.py:53, in _DocInherit.get_with_inst..f(*args, kwargs)
51 @wraps(self.mthd, assigned=('name', 'module'))
52 def f(*args, *kwargs):
---> 53 return self.mthd(obj, args, kwargs)
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\direct_collocation.py:121, in Problem.init(self, obj, obj_grad, *args, **kwargs) 119 self.con = self.collocator.generate_constraint_function() 120 logging.info('Constraint function generated.') --> 121 self.con_jac = self.collocator.generate_jacobian_function() 122 logging.info('Jacobian function generated.') 124 self.con_jac_rows, self.con_jac_cols = \ 125 self.collocator.jacobian_indices()
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\direct_collocation.py:1470, in ConstraintCollocator.generate_jacobian_function(self) 1467 """Returns a function which evaluates the Jacobian of the 1468 constraints given the array of free optimization variables.""" 1469 logging.info('Generating jacobian function.') -> 1470 self._gen_multi_arg_con_jac_func() 1471 return self._wrap_constraint_funcs(self._multi_arg_con_jac_func, 'jac')
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\direct_collocation.py:1273, in ConstraintCollocator._gen_multi_arg_con_jac_func(self) 1271 discrete_eom_matrix = sm.ImmutableDenseMatrix(self.discrete_eom) 1272 wrt_matrix = sm.ImmutableDenseMatrix([list(wrt)]) -> 1273 symbolic_partials = _forward_jacobian(discrete_eom_matrix, 1274 wrt_matrix.T) 1276 # This generates a numerical function that evaluates the matrix of 1277 # partial derivatives. This function returns the non-zero elements 1278 # needed to build the sparse constraint Jacobian. 1279 logging.info('Compiling the Jacobian function.')
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\utils.py:111, in _forward_jacobian(expr, wrt) 108 absolute_derivative += partial_derivative absolute_derivative_mapping.get(free_symbol, zeros) 109 absolute_derivative_mapping[symbol] = sm.ImmutableDenseMatrix([[add_to_cache(a)[0] for a in absolute_derivative]]) --> 111 replaced_jacobian = sm.ImmutableDenseMatrix.vstack([absolute_derivative_mapping[e] for e in reduced_matrix]) 112 finish = timer() 113 logging.info(f'Completed in {finish - start:.2f}s')
File c:\Users\Peter\anaconda3\envs\sympy-dev\Lib\site-packages\opty\utils.py:111, in(.0)
108 absolute_derivative += partial_derivative absolute_derivative_mapping.get(free_symbol, zeros)
109 absolute_derivative_mapping[symbol] = sm.ImmutableDenseMatrix([[add_to_cache(a)[0] for a in absolute_derivative]])
--> 111 replaced_jacobian = sm.ImmutableDenseMatrix.vstack([absolute_derivative_mapping[e] for e in reduced_matrix])
112 finish = timer()
113 logging.info(f'Completed in {finish - start:.2f}s')
KeyError: 0