# CouenneExprTrilinear.hpp

Go to the documentation of this file.

    00001 /* $Id: CouenneExprTrilinear.hpp 490 2011-01-14 16:07:12Z pbelotti $
    00002  *
    00003  * Name:    CouenneExprTrilinear.hpp
    00004  * Author:  Pietro Belotti
    00005  * Purpose: definition of product of three terms
    00006  *
    00007  * This file is licensed under the Eclipse Public License (EPL)
    00008  */
    00009
    00010 #ifndef COUENNE_EXPRTRILINEAR_H
    00011 #define COUENNE_EXPRTRILINEAR_H
    00012
    00013 #include <vector>
    00014
    00015 #include "CouenneExprMul.hpp"
    00016
    00017 namespace Couenne {
    00018
    00020
    00021   class exprTrilinear: public exprMul {
    00022
    00023   public:
    00024
    00026     exprTrilinear (expression **, int);
    00027
    00029     exprTrilinear (expression *, expression *, expression *);
    00030
    00032     expression *clone (Domain *d = NULL) const
    00033     {return new exprTrilinear (clonearglist (d), nargs_);}
    00034
    00036     CouNumber gradientNorm (const double *x);
    00037
    00039     virtual void getBounds (expression *&, expression *&);
    00040
    00042     virtual void getBounds (CouNumber &lb, CouNumber &ub);
    00043
    00045     void generateCuts (expression *w, //const OsiSolverInterface &si,
    00046                        OsiCuts &cs, const CouenneCutGenerator *cg,
    00047                        t_chg_bounds * = NULL, int = -1,
    00048                        CouNumber = -COUENNE_INFINITY,
    00049                        CouNumber =  COUENNE_INFINITY);
    00050
    00052     virtual enum expr_type code ()
    00053     {return COU_EXPRTRILINEAR;}
    00054
    00056     bool impliedBound (int, CouNumber *, CouNumber *, t_chg_bounds *,
    00057                        enum Couenne::expression::auxSign = Couenne::expression::AUX_EQ);
    00058
    00061     virtual CouNumber selectBranch (const CouenneObject *obj,
    00062                                     const OsiBranchingInformation *info,
    00063                                     expression * &var,
    00064                                     double * &brpts,
    00065                                     double * &brDist, // distance of current LP
    00066                                     // point to new convexifications
    00067                                     int &way);
    00068
    00070     virtual void closestFeasible (expression *varind,
    00071                                   expression *vardep,
    00072                                   CouNumber &left,
    00073                                   CouNumber &right) const;
    00074   };
    00075 }
    00076
    00077 #endif

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines