#include <ilcplex/ilocplex.h>
ILOSTLBEGIN

static void
setdata (IloModel model, IloNumVarArray x, IloRangeArray c)
{
   IloEnv env = model.getEnv();

   x.add(IloNumVar(env, 0.0, 18.0, "x1"));
   x.add(IloBoolVar(env, "x2"));
   x.add(IloNumVar(env, 2.0, 11.0,"x3"));
   x.add(IloBoolVar(env, "x4"));
   x.add(IloIntVar(env, 4.0, 16.0, "x5"));
   model.add(IloMaximize(env, 3*x[0] + 5 * x[1]-6*x[2] + 2*x[3] -x[4] ));

   c.add( x[0]+ 5*x[1] + 7*x[2] + 2*x[3] + 3*x[4] <= 96);
   c.add( 4*x[0]+ 2*x[1] + 6*x[2] + 1*x[3] + 4*x[4] <= 68);
   model.add(c);
}
 
int
main (void) {
   IloEnv env;
   try {
      IloModel model(env);

      IloNumVarArray var(env);
      IloRangeArray con(env);
      setdata (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("pl.lp");
   }
   catch (IloException& e) {
      cerr << "Concert exception caught: " << e << endl;
   }
   catch (...) {
      cerr << "Unknown exception caught" << endl;
   }

   env.end();
   return 0;

}  
