00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "CouenneProblem.hpp"
00013
00014 #include "CouenneTypes.hpp"
00015
00016 #include "exprSum.hpp"
00017 #include "exprMul.hpp"
00018 #include "exprClone.hpp"
00019 #include "exprGroup.hpp"
00020
00021
00022 CouenneProblem *readProblem (Bonmin::BabSetupBase *base = NULL,
00023 JnlstPtr jnlst = NULL
00024 ) {
00025
00026 CouenneProblem *p = new CouenneProblem (NULL, base, jnlst);
00027
00028
00029
00030
00031
00032
00033
00034
00035 int n_var = 0;
00036
00037
00038 for (int i = 0; i < n_var; i++)
00039 p -> addVariable (false, p -> domain ());
00040
00041
00042 expression *expr = NULL;
00043
00044 p -> addObjective (expr, "min");
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056 CouNumber
00057 *x = (CouNumber *) malloc (n_var * sizeof (CouNumber)),
00058 *lb = (CouNumber *) malloc (n_var * sizeof (CouNumber)),
00059 *ub = (CouNumber *) malloc (n_var * sizeof (CouNumber));
00060
00061 for (int i = n_var; i--;) {
00062 x [i] = 0.;
00063 lb [i] = -COUENNE_INFINITY;
00064 ub [i] = COUENNE_INFINITY;
00065 }
00066
00067
00068 p -> domain () -> push (n_var, x, lb, ub);
00069
00070 free (x); free (lb); free (ub);
00071
00072
00073
00074 for (register int i=n_var; i--;) {
00075 p -> Lb (i) = - COUENNE_INFINITY;
00076 p -> Ub (i) = COUENNE_INFINITY;
00077 p -> X (i) = 0;
00078 }
00079
00080
00081
00082 return p;
00083 }