Using if/action blocks within an algebraic loop?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
In Simulink, I am trying to use an algebraic loop to solve for a parameter. However, calculating this parameter requires a if/action block. Original code uses a Newton Raphson method, so I wanted to use an algebraic loop in place. It seems like it is not "allowed". I have "Input data dependency violation due action subsystems" and I'm pretty sure it's the feedback loop to create the algebraic loop.
In short: Is it possible to use if/action blocks within an algebraic loop? If not, then what other methods can I use?
0 Commenti
Risposta accettata
Guy Rouleau
il 8 Mag 2012
As you figured out, the algebraic loop solver uses a gradient descent method to solve the loop. The If/Else construct causes a discontinuity in the loop which is problematic for a gradient descent method.
When you have an algebraic loop, the blocks in the loop should be continuous both in time and values.
I recommend looking at the demo "sl_subsys_semantics". This demo contains many small models illustrating good and bad practices in this area.
very likely, you will need to either introduce a delay in the loop or rearrange your equations to avoid algebraic loops.
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Model and Validate Requirements in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!