FLOPC++
MP_variable.cpp
Go to the documentation of this file.
1 // ******************** FlopCpp **********************************************
2 // File: MP_variable.cpp
3 // $Id$
4 // Author: Tim Helge Hultberg (thh@mat.ua.pt)
5 // Copyright (C) 2003 Tim Helge Hultberg
6 // All Rights Reserved.
7 //****************************************************************************
8 
9 #include <iostream>
10 #include <sstream>
11 using std::cout;
12 using std::endl;
13 
14 #include <OsiSolverInterface.hpp>
15 #include "MP_variable.hpp"
16 #include "MP_domain.hpp"
17 #include "MP_constant.hpp"
18 #include "MP_model.hpp"
19 using namespace flopc;
20 
21 
23  const MP_set_base &s2,
24  const MP_set_base &s3,
25  const MP_set_base &s4,
26  const MP_set_base &s5) :
27  RowMajor(s1.size(),s2.size(),s3.size(),s4.size(),s5.size()),
28  upperLimit(s1,s2,s3,s4,s5),
29  lowerLimit(s1,s2,s3,s4,s5),
30  S1(&s1),S2(&s2),S3(&s3),S4(&s4),S5(&s5),
31  offset(-1)
32 {
35  type = continuous;
36 }
37 
38 double MP_variable::level(int lcl_i1, int lcl_i2, int lcl_i3, int lcl_i4, int lcl_i5) {
39  return M->Solver->getColSolution()[offset + f(lcl_i1,lcl_i2,lcl_i3,lcl_i4,lcl_i5)];
40 }
41 
43  if (S1!=&MP_set::getEmpty()) cout << i1.evaluate() << " ";
44  if (S2!=&MP_set::getEmpty()) cout << i2.evaluate() << " ";
45  if (S3!=&MP_set::getEmpty()) cout << i3.evaluate() << " ";
46  if (S4!=&MP_set::getEmpty()) cout << i4.evaluate() << " ";
47  if (S5!=&MP_set::getEmpty()) cout << i5.evaluate() << " ";
48  cout<<" "<< M->Solver->getColSolution()[offset +
49  f(i1.evaluate(),
50  i2.evaluate(),
51  i3.evaluate(),
52  i4.evaluate(),
53  i5.evaluate())]<<endl;
54 }
55 
56 void MP_variable::display(const std::string &s) {
57  cout<<s<<endl;
58  if (offset >= 0) {
59  ((*S1)(i1)*(*S2)(i2)*(*S3)(i3)*(*S4)(i4)*(*S5)(i5)).forall(this);
60  } else {
61  cout<<"No solution available!"<<endl;
62  }
63 }