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

Add BoundManager support to CDPWLC #456

Conversation

AleksandarZeljic
Copy link
Collaborator

@AleksandarZeljic AleksandarZeljic commented May 12, 2021

This PR introduces support in the ContextDependentPiecewiseLinearConstraint
class to store bounds using a BoundManager object. Like other context-dependent
members, once the BoundManager object is registered, all the bounds are stored and
retrieved through the BoundManager.

This PR introduces methods to interface between local and global means of
storing bounds. For this purpose the following methods are introduced in
ContextDependentPiecewiseLinearConstraint class:

bool existsLowerBound( unsigned variable );
unsigned getLowerBound( unsigned variable );
void setLowerBound( unsigned variable );
bool existsUpperBound( unsigned variable );
unsigned getUpperBound( unsigned variable );
void setUpperBound( unsigned variable );

All calls to check, read or write local bound arrays are replaced with calls to
the introduced wrapper methods in all the constraint classes:

  • AbsoluteValueConstraint
  • DisjunctionConstraint
  • MaxConstraint
  • ReluConstraint
  • SignConstraint

Respective test classes have been updated to include existing tests in both the
preprocessing and context-dependent mode, preserving existing functionality.

Finally, all modified files have also been reformatted to conform to the style
guidelines.

This reverts commit 3e01cd0adfd13448519d757a8316f9a12437d025.
This reverts commit 875abd42db50d4ba78306da9210fd24fb395aa23.
@AleksandarZeljic
Copy link
Collaborator Author

@guykatzz Hi Guy, the PR is finally ready for review. It seems big, but only one file needs serious scrutiny - MaxConstraint.cpp, the rest of the constraint classes are pretty simple changes.

The test files have big additions, but they are all repeating existing test cases with BoundManager initialized. So a quick skim to make sure that each introduced test initializes the BoundManager should be enough.

@AleksandarZeljic AleksandarZeljic merged commit c4563be into NeuralNetworkVerification:master Jul 28, 2021
@AleksandarZeljic AleksandarZeljic deleted the p2-ConstrantsBMsupport branch July 28, 2021 21:23
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

Successfully merging this pull request may close these issues.

2 participants