00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "CouenneProblem.hpp"
00012
00013 #include "CouenneTypes.hpp"
00014
00015 #include "exprSum.hpp"
00016 #include "exprMul.hpp"
00017 #include "exprClone.hpp"
00018 #include "exprGroup.hpp"
00019
00020
00021 CouenneProblem *readProblem (Bonmin::BabSetupBase *base = NULL,
00022 JnlstPtr jnlst = NULL
00023 )
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 {
00063 x [i] = 0.;
00064 lb [i] = -COUENNE_INFINITY;
00065 ub [i] = COUENNE_INFINITY;
00066 }
00067
00068
00069 p -> domain () -> push (n_var, x, lb, ub);
00070
00071 free (x);
00072 free (lb);
00073 free (ub);
00074
00075
00076
00077 for (register int i=n_var; i--;)
00078 {
00079 p -> Lb (i) = - COUENNE_INFINITY;
00080 p -> Ub (i) = COUENNE_INFINITY;
00081 p -> X (i) = 0;
00082 }
00083
00084
00085
00086 return p;
00087 }