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

Generated on 26 Jan 2012 for Couenne by  doxygen 1.6.1