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

Augmented Lagrangian to support linear constraints #820

Closed
CatchemAl opened this issue Aug 28, 2017 · 2 comments
Assignees
Milestone

Comments

@CatchemAl
Copy link
Collaborator

@CatchemAl CatchemAl commented Aug 28, 2017

Feature request

Currently, the AugmentedLagrangian only supports non-linear constraints. It would be nice if it could support linear constraints as well since, AFAIK, there is no non-linear solver that supports linear constraints out the box (other than the GoldfarbIdnani QP solver). This would be much more convenient than having to express linear constraints as non-linear constraints (not to mention faster as the gradient could be cached).

I would propose that it supports IEnumerable<LinearConstraint> linearConstraints as a constructor parameter. This is consistent with the current API, which takes IEnumerable<NonlinearConstraint> constraints. It would also naturally allow the LinearConstraintCollection class to be fed in without any extra effort.

In terms of implementation, it would be quite a straightforward change as the AugmentedLagrangian is (almost) completely set up to handle the IConstraint polymorphically. Let me know your thoughts. I might be able to get round to it in the next few weeks so feel free to assign to me if you're happy for this to go ahead.

Thanks,
Alex

@CatchemAl CatchemAl mentioned this issue Aug 29, 2017
4 of 7 tasks complete
@CatchemAl CatchemAl self-assigned this Aug 30, 2017
@cesarsouza

This comment has been minimized.

Copy link
Contributor

@cesarsouza cesarsouza commented Aug 31, 2017

That's indeed a very nice feature to have! Thanks so much!

@cesarsouza cesarsouza mentioned this issue Oct 1, 2017
0 of 3 tasks complete
CatchemAl added a commit that referenced this issue Oct 11, 2017
GH 821:
 - Adding Tolerance to the interface of IConstraint
 - Add GetViolation and IsViolated as extension methods to IConstraint (removing duplicated code)

GH-820:
 - Changing all references from NonlinearConstraint to IConstraint in AugmentedLagrangian.cs.
 - Updating the documentation to give an example of using LinearConstraints in the AugmentedLagrangian
CatchemAl added a commit that referenced this issue Oct 11, 2017
GH-821:
 - Adding Tolerance to the interface of IConstraint
 - Add GetViolation and IsViolated as extension methods to IConstraint (removing duplicated code)

GH-820:
 - Changing all references from NonlinearConstraint to IConstraint in AugmentedLagrangian.cs.
 - Updating the documentation to give an example of using LinearConstraints in the AugmentedLagrangian
CatchemAl added a commit that referenced this issue Oct 11, 2017
cesarsouza added a commit that referenced this issue Oct 13, 2017
GH-820: Augmented Lagrangian to support linear constraints
@cesarsouza cesarsouza added this to the 3.8 milestone Oct 22, 2017
@cesarsouza

This comment has been minimized.

Copy link
Contributor

@cesarsouza cesarsouza commented Oct 22, 2017

Added in 3.8.0.

@cesarsouza cesarsouza closed this Oct 22, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants
You can’t perform that action at this time.