Replies: 4 comments 2 replies
-
The method is a very crude one, as you have already discovered and as indicated in the comment above the line you referenced:
The basic intuition is that if there is an algebraic loop, then there is some cycle in the system graph where evaluating the output function along the cycle (without updating the states) will eventually cause the input to the block you started with to have a different value than it had initially. The longest possible cycle is if all of the subsystems were connected in a ring, so that is why the maximum number of evaluations (initial value of I'm sure there is a much better way to do this, but I was trying get something up and running quickly. Note that there is a check in the loop so that if none of the input values change after some iteration, you can stop checking. In particular, if none of your subsystems have a feedthrough term, you can detect that in one evaluation of all of the inputs. |
Beta Was this translation helpful? Give feedback.
-
Thank you for providing an answer to my question. I see the meanings of the line 1102 Why is the algebraic loop detection completed in |
Beta Was this translation helpful? Give feedback.
-
Thank you for your response. You said this simple approach is effective in most cases but I still need an intuitive understanding. |
Beta Was this translation helpful? Give feedback.
-
Thank you for your sincere reply. |
Beta Was this translation helpful? Give feedback.
-
Hello!
I'm interested in the well-posedness of interconnected nonlinear systems.
How does this package detect algebraic loops in
InterconnectedSystem
?Mainly, I want to know the meanings of the line 1102
cycle_count = len(self.syslist) + 1
in iosys.py.Also, please tell me a list of references for the algorithm of the algebraic loop detection if it exists.
Thank you very much and best regards.
Beta Was this translation helpful? Give feedback.
All reactions