本文整理汇总了C++中IloEnv::end方法的典型用法代码示例。如果您正苦于以下问题:C++ IloEnv::end方法的具体用法?C++ IloEnv::end怎么用?C++ IloEnv::end使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IloEnv
的用法示例。
在下文中一共展示了IloEnv::end方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: solveILP
SolutionILP solveILP(const ILPModel& m, bool verbose, double gap, double timeLimit, int numberOfThreads, int) {
IloEnv env;
SolutionILP solution;
try {
IloModel model(env);
IloObjective obj(env);
IloNumVarArray var(env);
IloRangeArray con(env);
generateProblem(m, model, var, con);
IloCplex cplex(model);
cplex.setParam(IloCplex::Threads, numberOfThreads);
if (!verbose)
cplex.setOut(env.getNullStream());
if (gap != 0.0)
cplex.setParam(IloCplex::EpGap, gap);
if (timeLimit != 0.0)
cplex.setParam(IloCplex::TiLim, timeLimit);
cplex.solve();
switch (cplex.getStatus()) {
case IloAlgorithm::Optimal:
solution.status = ILP_OPTIMAL;
break;
case IloAlgorithm::Feasible:
solution.status = ILP_FEASIBLE;
break;
case IloAlgorithm::Infeasible:
solution.status = ILP_INFEASIBLE;
break;
case IloAlgorithm::Unbounded:
solution.status = ILP_UNBOUNDED;
break;
default:
solution.status = ILP_UNKNOWN;
}
if (solution.status == ILP_OPTIMAL || solution.status == ILP_FEASIBLE) {
IloNumArray sol(env);
cplex.getValues(sol, var);
solution.criterion = cplex.getObjValue();
for (long v = 0; v < sol.getSize(); ++v)
solution.solution.push_back(sol[v]);
}
solution.bound = cplex.getBestObjValue(); // Can throw IloException!
env.end();
} catch (IloException& e) {
env.end();
throw ILPSolverException(caller(), e.getMessage());
} catch (...) {
env.end();
throw_with_nested(ILPSolverException(caller(), "Error during solving the ILP problem!"));
}
return solution;
}
示例2: model
int
main (void)
{
IloEnv env;
int retval = -1;
try {
// Create the model.
IloModel model(env);
IloCplex cplex(env);
IloObjective obj(env);
IloNumVarArray vars(env);
IloRangeArray rngs(env);
IloIntArray cone(env);
createmodel(model, obj, vars, rngs, cone);
// Extract model.
cplex.extract(model);
// Solve the problem. If we cannot find an _optimal_ solution then
// there is no point in checking the KKT conditions and we throw an
// exception.
cplex.setParam(IloCplex::Param::Barrier::QCPConvergeTol, CONVTOL);
if ( !cplex.solve() || cplex.getStatus() != IloAlgorithm::Optimal )
throw string("Failed to solve problem to optimality");
// Test the KKT conditions on the solution.
if ( !checkkkt (cplex, obj, vars, rngs, cone, TESTTOL) ) {
env.error() << "Testing of KKT conditions failed." << endl;
}
else {
env.out() << "Solution status: " << cplex.getStatus() << endl;
env.out() << "KKT conditions are satisfied." << endl;
retval = 0;
}
env.end();
} catch (IloException &e) {
cerr << "IloException: " << e << endl;
if (env.getImpl())
env.end();
::abort();
} catch (string& e) {
cerr << e << endl;
if (env.getImpl())
env.end();
::abort();
}
return retval;
}
示例3: main
int main(int , const char * []){
IloEnv env;
try {
IloModel model(env);
IloIntVar Belgium(env, 0, 3), Denmark(env, 0, 3),
France(env, 0, 3), Germany(env, 0, 3),
Luxembourg(env, 0, 3), Netherlands(env, 0, 3);
model.add(Belgium != France);
model.add(Belgium != Germany);
model.add(Belgium != Netherlands);
model.add(Belgium != Luxembourg);
model.add(Denmark == Germany);
model.add(France != Germany);
model.add(France != Luxembourg);
model.add(Germany != Luxembourg);
model.add(Germany != Netherlands);
IloCP cp(model);
cp.setParameter(IloCP::LogVerbosity, IloCP::Quiet);
if (cp.solve()){
cp.out() << std::endl << cp.getStatus() << " Solution" << std::endl;
cp.out() << "Belgium: " << Names[cp.getValue(Belgium)] << std::endl;
cp.out() << "Denmark: " << Names[cp.getValue(Denmark)] << std::endl;
cp.out() << "France: " << Names[cp.getValue(France)] << std::endl;
cp.out() << "Germany: " << Names[cp.getValue(Germany)] << std::endl;
cp.out() << "Luxembourg: " << Names[cp.getValue(Luxembourg)] << std::endl;
cp.out() << "Netherlands: " << Names[cp.getValue(Netherlands)] << std::endl;
}
}
catch (IloException& ex) {
env.out() << "Error: " << ex << std::endl;
}
env.end();
return 0;
}
示例4: model
int
main (void) {
IloEnv env;
try {
IloModel model(env);
IloNumVarArray var(env);
IloRangeArray con(env);
populatebyrow (model, var, con);
IloCplex cplex(model);
cplex.solve();
env.out() << "Solution status = " << cplex.getStatus() << endl;
env.out() << "Solution value = " << cplex.getObjValue() << endl;
IloNumArray vals(env);
cplex.getValues(vals, var);
env.out() << "Values = " << vals << endl;
cplex.getSlacks(vals, con);
env.out() << "Slacks = " << vals << endl;
cplex.exportModel("mipex1.lp");
}
catch (IloException& e) {
cerr << "Concert exception caught: " << e << endl;
}
catch (...) {
cerr << "Unknown exception caught" << endl;
}
env.end();
return 0;
} // END main
示例5: solveSE
int solveSE(const Problem<double>& P,Solution<double,double> &s,const std::vector<int>& config) {
try {
IloNum start,time_exec;
const int n = P.nbTask;
// create cplex model
IloEnv env;
IloModel model(env);
IloNumVarMatrix x(env,n),y(env,n),b(env,n), w(env,n);
IloNumVarArray t(env, 2*n, 0, P.D, ILOFLOAT);
createModel(P,env,model,t,x,y,b,w,config);
IloCplex cplex(model);
setCplexParam(cplex,env,time_limit);
start = cplex.getCplexTime();
IloInt cpt=0;
cplex.use(getFirstSolInfo(env,cpt,start));
// solve !
if (cplex.solve()) {
time_exec=cplex.getCplexTime()-start;
std::cout << "Final status: \t"<< cplex.getStatus() << " en "
<< time_exec << std::endl;
std:: cout << "Final objective: " << cplex.getObjValue()
<<"\nFinal gap: \t" << cplex.getMIPRelativeGap()
<< std::endl;
modelToSol(P,s,cplex,t,x,y,b);
env.end();
return 0;
}
else if (cplex.getStatus()==IloAlgorithm::Infeasible){
time_exec=cplex.getCplexTime()-start;
std::cout << "status: "<< cplex.getStatus() << " en "
<< time_exec << std::endl;
}
env.end();
return 1;
}
catch (IloException &e) {
std::cout << "Iloexception in solve" << e << std::endl;
e.end();
return 1;
}
catch (...){
std::cout << "Error unknown\n";
return 1;
}
}
示例6: LPsolveSE
int LPsolveSE(const Problem<double>& P,const std::vector<int>& config,int time_limite) {
try{
IloNum start,time_exec;
const int nbTask = P.nbTask;
const int E=2*nbTask;
IloEnv env;
IloModel model(env);
IloNumVarMatrix x(env,nbTask),y(env,nbTask);
IloNumVarMatrix b(env,nbTask), w(env,nbTask);
IloNumVarArray t(env, E, 0, P.D, ILOFLOAT);
// create cplex model
createModel(P,env,model,t,x,y,b,w,config);
for (int i=0;i<nbTask;++i){
for (int e=0;e<E;++e){
model.add(IloConversion(env,x[i][e],ILOFLOAT));
model.add(IloConversion(env,y[i][e],ILOFLOAT));
}
}
IloCplex cplex(model);
setCplexParam(cplex,env,time_limite);
start= cplex.getCplexTime();
// solve !
if (cplex.solve()) {
time_exec=cplex.getCplexTime()-start;
std::cout << "Final status: \t"<< cplex.getStatus() << std::endl;
std::cout << "Final time: \t"<< time_exec << std::endl;
std:: cout << "Final objective: " << cplex.getObjValue() <<"\nFinal gap: \t"
<< cplex.getMIPRelativeGap()<< std::endl;
env.end();
return 0;
}
else if (cplex.getStatus()==IloAlgorithm::Infeasible){
time_exec=cplex.getCplexTime()-start;
std::cout << "status: "<< cplex.getStatus() << " en " << time_exec << std::endl;
}
env.end();
return 1;
}
catch (IloException &e){
std::cout << "Iloexception in solve" << e << std::endl;
e.end();
return 1;
}
}
示例7: model
ILOSTLBEGIN
int
main()
{
IloEnv env;
try {
IloModel model(env, "chvatal");
IloNumVarArray x(env, 12, 0.0, 50.0);
model.add(IloMinimize(env, x[0] + x[1] + x[2] + x[3] + x[4] +
x[5] + x[6] + 2*x[10] + 2*x[11] ));
model.add( -x[7]-x[8]-x[9]
== -1);
model.add( x[0] +x[5] +x[7]
== 4);
model.add( x[1] +x[3] +x[6] +x[8]
== 1);
model.add( x[2] +x[4] +x[9]
== 1);
model.add( -x[5]-x[6] -x[10]+x[11]
== -2);
model.add( -x[3]-x[4] +x[10]
== -2);
model.add(-x[0]-x[1]-x[2] -x[11]
== -1);
IloCplex cplex(model);
cplex.setParam(IloCplex::Param::Simplex::Display, 2);
cplex.setParam(IloCplex::Param::RootAlgorithm, IloCplex::Network);
cplex.solve();
cplex.out() << "After network optimization, objective is "
<< cplex.getObjValue() << endl;
model.add(2*x[10] + 5*x[11] == 2);
model.add( x[0] + x[2] + x[5] == 3);
cplex.setParam(IloCplex::Param::RootAlgorithm, IloCplex::Dual);
cplex.solve();
IloNumArray vals(env);
cplex.getValues(vals, x);
cplex.out() << "Solution status " << cplex.getStatus() << endl;
cplex.out() << "Objective value " << cplex.getObjValue() << endl;
cplex.out() << "Solution is: " << vals << endl;
cplex.exportModel("lpex3.lp");
}
catch (IloException& e) {
cerr << "Concert exception caught: " << e << endl;
}
catch (...) {
cerr << "Unknown exception caught" << endl;
}
env.end();
return 0;
} // END main
示例8: main
int main(int, const char * []) {
IloEnv env;
try {
IloIntVarArray x(env);
for (IloInt i = 0; i < 10; i++) {
char name[6];
sprintf(name, "X%ld", i);
x.add(IloIntVar(env, 0, 100 - 2*(i / 2), name));
}
IloModel mdl(env);
mdl.add(IloAllDiff(env, x));
mdl.add(x);
IloIntVarChooser varChooser = ChooseSmallestCentroid(env);
IloIntValueChooser valChooser = ChooseSmallestDistanceFromCentroid(env);
IloSearchPhase sp1(env, x, varChooser, valChooser);
IloIntVarEval varEval = Centroid(env);
IloIntValueEval valEval = DistanceFromCentroid(env);
IloSearchPhase sp2(env, x, IloSelectSmallest(varEval),
IloSelectSmallest(valEval));
// sp2 can have ties as two variable or values could evaluate
// to the same values. sp3 shows how to break these ties
// choosing, for equivalent centroid and distance-to-centroid
// evaluations, the lowest indexed variable in x and the
// lowest value.
IloVarSelectorArray selVar(env);
selVar.add(IloSelectSmallest(varEval));
selVar.add(IloSelectSmallest(IloVarIndex(env, x))); // break ties on index
IloValueSelectorArray selValue(env);
selValue.add(IloSelectSmallest(valEval));
selValue.add(IloSelectSmallest(IloValue(env))); // break ties on smallest
IloSearchPhase sp3(env, x, selVar, selValue);
IloCP cp(mdl);
cp.setParameter(IloCP::Workers, 1);
cp.setParameter(IloCP::SearchType, IloCP::DepthFirst);
cp.setParameter(IloCP::LogPeriod, 1);
cp.out() << "Choosers" << std::endl;
cp.solve(sp1);
cp.out() << cp.domain(x) << std::endl;
cp.out() << "Evaluators" << std::endl;
cp.solve(sp2);
cp.out() << cp.domain(x) << std::endl;
cp.out() << "Evaluators (with tie-break)" << std::endl;
cp.solve(sp3);
cp.out() << cp.domain(x) << std::endl;
cp.end();
} catch (IloException & ex) {
env.out() << "Caught: " << ex << std::endl;
}
env.end();
return 0;
}
示例9: solverIdentification
string solverIdentification() {
IloEnv env;
IloCplex cplex(env);
string identification = "Cplex "+string(cplex.getVersion());
env.end();
return identification;
}
示例10: main
int main(int argc, const char* argv[]){
IloEnv env;
try {
const char* filename = "../../../examples/data/sched_conflict.data";
IloInt failLimit = 10000;
if (argc > 1)
filename = argv[1];
if (argc > 2)
failLimit = atoi(argv[2]);
IloConstraintArray allCts(env);
IloConstraintArray capacityCts(env);
IloConstraintArray precedenceCts(env);
IloModel model = ReadModel(env, filename, capacityCts, precedenceCts);
allCts.add(capacityCts);
allCts.add(precedenceCts);
IloCP cp(model);
cp.setParameter(IloCP::FailLimit, failLimit);
cp.setParameter(IloCP::CumulFunctionInferenceLevel, IloCP::Extended);
cp.setParameter(IloCP::ConflictRefinerOnVariables, IloCP::On);
cp.out() << "Instance \t: " << filename << std::endl;
if (cp.solve()) {
// A solution was found
cp.out() << "Solution found with makespan : " << cp.getObjValue() << std::endl;
} else {
IloInt status = cp.getInfo(IloCP::FailStatus);
if (status != IloCP::SearchHasFailedNormally) {
// No solution found but problem was not proved infeasible
cp.out() << "No solution found but problem was not proved infeasible." << std::endl;
} else {
// Run conflict refiner only if problem was proved infeasible
cp.out() << "Infeasible problem, running conflict refiner ..." << std::endl;
cp.out() << std::endl;
cp.out() << "SCENARIO 1: Basic conflict refiner:" << std::endl;
cp.out() << std::endl;
runBasicConflictRefiner(cp);
cp.setParameter(IloCP::LogVerbosity, IloCP::Quiet);
cp.out() << "SCENARIO 2: Conflict refiner with preference on resource capacity constraints:" << std::endl;
cp.out() << std::endl;
runConflictRefinerWithPreferences(cp, capacityCts, precedenceCts);
cp.out() << "SCENARIO 3: Conflict refiner with preference on precedence constraints:" << std::endl;
cp.out() << std::endl;
runConflictRefinerWithPreferences(cp, precedenceCts, capacityCts);
cp.out() << "SCENARIO 4: Conflict partition:" << std::endl;
cp.out() << std::endl;
runConflictRefinerPartition(cp, allCts);
cp.out() << "SCENARIO 5: All conflicts:" << std::endl;
cp.out() << std::endl;
runConflictRefinerAllConflicts(cp, allCts);
}
}
} catch (IloException& ex) {
env.out() << "Caught: " << ex << std::endl;
}
env.end();
return 0;
}
示例11: ComputeCPLEXRevenue
void Instance::ComputeCPLEXRevenue() {
IloEnv env;
IloInt i, j;
IloModel model(env);
IloInt nbImpressions = num_impressions_;
IloInt nbAdvertisers = num_advertisers_;
NumVarMatrix x(env, nbImpressions);
for(i = 0; i < nbImpressions; i++) {
x[i] = IloNumVarArray(env, nbAdvertisers, 0.0, 1.0, ILOFLOAT);
}
// Add impression constraints.
for(i = 0; i < nbImpressions; i++) {
model.add(IloSum(x[i]) <= 1.0);
}
// Add weighted contraint.
for(j = 0; j < nbAdvertisers; j++) {
IloExpr curr_adv_constraint(env);
for (__gnu_cxx::hash_map<int, long double>::iterator iter = bids_matrix_[j].begin();
iter != bids_matrix_[j].end();
++iter) {
curr_adv_constraint += ((double) iter->second) * ((double) weights_[j]) * x[iter->first][j];
}
model.add(curr_adv_constraint <= ((double) budgets_[j]));
}
IloExpr obj_exp(env);
for(i = 0; i < nbImpressions; i++) {
for(j = 0; j < nbAdvertisers; j++) {
obj_exp += ((double) transpose_bids_matrix_[i][j]) * x[i][j];
}
}
model.add(IloMaximize(env, obj_exp));
obj_exp.end();
IloCplex cplex(env);
cplex.setOut(env.getNullStream());
cplex.extract(model);
// Optimize the problem and obtain solution.
if ( !cplex.solve() ) {
env.error() << "Failed to optimize LP" << endl;
throw(-1);
}
cplex.exportModel("/Users/ciocan/Documents/Google/data/example.lp");
cout << "CPLEX opt is " << cplex.getObjValue() << "\n";
env.end();
}
示例12: main
ILOSTLBEGIN
//typedef IloArray<IloNumArray> TwoDMatrix;
int main(int argc, char **argv)
{
IloEnv env;
try
{
IloNumVar X(env, 0, IloInfinity, ILOFLOAT);
IloNum X_val;
IloNumVar Y(env, 0, 10, ILOINT);
IloNum Y_val;
IloModel model(env);
IloExpr Obj(env);
Obj = 5*X - 3*Y;
model.add(IloMinimize(env,Obj)); // IloMinimize is used for minimization problems
//Alternatively, model.add(IloMinimize(env,Obj)); can be replaced by the following three lines.
//This is useful while iterating in Decomposition Techniques where the objective function is redefined at each iteration
//IloObjective Objective = IloMinimize(env);
//model.add(Objective);
//Objective.setExpr(Obj);
Obj.end();
model.add(X + 2*Y >= 10);
model.add(2*X - Y >= 0);
model.add(X - 3*Y >= -13);
// Optimize
IloCplex cplex(model);
//cplex.setOut(env.getNullStream()); // This is to supress the output of Branch & Bound Tree on screen
//cplex.setWarning(env.getNullStream()); //This is to supress warning messages on screen
cplex.solve();//solving the MODEL
if (cplex.getStatus() == IloAlgorithm::Infeasible) // if the problem is infeasible
{
env.out() << "Problem Infeasible" << endl;
}
X_val = cplex.getValue(X);
Y_val = cplex.getValue(Y);
// Print results
cout<< "Objective Value = " << cplex.getObjValue() << endl;
cout<<"X = "<<X_val<<endl;
cout<<"Y = "<<Y_val<<endl;
}
catch(IloException &e)
{
env.out() << "ERROR: " << e << endl;
}
catch(...)
{
env.out() << "Unknown exception" << endl;
}
env.end();
return 0;
}
示例13: main
int main(int, const char * []) {
IloEnv env;
try {
IloInt i,j;
IloModel model(env);
IloNumExpr cost(env);
IloIntervalVarArray allTasks(env);
IloIntervalVarArray joeTasks(env);
IloIntervalVarArray jimTasks(env);
IloIntArray joeLocations(env);
IloIntArray jimLocations(env);
MakeHouse(model, cost, allTasks, joeTasks, jimTasks, joeLocations,
jimLocations, 0, 0, 120, 100.0);
MakeHouse(model, cost, allTasks, joeTasks, jimTasks, joeLocations,
jimLocations, 1, 0, 212, 100.0);
MakeHouse(model, cost, allTasks, joeTasks, jimTasks, joeLocations,
jimLocations, 2, 151, 304, 100.0);
MakeHouse(model, cost, allTasks, joeTasks, jimTasks, joeLocations,
jimLocations, 3, 59, 181, 200.0);
MakeHouse(model, cost, allTasks, joeTasks, jimTasks, joeLocations,
jimLocations, 4, 243, 425, 100.0);
IloTransitionDistance tt(env, 5);
for (i=0; i<5; ++i)
for (j=0; j<5; ++j)
tt.setValue(i, j, IloAbs(i-j));
IloIntervalSequenceVar joe(env, joeTasks, joeLocations, "Joe");
IloIntervalSequenceVar jim(env, jimTasks, jimLocations, "Jim");
model.add(IloNoOverlap(env, joe, tt));
model.add(IloNoOverlap(env, jim, tt));
model.add(IloMinimize(env, cost));
/* EXTRACTING THE MODEL AND SOLVING. */
IloCP cp(model);
if (cp.solve()) {
cp.out() << "Solution with objective " << cp.getObjValue() << ":" << std::endl;
for (i=0; i<allTasks.getSize(); ++i) {
cp.out() << cp.domain(allTasks[i]) << std::endl;
}
} else {
cp.out() << "No solution found. " << std::endl;
}
} catch (IloException& ex) {
env.out() << "Error: " << ex << std::endl;
}
env.end();
return 0;
}
示例14: model
int
main (int argc, char **argv)
{
char const *vmconfig = NULL;
// Check command line length (exactly two arguments are required).
if ( argc != 3 ) {
usage (argv[0]);
return -1;
}
// Pick up VMC from command line.
vmconfig = argv[1];
// Solve the model.
int exitcode = 0;
IloEnv env;
try {
// Create and read the model.
IloModel model(env);
IloCplex cplex(model);
cplex.importModel(model, argv[2]);
// Load the virtual machine configuration.
// This will force solve() to use parallel distributed MIP.
cplex.readVMConfig(vmconfig);
// Solve the problem and display some results.
if ( cplex.solve() )
env.out() << "Solution value = " << cplex.getObjValue() << endl;
else
env.out() << "No solution" << endl;
env.out() << "Solution status = " << cplex.getStatus() << endl;
// Cleanup.
cplex.end();
model.end();
}
catch (IloException& e) {
cerr << "Concert exception caught: " << e << endl;
exitcode = -1;
}
catch (...) {
cerr << "Unknown exception caught" << endl;
exitcode = -1;
}
env.end();
return exitcode;
} // END main
示例15: main
int main(int argc, const char *argv[]){
IloEnv env;
try {
IloModel model(env);
IloInt nbTransmitters = GetTransmitterIndex(nbCell, 0);
IloIntVarArray freq(env, nbTransmitters, 0, nbAvailFreq - 1);
freq.setNames("freq");
for (IloInt cell = 0; cell < nbCell; cell++)
for (IloInt channel1 = 0; channel1 < nbChannel[cell]; channel1++)
for (IloInt channel2= channel1+1; channel2 < nbChannel[cell]; channel2++)
model.add(IloAbs( freq[GetTransmitterIndex(cell, channel1)]
- freq[GetTransmitterIndex(cell, channel2)] )
>= 16);
for (IloInt cell1 = 0; cell1 < nbCell; cell1++)
for (IloInt cell2 = cell1+1; cell2 < nbCell; cell2++)
if (dist[cell1][cell2] > 0)
for (IloInt channel1 = 0; channel1 < nbChannel[cell1]; channel1++)
for (IloInt channel2 = 0; channel2 < nbChannel[cell2]; channel2++)
model.add(IloAbs( freq[GetTransmitterIndex(cell1, channel1)]
- freq[GetTransmitterIndex(cell2, channel2)] )
>= dist[cell1][cell2]);
// Minimizing the total number of frequencies
IloIntExpr nbFreq = IloCountDifferent(freq);
model.add(IloMinimize(env, nbFreq));
IloCP cp(model);
cp.setParameter(IloCP::CountDifferentInferenceLevel, IloCP::Extended);
cp.setParameter(IloCP::FailLimit, 40000);
cp.setParameter(IloCP::LogPeriod, 100000);
if (cp.solve()) {
for (IloInt cell = 0; cell < nbCell; cell++) {
for (IloInt channel = 0; channel < nbChannel[cell]; channel++)
cp.out() << cp.getValue(freq[GetTransmitterIndex(cell, channel)])
<< " " ;
cp.out() << std::endl;
}
cp.out() << "Total # of sites " << nbTransmitters << std::endl;
cp.out() << "Total # of frequencies " << cp.getValue(nbFreq) << std::endl;
} else
cp.out() << "No solution found." << std::endl;
cp.end();
} catch (IloException & ex) {
env.out() << "Caught: " << ex << std::endl;
}
env.end();
return 0;
}