Skip to content
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

Maps with constraints #60

Closed
mforets opened this issue Feb 3, 2019 · 4 comments
Closed

Maps with constraints #60

mforets opened this issue Feb 3, 2019 · 4 comments
Assignees

Comments

@mforets
Copy link
Member

mforets commented Feb 3, 2019

The src/maps.jl defines a bunch of structures that subtype AbstractMap. As you can see in the table below, we are missing several combinations.

Type Constrains state Constrains inputs Is defined?
IdentityMap x D
ConstrainedIdentityMap x D
LinearMap x D
AffineMap x D
LinearControlMap x D
ConstrainedLinearMap x D
ConstrainedAffineMap x D
AffineControlMap x D
ConstrainedAffineControlMap x x x (needs update)
ConstrainedLinearControlMap x x x (needs update)

Here are two approaches to complete the table:

  1. Add all the missing combinations one by one, e.g. ConstrainedLinearMap for x -> Ax with constraints on x, etc.

  2. Add a new struct by composition, defining maps with constraints, like:

struct ConstrainedMap{C, M<:AbstractMap}
    constraint::C
    map::M
end

For ...ContinuousSytem and ...DiscreteSystem we've been implementing approach 1.

I like approach 2 because it is more general. At the same time, it has less structure, because it does not speak about "constraint on what" (state or input).

@schillic
Copy link
Member

schillic commented Feb 3, 2019

I prefer 2.

@mforets
Copy link
Member Author

mforets commented Feb 3, 2019

And how about

At the same time, it has less structure, because it does not speak about "constraint on what" (state or input).

?

@schillic
Copy link
Member

schillic commented Feb 3, 2019

Add ConstrainedControlMap which can also constrain the input.

@schillic
Copy link
Member

I think this has been resolved in #66.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants