From d20f8398cfd3a5d5adf1e4ce3d39fb12fb586124 Mon Sep 17 00:00:00 2001 From: Andrew Wu Date: Tue, 13 Aug 2024 13:49:40 -0400 Subject: [PATCH] Change initialization strategy in DeepSoI if NLR is not fully constructed --- src/engine/SumOfInfeasibilitiesManager.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/engine/SumOfInfeasibilitiesManager.cpp b/src/engine/SumOfInfeasibilitiesManager.cpp index 1ed7b4d2b..d39a08dcb 100644 --- a/src/engine/SumOfInfeasibilitiesManager.cpp +++ b/src/engine/SumOfInfeasibilitiesManager.cpp @@ -32,6 +32,10 @@ SumOfInfeasibilitiesManager::SumOfInfeasibilitiesManager( const InputQuery &inpu Options::get()->getFloat( Options::PROBABILITY_DENSITY_PARAMETER ) ) , _statistics( NULL ) { + if ( !inputQuery._networkLevelReasoner || + inputQuery._networkLevelReasoner->getConstraintsInTopologicalOrder().size() < + _plConstraints.size() ) + _initializationStrategy = SoIInitializationStrategy::CURRENT_ASSIGNMENT; } void SumOfInfeasibilitiesManager::resetPhasePattern() @@ -82,13 +86,12 @@ void SumOfInfeasibilitiesManager::initializePhasePattern() resetPhasePattern(); - if ( _initializationStrategy == SoIInitializationStrategy::INPUT_ASSIGNMENT && - _networkLevelReasoner ) + if ( _initializationStrategy == SoIInitializationStrategy::INPUT_ASSIGNMENT ) { + ASSERT( _networkLevelReasoner ); initializePhasePatternWithCurrentInputAssignment(); } - else if ( _initializationStrategy == SoIInitializationStrategy::CURRENT_ASSIGNMENT || - !_networkLevelReasoner ) + else if ( _initializationStrategy == SoIInitializationStrategy::CURRENT_ASSIGNMENT ) { initializePhasePatternWithCurrentAssignment(); }