• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

MP_variable.cpp

Go to the documentation of this file.
00001 // ******************** FlopCpp **********************************************
00002 // File: MP_variable.cpp
00003 // $Id$
00004 // Author: Tim Helge Hultberg (thh@mat.ua.pt)
00005 // Copyright (C) 2003 Tim Helge Hultberg
00006 // All Rights Reserved.
00007 //****************************************************************************
00008 
00009 #include <iostream>
00010 #include <sstream>
00011 using std::cout;
00012 using std::endl;
00013 
00014 #include <OsiSolverInterface.hpp>
00015 #include "MP_variable.hpp"
00016 #include "MP_domain.hpp" 
00017 #include "MP_constant.hpp" 
00018 #include "MP_model.hpp"
00019 using namespace flopc;
00020 
00021  
00022 MP_variable::MP_variable(const MP_set_base &s1, 
00023                          const MP_set_base &s2, 
00024                          const MP_set_base &s3,
00025                          const MP_set_base &s4, 
00026                          const MP_set_base &s5) :
00027   RowMajor(s1.size(),s2.size(),s3.size(),s4.size(),s5.size()),
00028   upperLimit(s1,s2,s3,s4,s5),
00029   lowerLimit(s1,s2,s3,s4,s5),
00030   S1(&s1),S2(&s2),S3(&s3),S4(&s4),S5(&s5),
00031   offset(-1)
00032 {
00033   lowerLimit.initialize(0.0);
00034   upperLimit.initialize(MP_model::getDefaultModel().getInfinity());
00035   type = continuous;
00036 }    
00037 
00038 double MP_variable::level(int lcl_i1, int lcl_i2, int lcl_i3, int lcl_i4, int lcl_i5) { 
00039   return M->Solver->getColSolution()[offset +  f(lcl_i1,lcl_i2,lcl_i3,lcl_i4,lcl_i5)]; 
00040 }  
00041 
00042 void MP_variable::operator()() const {
00043   if (S1!=&MP_set::getEmpty()) cout << i1.evaluate() << " ";
00044   if (S2!=&MP_set::getEmpty()) cout << i2.evaluate() << " ";
00045   if (S3!=&MP_set::getEmpty()) cout << i3.evaluate() << " ";
00046   if (S4!=&MP_set::getEmpty()) cout << i4.evaluate() << " ";
00047   if (S5!=&MP_set::getEmpty()) cout << i5.evaluate() << " ";
00048   cout<<"  "<< M->Solver->getColSolution()[offset +
00049                                            f(i1.evaluate(),
00050                                              i2.evaluate(),
00051                                              i3.evaluate(),
00052                                              i4.evaluate(),
00053                                              i5.evaluate())]<<endl;
00054 }
00055 
00056 void MP_variable::display(const std::string &s) {
00057   cout<<s<<endl;
00058   if (offset >= 0) {
00059     ((*S1)(i1)*(*S2)(i2)*(*S3)(i3)*(*S4)(i4)*(*S5)(i5)).forall(this);
00060   } else {
00061     cout<<"No solution available!"<<endl;
00062   }
00063 }

Generated on Thu Jul 29 2010 20:00:14 for FLOPC++ by  doxygen 1.7.1