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 CouenneProblem *p = new CouenneProblem (NULL, base, jnlst);
00026
00027
00028
00029
00030
00031
00032
00033
00034 int n_var = 0;
00035
00036
00037 for (int i = 0; i < n_var; i++)
00038 p -> addVariable (false, p -> domain ());
00039
00040
00041 expression *expr = NULL;
00042
00043 p -> addObjective (expr, "min");
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 CouNumber
00056 *x = (CouNumber *) malloc (n_var * sizeof (CouNumber)),
00057 *lb = (CouNumber *) malloc (n_var * sizeof (CouNumber)),
00058 *ub = (CouNumber *) malloc (n_var * sizeof (CouNumber));
00059
00060 for (int i = n_var; i--;) {
00061 x [i] = 0.;
00062 lb [i] = -COUENNE_INFINITY;
00063 ub [i] = COUENNE_INFINITY;
00064 }
00065
00066
00067 p -> domain () -> push (n_var, x, lb, ub);
00068
00069 free (x); free (lb); free (ub);
00070
00071
00072
00073 for (register int i=n_var; i--;) {
00074 p -> Lb (i) = - COUENNE_INFINITY;
00075 p -> Ub (i) = COUENNE_INFINITY;
00076 p -> X (i) = 0;
00077 }
00078
00079
00080
00081 return p;
00082 }