quaduest.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 QUADUEST_H
00008 #define QUADUEST_H
00009 
00010 #include "standard.h"
00011 #include "func.h"
00012 #include "sampling.h"
00013 #include "decomp.h"
00014 #include "MINLPData.h"
00015 #include "polynom.h"
00016 
00059 class QuadraticUnderestimator {
00060         private:
00061                 Pointer<Param> param;
00062                 
00063                 double eps;
00064                 int iter_max;
00065                 double time_max;
00066 
00067                 Sampling sampling;
00068                 Sampling_Vertices sampling_vertices;
00069                 Sampling_Minimizer sampling_minimizer;
00070                 int sampling_initial; // should we add the initial point
00071                 
00072                 multimap<double, dvector> sample_set;
00073                 multimap<double, dvector>::iterator enforce_tightness;
00074 
00075                 list<MultiIndex> multiindices;
00076                 list<Monom> monoms;
00077 
00078                 Decomposition decomp;
00079 
00080                 void new_multiindices(const SparsityInfo& si, int n);
00081                 
00082                 void new_sampleset(const dvector& lower, const dvector& upper);
00083                 void check_for_nan(const Func& f);
00084                 multimap<double, dvector>::iterator add_point_to_sampleset(const dvector& point);
00085                 multimap<double, dvector>::iterator add_minimizer_to_sample(Pointer<Func> f, const dvector& lower, const dvector& upper, dvector& start);
00086                 
00089                 void quadratic_underestimator(SparseMatrix2& A, SparseVector<double>& b, double& c, const Pointer<Func>& f, ivector& indices, const Pointer<dvector>& lower, const Pointer<dvector>& upper);
00090                 
00091                 bool do_locmin(BoxLocOpt& locminsolver, const Pointer<Func>& f, dvector& start, double& f_val, double& viol1, double& viol2, double& scale2, dvector& b1);
00092                 
00093         public:
00094                 SparseVector<double> c_add1, c_add2;
00095                 
00096                 double U3_time, locopt_time, max_abscoeff;
00097                 int max_locmin, nr_estimators;
00098 
00099                 QuadraticUnderestimator(Pointer<Param> param_=NULL);
00100 
00101                 void quadratic_underestimator(MinlpProblem& prob, MINLPData& minlpdata, ivector& ineq_index, SparseVector<double>& obj_c_add, vector<SparseVector<double> >& con_c_add);
00102                 Pointer<SepQcFunc> quadratic_underestimator(Pointer<SepQcFunc> f, bool eq, dvector& lower, dvector& upper, dvector& primal);
00103 };
00104 
00105 #endif

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