本文整理汇总了C++中EnvPtr::getOptions方法的典型用法代码示例。如果您正苦于以下问题:C++ EnvPtr::getOptions方法的具体用法?C++ EnvPtr::getOptions怎么用?C++ EnvPtr::getOptions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EnvPtr
的用法示例。
在下文中一共展示了EnvPtr::getOptions方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setInitialOptions
void setInitialOptions(EnvPtr env)
{
env->getOptions()->findBool("presolve")->setValue(true);
env->getOptions()->findBool("use_native_cgraph")->setValue(true);
env->getOptions()->findBool("nl_presolve")->setValue(true);
env->getOptions()->findBool("separability")->setValue(false);
env->getOptions()->findBool("perspective")->setValue(false);
}
示例2: presolve
PresolverPtr presolve(EnvPtr env, ProblemPtr p, size_t ndefs,
HandlerVector &handlers)
{
PresolverPtr pres = PresolverPtr(); // NULL
const std::string me("qg: ");
p->calculateSize();
if (env->getOptions()->findBool("presolve")->getValue() == true) {
LinearHandlerPtr lhandler = (LinearHandlerPtr) new LinearHandler(env, p);
handlers.push_back(lhandler);
if (p->isQP() || p->isQuadratic() || p->isLinear() ||
true==env->getOptions()->findBool("use_native_cgraph")->getValue()) {
lhandler->setPreOptPurgeVars(true);
lhandler->setPreOptPurgeCons(true);
lhandler->setPreOptCoeffImp(true);
} else {
lhandler->setPreOptPurgeVars(false);
lhandler->setPreOptPurgeCons(false);
lhandler->setPreOptCoeffImp(false);
}
if (ndefs>0) {
lhandler->setPreOptDualFix(false);
} else {
lhandler->setPreOptDualFix(true);
}
if (!p->isLinear() &&
true==env->getOptions()->findBool("use_native_cgraph")->getValue() &&
true==env->getOptions()->findBool("nl_presolve")->getValue()
) {
NlPresHandlerPtr nlhand = (NlPresHandlerPtr) new NlPresHandler(env, p);
handlers.push_back(nlhand);
}
// write the names.
env->getLogger()->msgStream(LogExtraInfo) << me
<< "handlers used in presolve:" << std::endl;
for (HandlerIterator h = handlers.begin(); h != handlers.end();
++h) {
env->getLogger()->msgStream(LogExtraInfo) << me
<< (*h)->getName() << std::endl;
}
}
pres = (PresolverPtr) new Presolver(p, env, handlers);
pres->standardize();
if (env->getOptions()->findBool("presolve")->getValue() == true) {
pres->solve();
}
return pres;
}
示例3: writeSol
void writeSol(EnvPtr env, VarVector *orig_v,
PresolverPtr pres, SolutionPtr sol, SolveStatus status,
MINOTAUR_AMPL::AMPLInterface* iface)
{
if (sol) {
sol = pres->getPostSol(sol);
}
if (env->getOptions()->findFlag("AMPL")->getValue() ||
true == env->getOptions()->findBool("write_sol_file")->getValue()) {
iface->writeSolution(sol, status);
} else if (sol && env->getLogger()->getMaxLevel()>=LogExtraInfo &&
env->getOptions()->findBool("display_solution")->getValue()) {
sol->writePrimal(env->getLogger()->msgStream(LogExtraInfo), orig_v);
}
}
示例4: defined
IpoptEngine::IpoptEngine(EnvPtr env)
: bndChanged_(false),
consChanged_(false),
env_(env),
etol_(1e-7),
myapp_(0),
mynlp_(0),
sol_(IpoptSolPtr()), // NULL
strBr_(false),
timer_(0),
ws_(IpoptWarmStartPtr()) // NULL
{
#if defined(USE_IPOPT)
problem_ = ProblemPtr(); // NULL
logger_ = (LoggerPtr) new Logger((LogLevel) env->getOptions()->
findInt("engine_log_level")->getValue());
myapp_ = new Ipopt::IpoptApplication();
setOptionsForRepeatedSolve();
status_ = EngineError;
if (env->getOptions()->findBool("use_warmstart")->getValue()==true) {
prepareWs_ = true;
useWs_ = true;
} else {
prepareWs_ = false;
useWs_ = false;
}
timer_ = env->getNewTimer();
stats_ = new IpoptStats();
stats_->calls = 0;
stats_->strCalls = 0;
stats_->time = 0;
stats_->ptime = 0;
stats_->strTime = 0;
stats_->iters = 0;
stats_->strIters = 0;
#else
assert(!"ipopt engine can only be called when compiled with ipopt!")
#endif
}
示例5:
MultilinearTermsHandler::MultilinearTermsHandler(EnvPtr env, ProblemPtr problem)
: env_(env), problem_(problem)
{
logger_ = env->getLogger();
eTol_ = env->getOptions()->findDouble("ml_feastol")->getValue();
maxGroupSize_ = (UInt) env_->getOptions()->findInt("ml_max_group_size")->getValue();
augmentCoverFactor_ = env_->getOptions()->findDouble("ml_cover_augmentation_factor")->getValue();
initialTermCoverSize_ = 0;
}
示例6: loadProblem
void loadProblem(EnvPtr env, MINOTAUR_AMPL::AMPLInterface* iface,
ProblemPtr &oinst, double *obj_sense)
{
Timer *timer = env->getNewTimer();
OptionDBPtr options = env->getOptions();
JacobianPtr jac;
HessianOfLagPtr hess;
const std::string me("qg: ");
timer->start();
oinst = iface->readInstance(options->findString("problem_file")->getValue());
env->getLogger()->msgStream(LogInfo) << me
<< "time used in reading instance = " << std::fixed
<< std::setprecision(2) << timer->query() << std::endl;
// display the problem
oinst->calculateSize();
if (options->findBool("display_problem")->getValue()==true) {
oinst->write(env->getLogger()->msgStream(LogNone), 12);
}
if (options->findBool("display_size")->getValue()==true) {
oinst->writeSize(env->getLogger()->msgStream(LogNone));
}
// create the jacobian
if (false==options->findBool("use_native_cgraph")->getValue()) {
jac = (MINOTAUR_AMPL::AMPLJacobianPtr)
new MINOTAUR_AMPL::AMPLJacobian(iface);
oinst->setJacobian(jac);
// create the hessian
hess = (MINOTAUR_AMPL::AMPLHessianPtr)
new MINOTAUR_AMPL::AMPLHessian(iface);
oinst->setHessian(hess);
}
// set initial point
oinst->setInitialPoint(iface->getInitialPoint(),
oinst->getNumVars()-iface->getNumDefs());
if (oinst->getObjective() &&
oinst->getObjective()->getObjectiveType()==Maximize) {
*obj_sense = -1.0;
env->getLogger()->msgStream(LogInfo) << me
<< "objective sense: maximize (will be converted to Minimize)"
<< std::endl;
} else {
*obj_sense = 1.0;
env->getLogger()->msgStream(LogInfo) << me
<< "objective sense: minimize" << std::endl;
}
delete timer;
}
示例7: Logger
Transformer::Transformer(EnvPtr env, ConstProblemPtr p)
: env_(env),
p_(p),
yLfs_(0),
yUniExprs_(0),
yVars_(0),
zTol_(1e-12)
{
logger_ = (LoggerPtr) new Logger((LogLevel)(env->getOptions()
->findInt("trans_log_level")
->getValue()));
}
示例8: RandomBrStats
RandomBrancher::RandomBrancher(EnvPtr env, HandlerVector handlers)
{
logger_ = env->getLogger();
timer_ = env->getNewTimer();
stats_ = new RandomBrStats();
stats_->calls = 0;
stats_->time = 0.0;
handlers_ = handlers;
seed_ = env->getOptions()->findInt("rand_seed")->getValue();
if (seed_ == 0) {
srand(time(NULL));
} else {
srand(seed_);
}
}
示例9: sepDetection
//For separability detection: Check separability if problem is not linear.
//TransSepPtr sepDetection(EnvPtr env, ProblemPtr p)
void sepDetection(EnvPtr env, ProblemPtr p)
{
TransSepPtr sep = TransSepPtr();
const std::string me("PDEqg: ");
if (env->getOptions()->findBool("separability")->getValue() == true) {
if (p -> isLinear()) {
env ->getLogger()->msgStream(LogInfo) << me
<< "Problem is linear, skipping separability detection"
<< std::endl;
} else {
sep = (TransSepPtr) new TransSep(env, p);
sep->findSep();
env ->getLogger()->msgStream(LogDebug) << me
<< "Is problem separable? - "<< sep->getStatus()
<< std::endl;
}
}
}
示例10: showInfo
int showInfo(EnvPtr env)
{
OptionDBPtr options = env->getOptions();
const std::string me("qg: ");
if (options->findBool("display_options")->getValue() ||
options->findFlag("=")->getValue()) {
options->write(std::cout);
return 1;
}
if (options->findBool("display_help")->getValue() ||
options->findFlag("?")->getValue()) {
showHelp();
return 1;
}
if (options->findBool("display_version")->getValue() ||
options->findFlag("v")->getValue()) {
env->getLogger()->msgStream(LogNone) << me <<
"Minotaur version " << env->getVersion() << std::endl;
env->getLogger()->msgStream(LogNone) << me
<< "Quesada-Grossmann (LP/NLP) algorithm for convex MINLP" << std::endl;
return 1;
}
if (options->findString("problem_file")->getValue()=="") {
showHelp();
return 1;
}
env->getLogger()->msgStream(LogInfo)
<< me << "Minotaur version " << env->getVersion() << std::endl
<< me << "Quesada-Grossmann (LP/NLP) algorithm for convex MINLP"
<< std::endl;
return 0;
}
示例11: main
int main(int argc, char* argv[])
{
EnvPtr env = (EnvPtr) new Environment();
OptionDBPtr options;
MINOTAUR_AMPL::AMPLInterfacePtr iface = MINOTAUR_AMPL::AMPLInterfacePtr();
ProblemPtr inst;
SolutionPtr sol, sol2;
double obj_sense =1.0;
// jacobian is read from AMPL interface and passed on to branch-and-bound
JacobianPtr jPtr;
// hessian is read from AMPL interface and passed on to branch-and-bound
MINOTAUR_AMPL::AMPLHessianPtr hPtr;
// the branch-and-bound
BranchAndBound *bab = 0;
PresolverPtr pres;
EngineFactory *efac;
const std::string me("qg: ");
BrancherPtr br = BrancherPtr(); // NULL
PCBProcessorPtr nproc;
NodeIncRelaxerPtr nr;
//handlers
HandlerVector handlers;
IntVarHandlerPtr vHand;
LinearHandlerPtr lHand;
QGAdvHandlerPtr qgHand;
RCHandlerPtr rcHand;
//engines
EnginePtr nlp_e;
EnginePtr proj_nlp_e;
EnginePtr l1proj_nlp_e;
LPEnginePtr lin_e; // lp engine
LoggerPtr logger_ = (LoggerPtr) new Logger(LogInfo);
VarVector *orig_v=0;
int err = 0;
// start timing.
env->startTimer(err);
if (err) {
goto CLEANUP;
}
setInitialOptions(env);
iface = (MINOTAUR_AMPL::AMPLInterfacePtr)
new MINOTAUR_AMPL::AMPLInterface(env, "qg");
// parse options
env->readOptions(argc, argv);
options = env->getOptions();
options->findString("interface_type")->setValue("AMPL");
if (0!=showInfo(env)) {
goto CLEANUP;
}
loadProblem(env, iface, inst, &obj_sense);
// Initialize engines
nlp_e = getNLPEngine(env, inst); //Engine for Original problem
efac = new EngineFactory(env);
lin_e = efac->getLPEngine(); // lp engine
delete efac;
// get presolver.
orig_v = new VarVector(inst->varsBegin(), inst->varsEnd());
pres = presolve(env, inst, iface->getNumDefs(), handlers);
handlers.clear();
if (Finished != pres->getStatus() && NotStarted != pres->getStatus()) {
env->getLogger()->msgStream(LogInfo) << me
<< "status of presolve: "
<< getSolveStatusString(pres->getStatus()) << std::endl;
writeSol(env, orig_v, pres, SolutionPtr(), pres->getStatus(), iface);
writeBnbStatus(env, bab, obj_sense);
goto CLEANUP;
}
if (options->findBool("solve")->getValue()==true) {
if (true==options->findBool("use_native_cgraph")->getValue()) {
inst->setNativeDer();
}
// Initialize the handlers for branch-and-cut
lHand = (LinearHandlerPtr) new LinearHandler(env, inst);
lHand->setModFlags(false, true);
handlers.push_back(lHand);
assert(lHand);
vHand = (IntVarHandlerPtr) new IntVarHandler(env, inst);
vHand->setModFlags(false, true);
handlers.push_back(vHand);
assert(vHand);
//.........这里部分代码省略.........
示例12: main
int main()
{
// Generate output.
ofstream output;
output.open("numknapcov.txt");
// Generate input.
ifstream input;
input.open("list.txt");
// Check if input is opened succesfully.
if (input.is_open() == false) {
cerr << "Input file read error." << endl;
output << "Input file read error." << endl;
exit(0);
}
/********************************************************************************/
// Headers for output data.
output << "Statistics of knapsack cover cuts applied to root relaxation." << endl;
output << "problem " << "vars " << "cons " << "lincons " << "knapcons " << "knapcov "
<< "knaps " << "totalcuts " << "cuts " << "violknapcuts " << "initobj "
<< "endobj " << "gapclosed " << "timeinit " << "timecut " << "timemod"
<< endl;
/********************************************************************************/
// loop to test all problems in list.txt
while (input.good()) {
// problem name
string pname;
getline(input, pname);
// At the end of file just exit from loop.
if (pname.empty()) {
break;
}
cout << "Problem considered is: " << pname << endl;
// Real stuff begins.
// Ampl interface, jacobian and hessian.
MINOTAUR_AMPL::AMPLInterfacePtr iface = MINOTAUR_AMPL::AMPLInterfacePtr();
JacobianPtr jPtr; //! Jacobian read from AMPL
HessianOfLagPtr hPtr; //! Hessian read from AMPL
// environment, timers and options:
EnvPtr env = (EnvPtr) new Environment();
OptionDBPtr options;
// problem to be solved.
ProblemPtr minlp;
// solver pointers, including status.
FilterSQPEngine e(env);
EngineStatus status;
// Presolver.
PresolverPtr pres;
// give parameters.
UInt argc2 = 2;
std::string arg1 = "bnb";
std::string arg2 = pname;
char** argv2 = new char* [2];
argv2[0] = &arg1[0];
argv2[1] = &arg2[0];
// Default options
env->getOptions()->findBool("presolve")->setValue(false);
env->getOptions()->findBool("use_native_cgraph")->setValue(true);
env->getOptions()->findBool("nl_presolve")->setValue(false);
// parse options
env->readOptions(argc2, argv2);
options = env->getOptions();
options->findString("interface_type")->setValue("AMPL");
// read minlp from AMPL.
iface = (MINOTAUR_AMPL::AMPLInterfacePtr) new MINOTAUR_AMPL::AMPLInterface(env);
minlp = iface->readInstance(pname);
// Timer is obtained.
Timer * timer = env->getNewTimer();
// Nonlinearize objective function.
Bool MIPCONSIDERED = false;
if (MIPCONSIDERED == true) {
ObjectivePtr initobjfun = minlp->getObjective();
if (initobjfun->getObjectiveType() == Maximize) {
cerr << "Objective type is Maximize, change it to Minimize." << endl;
exit(0);
}
LinearFunctionPtr lfinitobj = initobjfun->getLinearFunction();
// NonlinearFunctionPtr nlfobj = (NonlinearFunctionPtr) new NonlinearFunction();
CGraphPtr nlfobj = (CGraphPtr) new CGraph();
logobj(lfinitobj, nlfobj);
FunctionPtr logobjfun = (FunctionPtr) new Function(nlfobj);
ObjectiveType otyp = Minimize;
minlp->changeObj(logobjfun, 0);
}
minlp->calculateSize();
minlp->prepareForSolve();
//.........这里部分代码省略.........
示例13: main
//! main routine implementing outer approximation
int main(int argc, char** argv)
{
//! Declaration of Variables ============================================
//! interface to AMPL (NULL):
MINOTAUR_AMPL::AMPLInterfacePtr iface = MINOTAUR_AMPL::AMPLInterfacePtr();
MINOTAUR_AMPL::JacobianPtr jPtr; //! Jacobian read from AMPL
MINOTAUR_AMPL::HessianOfLagPtr hPtr; //! Hessian read from AMPL
//! environment, timers, options:
EnvPtr env = (EnvPtr) new Environment();
TimerFactory *tFactory = new TimerFactory();
Timer *timer=tFactory->getTimer();
OptionDBPtr options; //! AMPL and MINOTAUR options
//! problem pointers (MINLP, NLP, MILP):
ProblemPtr minlp; //! MINLP instance to be solved
ProblemPtr milp; //! MILP master problem
//! solver pointers, including status
FilterSQPEngine e(env); //! NLP engine: FilterSQP
EngineStatus status;
//! pointers to manipulate variables & constraints
VariablePtr v, objVar; //! variable pointer (objective)
ObjectivePtr objFun; //! remember objective function pt.
//! local variables
Double *x, *xsoln;
Double *lobnd, *upbnd;
Double objfLo = -INFINITY, objfUp = INFINITY, objfNLP, objfMIP;
Double tol = 1E-2;
Int feasibleNLP = 0, iterOA = 1, n;
// ======================================================================
//! start the timer
timer->start();
//! make sure solver is used correctly
if (argc < 2) {
usage();
return -1;
}
//! add AMPL options & flags to environment: flags (options without values)
options = env->getOptions();
add_ampl_flags(options);
env->readOptions(argc, argv); //! parse options
if (!checkUserOK(options,env)) goto CLEANUP; //! check if user needs help
//! read MINLP from AMPL & create Hessian/Jacobian for NLP solves
iface = (MINOTAUR_AMPL::AMPLInterfacePtr) new MINOTAUR_AMPL::AMPLInterface(env);
minlp = iface->readInstance(options->findString("problem_file")->getValue(),false);
jPtr = (MINOTAUR_AMPL::JacobianPtr) new MINOTAUR_AMPL::Jacobian(iface);
hPtr = (MINOTAUR_AMPL::HessianOfLagPtr) new MINOTAUR_AMPL::HessianOfLag(iface);
minlp->setJacobian(jPtr);
minlp->setHessian(hPtr);
//! Display number of constraints and variables, and MINLP problem
minlp->calculateSize();
n = minlp->getNumVars();
std::cout << "No. of vars, cons = " << minlp->getNumVars()
<< minlp->getNumCons() << std::endl;
std::cout << std::endl << "The MINLP problem is: " << std::endl;
minlp->write(std::cout);
//! load the MINLP into the NLP solver (FilterSQP)
e.load(minlp);
//! get initial point & save original bounds
x = new Double[n];
xsoln = new Double[n];
lobnd = new Double[n];
upbnd = new Double[n];
std::copy(iface->getInitialPoint(),iface->getInitialPoint()+n,x);
for (VariableConstIterator i=minlp->varsBegin(); i!=minlp->varsEnd(); ++i) {
v = *i;
lobnd[v->getId()] = v->getLb();
upbnd[v->getId()] = v->getUb();
}
//! initialize the MILP master problem by copying variables & linear c/s
milp = (ProblemPtr) new Problem();
objFun = minlp->getObjective();
objVar = VariablePtr();
initMaster(minlp, milp, objVar, objFun, x);
while ((objfLo <= objfUp)&&(iterOA<4)){
std::cout << "Iteration " << iterOA << std::endl
<< "===============" << std::endl << std::endl;
//! set-up and solve NLP(y) with fixed integers
solveNLP(minlp, e, x, objfNLP, feasibleNLP, n);
std::cout << "Solved NLP " << iterOA << " objective = " << objfNLP
<< " NLPfeasible = " << feasibleNLP << std::endl;
if (feasibleNLP && (objfNLP-tol < objfUp)) {
objfUp = objfNLP - tol;
std::copy(x,x+n,xsoln);
}
//.........这里部分代码省略.........