/** runs GCG from the command line */ static SCIP_RETCODE fromCommandLine( SCIP* scip, /**< SCIP data structure */ const char* filename, /**< input file name */ const char* decname /**< decomposition file name (or NULL) */ ) { SCIP_RESULT result = SCIP_DIDNOTRUN; /******************** * Problem Creation * ********************/ SCIPinfoMessage(scip, NULL, "\nread problem <%s>\n", filename); SCIPinfoMessage(scip, NULL, "============\n\n"); SCIP_CALL( SCIPreadProb(scip, filename, NULL) ); SCIP_CALL( SCIPtransformProb(scip) ); if( decname != NULL ) { SCIPinfoMessage(scip, NULL, "\nread decomposition <%s>\n", decname); SCIPinfoMessage(scip, NULL, "==================\n\n"); SCIP_CALL( SCIPreadProb(scip, decname, NULL) ); SCIP_CALL( SCIPsetIntParam(scip, "presolving/maxrounds", 0) ); } else { SCIP_CALL( SCIPpresolve(scip) ); SCIP_CALL( DECdetectStructure(scip, &result) ); } /******************* * Problem Solving * *******************/ if( decname == NULL && result != SCIP_SUCCESS ) { SCIPinfoMessage(scip, NULL, "No decomposition exists or could be detected. You need to specify one.\n"); return SCIP_OKAY; } /* solve problem */ SCIPinfoMessage(scip, NULL, "\nsolve problem\n"); SCIPinfoMessage(scip, NULL, "=============\n\n"); SCIP_CALL( SCIPsolve(scip) ); SCIPinfoMessage(scip, NULL, "\nprimal solution:\n"); SCIPinfoMessage(scip, NULL, "================\n\n"); SCIP_CALL( SCIPprintBestSol(scip, NULL, FALSE) ); /************** * Statistics * **************/ SCIPinfoMessage(scip, NULL, "\nStatistics\n"); SCIPinfoMessage(scip, NULL, "==========\n\n"); SCIP_CALL( SCIPprintStatistics(scip, NULL) ); return SCIP_OKAY; }
/** starts SCIP */ static SCIP_RETCODE fromCommandLine( SCIP* scip, /**< SCIP data structure */ const char* filename /**< input file name */ ) { /******************** * Problem Creation * ********************/ std::cout << std::endl << "read problem <" << filename << ">" << std::endl; std::cout << "============" << std::endl << std::endl; SCIP_CALL( SCIPreadProb(scip, filename, NULL) ); /******************* * Problem Solving * *******************/ /* solve problem */ std::cout << "solve problem" << std::endl; std::cout << "=============" << std::endl; SCIP_CALL( SCIPsolve(scip) ); std::cout << std::endl << "primal solution:" << std::endl; std::cout << "================" << std::endl << std::endl; SCIP_CALL( SCIPprintBestSol(scip, NULL, FALSE) ); /************** * Statistics * **************/ std::cout << std::endl << "Statistics" << std::endl; std::cout << "==========" << std::endl << std::endl; SCIP_CALL( SCIPprintStatistics(scip, NULL) ); return SCIP_OKAY; }
static SCIP_RETCODE fromCommandLine( SCIP* scip, /**< SCIP data structure */ const char* filename /**< input file name */ ) { SCIP_RETCODE retcode; /******************** * Problem Creation * ********************/ /** @note The message handler should be only fed line by line such the message has the chance to add string in front * of each message */ SCIPinfoMessage(scip, NULL, "\n"); SCIPinfoMessage(scip, NULL, "read problem <%s>\n", filename); SCIPinfoMessage(scip, NULL, "============\n"); SCIPinfoMessage(scip, NULL, "\n"); retcode = SCIPreadProb(scip, filename, NULL); switch( retcode ) { case SCIP_NOFILE: SCIPinfoMessage(scip, NULL, "file <%s> not found\n", filename); return SCIP_OKAY; case SCIP_PLUGINNOTFOUND: SCIPinfoMessage(scip, NULL, "no reader for input file <%s> available\n", filename); return SCIP_OKAY; case SCIP_READERROR: SCIPinfoMessage(scip, NULL, "error reading file <%s>\n", filename); return SCIP_OKAY; default: SCIP_CALL( retcode ); } /*lint !e788*/ /******************* * Problem Solving * *******************/ /* solve problem */ SCIPinfoMessage(scip, NULL, "\nsolve problem\n"); SCIPinfoMessage(scip, NULL, "=============\n\n"); SCIP_CALL( SCIPsolve(scip) ); SCIPinfoMessage(scip, NULL, "\nprimal solution:\n"); SCIPinfoMessage(scip, NULL, "================\n\n"); SCIP_CALL( SCIPprintBestSol(scip, NULL, FALSE) ); /************** * Statistics * **************/ SCIPinfoMessage(scip, NULL, "\nStatistics\n"); SCIPinfoMessage(scip, NULL, "==========\n\n"); SCIP_CALL( SCIPprintStatistics(scip, NULL) ); return SCIP_OKAY; }
/** starts SCIP */ static SCIP_RETCODE fromCommandLine( SCIP* scip, /**< SCIP data structure */ const char* filename /**< input file name */ ) { /******************** * Problem Creation * ********************/ std::cout << std::endl << "read problem <" << filename << ">" << std::endl; std::cout << "============" << std::endl << std::endl; SCIP_CALL( SCIPreadProb(scip, filename, NULL) ); /******************* * Problem Solving * *******************/ /* solve problem */ std::cout << "solve problem" << std::endl; std::cout << "=============" << std::endl; SCIP_CALL( SCIPsolve(scip) ); std::cout << std::endl << "primal solution:" << std::endl; std::cout << "================" << std::endl << std::endl; SCIP_CALL( SCIPprintBestSol(scip, NULL, FALSE) ); /************** * Statistics * **************/ //std::cout << std::endl << "Statistics" << std::endl; //std::cout << "==========" << std::endl << std::endl; //SCIP_CALL( SCIPprintStatistics(scip, NULL) ); std::cout << "==========" << std::endl << std::endl; /* double OBJVAL; int items=SCIPgetNVars(scip); double *x; x = new double[items]; SCIP_CALL(complementarity_knapsack(scip,x,&OBJVAL)); SCIP_VAR** vars=SCIPgetVars(scip); cout << "Solution vector: " << endl; for(int j=0;j<items;j++) { cout << SCIPvarGetName(vars[j]) << "\t" << x[j] << endl; } cout << endl; cout << "Objective value = "<< OBJVAL << endl; */ SCIP_CALL(complementarity_knapsack(scip)); return SCIP_OKAY; }