@ -27,8 +27,8 @@ namespace storm { 
			
		
	
		
			
				
					            // Create the environment.
  
			
		
	
		
			
				
					            int  error  =  GRBloadenv ( & env ,  " " ) ;  
			
		
	
		
			
				
					            if  ( error  | |  env  = =  nullptr )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Could not initialize Gurobi ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not initialize Gurobi environment ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Could not initialize Gurobi ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not initialize Gurobi environment ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            // Set some general properties of the environment.
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -37,8 +37,8 @@ namespace storm { 
			
		
	
		
			
				
					            // Create the model.
  
			
		
	
		
			
				
					            error  =  GRBnewmodel ( env ,  & model ,  name . c_str ( ) ,  0 ,  nullptr ,  nullptr ,  nullptr ,  nullptr ,  nullptr ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Could not initialize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not initialize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Could not initialize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not initialize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -74,8 +74,8 @@ namespace storm { 
			
		
	
		
			
				
					        void  GurobiLpSolver : : update ( )  const  {  
			
		
	
		
			
				
					            int  error  =  GRBupdatemodel ( model ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to update Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to update Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to update Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to update Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            // Since the model changed, we erase the optimality flag.
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -100,8 +100,8 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            + + nextVariableIndex ;  
			
		
	
		
			
				
					            return  nextVariableIndex  -  1 ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -125,8 +125,8 @@ namespace storm { 
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            + + nextVariableIndex ;  
			
		
	
		
			
				
					            return  nextVariableIndex  -  1 ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -135,8 +135,8 @@ namespace storm { 
			
		
	
		
			
				
					        uint_fast64_t  GurobiLpSolver : : createBinaryVariable ( std : : string  const &  name ,  double  objectiveFunctionCoefficient )  {  
			
		
	
		
			
				
					            int  error  =  GRBaddvar ( model ,  0 ,  nullptr ,  nullptr ,  objectiveFunctionCoefficient ,  0.0 ,  1.0 ,  GRB_BINARY ,  name . c_str ( ) ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Could not create binary Gurobi variable ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					            + + nextVariableIndex ;  
			
		
	
		
			
				
					            return  nextVariableIndex  -  1 ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -170,8 +170,8 @@ namespace storm { 
			
		
	
		
			
				
					            int  error  =  GRBaddconstr ( model ,  variablesCopy . size ( ) ,  variablesCopy . data ( ) ,  coefficientsCopy . data ( ) ,  sense ,  rightHandSideValue ,  name  = =  " "  ?  nullptr  :  name . c_str ( ) ) ;  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                LOG4CPLUS_ERROR ( logger ,  " Unable to assert Gurobi constraint ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to assert Gurobi constraint ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
					                LOG4CPLUS_ERROR ( logger ,  " Unable to assert Gurobi constraint ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error  < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to assert Gurobi constraint ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					         
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -182,15 +182,15 @@ namespace storm { 
			
		
	
		
			
				
					            // Set the most recently set model sense.
  
			
		
	
		
			
				
					            int  error  =  GRBsetintattr ( model ,  " ModelSense " ,  this - > getModelSense ( )  = =  MINIMIZE  ?  1  :  - 1 ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi model sense ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi model sense ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi model sense ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi model sense ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            // Then we actually optimize the model.
  
			
		
	
		
			
				
					            error  =  GRBoptimize ( model ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to optimize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to optimize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to optimize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to optimize Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            this - > currentModelHasBeenOptimized  =  true ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -205,8 +205,8 @@ namespace storm { 
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            int  error  =  GRBgetintattr ( model ,  GRB_INT_ATTR_STATUS ,  & optimalityStatus ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            // By default, Gurobi may tell us only that the model is either infeasible or unbounded. To decide which one
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -215,22 +215,22 @@ namespace storm { 
			
		
	
		
			
				
					                std : : cout  < <  " here "  < <  std : : endl ;  
			
		
	
		
			
				
					                error  =  GRBsetintparam ( GRBgetenv ( model ) ,  GRB_INT_PAR_DUALREDUCTIONS ,  0 ) ;  
			
		
	
		
			
				
					                if  ( error )  {  
			
		
	
		
			
				
					                     LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                     throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
										 LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
										 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                this - > optimize ( ) ;  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                error  =  GRBgetintattr ( model ,  GRB_INT_ATTR_STATUS ,  & optimalityStatus ) ;  
			
		
	
		
			
				
					                if  ( error )  {  
			
		
	
		
			
				
					                     LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                     throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
										 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
										 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                error  =  GRBsetintparam ( GRBgetenv ( model ) ,  GRB_INT_PAR_DUALREDUCTIONS ,  1 ) ;  
			
		
	
		
			
				
					                if  ( error )  {  
			
		
	
		
			
				
					                     LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                     throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
										 LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
										 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -246,8 +246,8 @@ namespace storm { 
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            int  error  =  GRBgetintattr ( model ,  GRB_INT_ATTR_STATUS ,  & optimalityStatus ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            // By default, Gurobi may tell us only that the model is either infeasible or unbounded. To decide which one
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -255,22 +255,22 @@ namespace storm { 
			
		
	
		
			
				
					            if  ( optimalityStatus  = =  GRB_INF_OR_UNBD )  {  
			
		
	
		
			
				
					                error  =  GRBsetintparam ( GRBgetenv ( model ) ,  GRB_INT_PAR_DUALREDUCTIONS ,  0 ) ;  
			
		
	
		
			
				
					                if  ( error )  {  
			
		
	
		
			
				
					                     LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                     throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
										 LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
										 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					                 
			
		
	
		
			
				
					                this - > optimize ( ) ;  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                error  =  GRBgetintattr ( model ,  GRB_INT_ATTR_STATUS ,  & optimalityStatus ) ;  
			
		
	
		
			
				
					                if  ( error )  {  
			
		
	
		
			
				
					                     LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                     throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
										 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
										 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                error  =  GRBsetintparam ( GRBgetenv ( model ) ,  GRB_INT_PAR_DUALREDUCTIONS ,  1 ) ;  
			
		
	
		
			
				
					                if  ( error )  {  
			
		
	
		
			
				
					                     LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                     throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
										 LOG4CPLUS_ERROR ( logger ,  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
										 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to set Gurobi parameter ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					                }  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -285,8 +285,8 @@ namespace storm { 
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            int  error  =  GRBgetintattr ( model ,  GRB_INT_ATTR_STATUS ,  & optimalityStatus ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to retrieve optimization status of Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            return  optimalityStatus  = =  GRB_OPTIMAL ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -309,8 +309,8 @@ namespace storm { 
			
		
	
		
			
				
					            double  value  =  0 ;  
			
		
	
		
			
				
					            int  error  =  GRBgetdblattrelement ( model ,  GRB_DBL_ATTR_X ,  variableIndex ,  & value ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( std : : abs ( value  -  static_cast < int > ( value ) )  < =  storm : : settings : : Settings : : getInstance ( ) - > getOptionByLongName ( " gurobiinttol " ) . getArgument ( 0 ) . getValueAsDouble ( ) )  {  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -340,8 +340,8 @@ namespace storm { 
			
		
	
		
			
				
					            double  value  =  0 ;  
			
		
	
		
			
				
					            int  error  =  GRBgetdblattrelement ( model ,  GRB_DBL_ATTR_X ,  variableIndex ,  & value ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            if  ( std : : abs ( value  -  1 )  < =  storm : : settings : : Settings : : getInstance ( ) - > getOptionByLongName ( " gurobiinttol " ) . getArgument ( 0 ) . getValueAsDouble ( ) )  {  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -371,8 +371,8 @@ namespace storm { 
			
		
	
		
			
				
					            double  value  =  0 ;  
			
		
	
		
			
				
					            int  error  =  GRBgetdblattrelement ( model ,  GRB_DBL_ATTR_X ,  variableIndex ,  & value ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            return  value ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -395,8 +395,8 @@ namespace storm { 
			
		
	
		
			
				
					            double  value  =  0 ;  
			
		
	
		
			
				
					            int  error  =  GRBgetdblattr ( model ,  GRB_DBL_ATTR_OBJVAL ,  & value ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " ). " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to get Gurobi solution ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ). " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					             
			
		
	
		
			
				
					            return  value ;  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -405,8 +405,8 @@ namespace storm { 
			
		
	
		
			
				
					        void  GurobiLpSolver : : writeModelToFile ( std : : string  const &  filename )  const  {  
			
		
	
		
			
				
					            int  error  =  GRBwrite ( model ,  filename . c_str ( ) ) ;  
			
		
	
		
			
				
					            if  ( error )  {  
			
		
	
		
			
				
					                 LOG4CPLUS_ERROR ( logger ,  " Unable to write Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ) to file. " ) ;  
			
		
	
		
			
				
					                 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to write Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " ) to file. " ;  
			
		
	
		
			
				
									 LOG4CPLUS_ERROR ( logger ,  " Unable to write Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ) to file. " ) ;  
			
		
	
		
			
				
									 throw  storm : : exceptions : : InvalidStateException ( )  < <  " Unable to write Gurobi model ( "  < <  GRBgeterrormsg ( env )  < <  " , error code  "  < <  error   < <  " ) to file. " ;  
			
		
	
		
			
				
					            }  
			
		
	
		
			
				
					        }  
			
		
	
		
			
				
					    }