本文整理汇总了C++中OsiSolverInterface::getColName方法的典型用法代码示例。如果您正苦于以下问题:C++ OsiSolverInterface::getColName方法的具体用法?C++ OsiSolverInterface::getColName怎么用?C++ OsiSolverInterface::getColName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OsiSolverInterface
的用法示例。
在下文中一共展示了OsiSolverInterface::getColName方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main (int argc, const char *argv[])
{
OsiClpSolverInterface solver1;
//#define USE_OSI_NAMES
#ifdef USE_OSI_NAMES
// Say we are keeping names (a bit slower this way)
solver1.setIntParam(OsiNameDiscipline,1);
#endif
// Read in model using argv[1]
// and assert that it is a clean model
std::string mpsFileName;
#if defined(SAMPLEDIR)
mpsFileName = SAMPLEDIR "/p0033.mps";
#else
if (argc < 2) {
fprintf(stderr, "Do not know where to find sample MPS files.\n");
exit(1);
}
#endif
if (argc>=2) mpsFileName = argv[1];
int numMpsReadErrors = solver1.readMps(mpsFileName.c_str(),"");
if( numMpsReadErrors != 0 )
{
printf("%d errors reading MPS file\n", numMpsReadErrors);
return numMpsReadErrors;
}
// Tell solver to return fast if presolve or initial solve infeasible
solver1.getModelPtr()->setMoreSpecialOptions(3);
// Pass to Cbc initialize defaults
CbcModel modelA(solver1);
CbcModel * model = &modelA;
CbcMain0(modelA);
// Event handler
MyEventHandler3 eventHandler;
model->passInEventHandler(&eventHandler);
/* Now go into code for standalone solver
Could copy arguments and add -quit at end to be safe
but this will do
*/
if (argc>2) {
CbcMain1(argc-1,argv+1,modelA,callBack);
} else {
const char * argv2[]={"driver6","-solve","-quit"};
CbcMain1(3,argv2,modelA,callBack);
}
// Solver was cloned so get current copy
OsiSolverInterface * solver = model->solver();
// Print solution if finished (could get from model->bestSolution() as well
if (model->bestSolution()) {
const double * solution = solver->getColSolution();
int iColumn;
int numberColumns = solver->getNumCols();
std::cout<<std::setiosflags(std::ios::fixed|std::ios::showpoint)<<std::setw(14);
std::cout<<"--------------------------------------"<<std::endl;
#ifdef USE_OSI_NAMES
for (iColumn=0;iColumn<numberColumns;iColumn++) {
double value=solution[iColumn];
if (fabs(value)>1.0e-7&&solver->isInteger(iColumn))
std::cout<<std::setw(6)<<iColumn<<" "<<std::setw(8)<<setiosflags(std::ios::left)<<solver->getColName(iColumn)
<<resetiosflags(std::ios::adjustfield)<<std::setw(14)<<" "<<value<<std::endl;
}
#else
// names may not be in current solver - use original
for (iColumn=0;iColumn<numberColumns;iColumn++) {
double value=solution[iColumn];
if (fabs(value)>1.0e-7&&solver->isInteger(iColumn))
std::cout<<std::setw(6)<<iColumn<<" "<<std::setw(8)<<setiosflags(std::ios::left)<<solver1.getModelPtr()->columnName(iColumn)
<<resetiosflags(std::ios::adjustfield)<<std::setw(14)<<" "<<value<<std::endl;
}
#endif
std::cout<<"--------------------------------------"<<std::endl;
std::cout<<std::resetiosflags(std::ios::fixed|std::ios::showpoint|std::ios::scientific);
} else {
std::cout<<" No solution!"<<std::endl;
}
return 0;
}
示例2: main
int main (int argc, const char *argv[])
{
OsiClpSolverInterface solver1;
//#define USE_OSI_NAMES
#ifdef USE_OSI_NAMES
// Say we are keeping names (a bit slower this way)
solver1.setIntParam(OsiNameDiscipline,1);
#endif
// Read in model using argv[1]
// and assert that it is a clean model
std::string mpsFileName;
#if defined(SAMPLEDIR)
mpsFileName = SAMPLEDIR "/p0033.mps";
#else
if (argc < 2) {
fprintf(stderr, "Do not know where to find sample MPS files.\n");
exit(1);
}
#endif
if (argc>=2) mpsFileName = argv[1];
int numMpsReadErrors = solver1.readMps(mpsFileName.c_str(),"");
assert(numMpsReadErrors==0);
// Strip off integer information and save
int numberColumns = solver1.getNumCols();
char * integer = new char[numberColumns];
int i;
for (i=0;i<numberColumns;i++) {
if (solver1.isInteger(i)) {
integer[i]=1;
solver1.setContinuous(i);
} else {
integer[i]=0;
}
}
// Pass to Cbc initialize defaults
CbcModel model(solver1);
CbcMain0(model);
// Solve just to show there are no integers
model.branchAndBound();
// Set cutoff etc back in model and solver
model.resetModel();
// Solver was cloned so get it
OsiSolverInterface * solver = model.solver();
// Put back integers. Here the user could do anything really
#define ADD_DIRECTLY
#ifndef ADD_DIRECTLY
for (i=0;i<numberColumns;i++) {
if (integer[i])
solver->setInteger(i);
}
#else
CbcObject ** objects = new CbcObject * [ numberColumns];
int n=0;
for (i=0;i<numberColumns;i++) {
if (integer[i]) {
CbcSimpleIntegerDynamicPseudoCost * newObject =
new CbcSimpleIntegerDynamicPseudoCost(&model,i);
objects[n++]=newObject;
}
}
model.addObjects(n,objects);
for (i=0;i<n;i++)
delete objects[i];
delete [] objects;
#endif
delete [] integer;
/* Now go into code for standalone solver
Could copy arguments and add -quit at end to be safe
but this will do
*/
if (argc>2) {
CbcMain1(argc-1,argv+1,model);
} else {
const char * argv2[]={"driver3","-solve","-quit"};
CbcMain1(3,argv2,model);
}
// Print solution if finished (could get from model.bestSolution() as well
if (solver->getObjValue()*solver->getObjSense()<1.0e50) {
const double * solution = solver->getColSolution();
int iColumn;
std::cout<<std::setiosflags(std::ios::fixed|std::ios::showpoint)<<std::setw(14);
std::cout<<"--------------------------------------"<<std::endl;
#ifdef USE_OSI_NAMES
for (iColumn=0;iColumn<numberColumns;iColumn++) {
double value=solution[iColumn];
if (fabs(value)>1.0e-7&&solver->isInteger(iColumn))
std::cout<<std::setw(6)<<iColumn<<" "<<std::setw(8)<<setiosflags(std::ios::left)<<solver->getColName(iColumn)
<<resetiosflags(std::ios::adjustfield)<<std::setw(14)<<" "<<value<<std::endl;
}
#else
// names may not be in current solver - use original
//.........这里部分代码省略.........