-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Handle systems with incomplete constraints #180
Comments
Not every package uses The difference between 2. and 3. is just in cases where we want to automatically create a system. A user who wants to create a system can always choose their representation of a julia> my_universe(n) = LazySets.Universe(n); # example function
julia> @universe my_universe # assigns my_universe to an internal function _universe
julia> @system ... # internally calls _universe to create universes |
Exactly, the idea of using |
I also would select either option 2 or 3. Could we make |
There are combinations of systems that are not available; my favorite example is a ConstrainedLinearControlContinuousSystem where the input is constrained but the state set is unconstrained.
Here are three alternatives:
Add a new system type with the corresponding variation, eg.
StateConstrainedLinearControlContinuousSystem
,InputConstrainedLinearControlContinuousSystem
(keepingConstrainedLinearControlContinuousSystem
to mean that both input and state sets are constrained).Create instances with
nothing
in the corresponding fields.Create instances with a universe using a thin layer:
MathematicalSets.UniversalSet
and adding type restrictions for the set constraints to be<: MathematicalSets.AbstractSet
.From discussin on gitter, option 1 is a bit heavy on types because of the different combinations. Option 3 is the best (to me) but we would need to update
MathematicalSets
so it is not immediate. So we would rather go with option 2. Note that downstream packages can dispatch onNothing
in that case.NB: why i think that 3 is better than 2 is that you don't need to bother with small unions,
Union{Nothing, LazySet}
, sinceLazySets.Universe
will take the role ofMathematicalSets.UniversalSet
. And also, generic algorithms do not have to consider the missing information as a special case becuaseLazySets.Universe
behaves as a set ;)The text was updated successfully, but these errors were encountered: