Keeping the complicated details aside, what I want to do is this: I want to take a decision in Simulink (Choose between two controllers) based on what the next state will be using one of these controllers (the main one). If the next state meets a certain criteria then I will make a switch to the other controller. I've been trying to think of how this can be implemented but I just can't think of a way.
Yes, this is what would come to mind at first. But the problem is that the switch logic is dependent on what would happen should we choose controller #1. So the switch logic is actually dependent on the system and the system is dependent on the switch so it can't be directly solved that way.
After some time thinking and trying solutions I came up with one that works well enough for my application. What I did is that I created a similar system to the one I'm controlling. This new system gets updated with new initial values periodically (every 0.01s in my case) and is always controlled by the controller #1. Then the output of this system is calculated and based on this output we can do the necessary logic to choose the controller for the true system.