node.h

Go to the documentation of this file.
00001 // Copyright (C) 2006 Ivo Nowak and Stefan Vigerske
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // Author: Stefan Vigerske
00006 
00007 #ifndef NODE_H
00008 #define NODE_H
00009 
00010 #include "standard.h"
00011 #include "problem.h"
00012 #include "minlpopt.h"
00013 #include "bcp.h"
00014 
00015 class ColumnGenerator;
00016 class RMPManager;
00017 class LinearRelax;
00018 class LinearRelaxSolverGeneral;
00019 class LinearRelaxSolverMIP;
00020 class LagHeu;
00021 class LagHeu1;
00022 class LagHeu_SimAnnealing;
00023 class LagHeu2;
00024 class LagHeu2b;
00025 
00029 class MinlpNode {
00030         friend class MinlpBCP;
00031         friend class ColumnGenerator;
00032         friend class RMPManager;
00033         friend class LinearRelax;
00034         friend class LinearRelaxSolverGeneral;
00035         friend class LinearRelaxSolverMIP;
00036         friend class RelaxationSolver;
00037         friend class LagHeu;
00038         friend class LagHeu1;
00039         friend class LagHeu_SimAnnealing;
00040         friend class LagHeu2;
00041         friend class LagHeu2b;
00042 
00043   private:
00046                 double low_bound;
00047 
00048                 bool update_subdiv_bound_called;
00049 
00052 //              map<int, set<int> > bcp_fixed_var;
00053 
00056 //              vector<list<Pointer<SepQcFunc> > > part_con;
00057 
00060                 dvector lower, upper;
00061 
00065                 set<int> fix_branch_var;
00066 
00070                 vector<dvector> lagprob_solutions;
00071 
00075                 dvector ref_point;
00076 
00079                 dvector dual_point;
00080 
00082                 dvector yz_RMP;
00083 
00085                 vector<list<list<ExtremePoint>::iterator> > i_ExtremePoints;
00088                 vector<list<ExtremePoint>::iterator> i_ExtremePoints_limit;
00089 
00090         public:
00096                 MinlpNode(const dvector& lower_, const dvector& upper_/*, const map<int, set<int> >& already_fixed/*=map<int, set<int> >*/);
00097 
00101                 MinlpNode(MinlpNode& node);
00102 
00108                 pair<double, pair<int,int> > bcp_rho(const dvector& x, const vector<ivector>& block, const vector<bool>& discr);
00109 
00116                 bool inside_part_set(dvector &point, int k, const vector<ivector>& block);
00117 
00122                 set<SolCandidate>::const_iterator outside_part_set(const set<SolCandidate>& points);
00123 
00126                 double key() { return low_bound; }
00127                 
00131                 double key(const vector<int>& i_discr);
00132 
00133 };
00134 
00135 //------------------------------------------
00136 
00137 #endif

Generated on Wed Oct 22 03:12:39 2008 for LaGO by  doxygen 1.4.7