OIC propagates the evidence in two directions, forwards from the current state
and, additionally, the evidence backwards from the desired future. The
inference is conceptually simple, but algorithmically difficult. The
information from the future needs to flow through tens of nonlinear
mappings
before it affects
.
The OIC algorithm as presented in Raiko05IJCNN only propagates
information one step forward and backward in time for each iteration.
To speed up this process, total derivatives described in Raiko06ICA
are used to replace the partial derivatives, which leads to much faster
propagation of information.
Another alternative for fast inference is the Extended Kalman Smoother
Anderson79, which
unfortunately suffers from stability issues and it is therefore only used
to initialise the OIC algorithm.
OIC in a nutshell: |
Given observations
![]() |
control signals
![]() |
1: Fix future
![]() |
![]() |
2: Infer the distribution
![]() ![]() |
3: Select the mean of
![]() |
4: Observe
![]() ![]() |
5: Increase ![]() ![]() |
In case there are constraints for control signals or observations, they are forced after every inference iteration. If the horizon is set too short or the goal is otherwise overoptimistic, the method becomes unreliable. Even with a realistic goal, it is not in general guaranteed that the iteration will converge to the optimal control signal, as the iteration may get stuck in a local minimum. The inferred control signals can be validated by releasing the optimistic future and re-inferring. If the future changes a lot, the control is unreliable.