int OSDipApp::generateInitVars(DecompVarList & initVars) { //--- //--- generateInitVars is a virtual method and can be overriden //--- if the user has some idea how to initialize the list of //--- initial variables (columns in the DW master) //--- std::cout << "GENERATE INIT VARS" << std::endl; UtilPrintFuncBegin(m_osLog, m_classTag, "generateInitVars()", m_appParam.LogLevel, 2); //--- //--- Get the initial solution from the OSOption object //--- we want the variable other option where name="initialCol" //--- //std::vector<OtherVariableOption*> getOtherVariableOptions(std::string solver_name); std::vector<OtherVariableOption*> otherVarOptions; std::vector<OtherVariableOption*>::iterator vit; int *index = NULL; double *value = NULL; int i; double objValue; int whichBlock; DecompVar *var; try{ if (m_osInterface.m_osoption != NULL && m_osInterface.m_osoption->getNumberOfOtherVariableOptions() > 0) { std::cout << "Number of other variable options = " << m_osInterface.m_osoption->getNumberOfOtherVariableOptions() << std::endl; otherVarOptions = m_osInterface.m_osoption->getOtherVariableOptions( "Dip"); //iterate over the vector for (vit = otherVarOptions.begin(); vit != otherVarOptions.end(); vit++) { // see if we have an initialCol option if ((*vit)->name.compare("initialCol") == 0) { index = new int[(*vit)->numberOfVar]; value = new double[(*vit)->numberOfVar]; objValue = 0.0; for (i = 0; i < (*vit)->numberOfVar; i++) { index[i] = (*vit)->var[i]->idx; //convert the string to integer value[ i] = atoi((*vit)->var[i]->value.c_str()); objValue += m_objective[index[i]]; } whichBlock = atoi( (*vit)->value.c_str() ); var = new DecompVar((*vit)->numberOfVar, index, value, objValue); var->setBlockId(whichBlock); initVars.push_back(var); //free local memory UTIL_DELARR( index); UTIL_DELARR( value); } } } }//end try catch(const ErrorClass& eclass){ throw ErrorClass( eclass.errormsg); } UtilPrintFuncEnd(m_osLog, m_classTag, "generateInitVars()", m_appParam.LogLevel, 2); return static_cast<int> (initVars.size()); }