00001 // (C) Copyright Carnegie Mellon University 2005 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // Authors : 00006 // Pierre Bonami, Carnegie Mellon University, 00007 // 00008 // Date : 26/05/2005 00009 #include "BonStartPointReader.hpp" 00010 00011 00012 namespace Bonmin { 00013 00014 bool StartPointReader::readFile() 00015 { 00016 std::ifstream inFile(fileName_.c_str()); 00017 if(!inFile.is_open()) { 00018 std::cerr<<"Error in opening initial point file"; 00019 return false; 00020 } 00021 int numPrimals; 00022 int numDuals; 00023 inFile>>numPrimals>>numDuals; 00024 gutsOfDestructor(); 00025 primals_ = new double [numPrimals]; 00026 duals_ = new double[numDuals]; 00027 for(int i = 0; i < numPrimals ; i++) { 00028 inFile>>primals_[i]; 00029 } 00030 for(int i = 0; i < numDuals ; i++) { 00031 inFile>>duals_[i]; 00032 } 00033 return true; 00034 } 00035 00036 bool StartPointReader::readAndApply(OsiTMINLPInterface * solver) 00037 { 00038 readFile(); 00039 solver->solver()->enableWarmStart(); 00040 if(primals_) 00041 solver->setColSolution(primals_); 00042 else { 00043 std::cerr<<"No warm start info ???"<<std::endl; 00044 return 0; 00045 } 00046 if(duals_) 00047 solver->setRowPrice(duals_); 00048 else { 00049 std::cerr<<"No warm start info ???"<<std::endl; 00050 return 0; 00051 } 00052 return 1; 00053 } 00054 }