SmiSmpsIO.hpp
Go to the documentation of this file.
1 // Copyright (C) 2003, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 
4 #ifndef SmiSmpsIO_HPP
5 #define SmiSmpsIO_HPP
6 
7 #if defined(_MSC_VER)
8 // Turn off compiler warning about long names
9 # pragma warning(disable:4786)
10 #endif
11 
12 #include "CoinMpsIO.hpp"
13 #include "CoinFileIO.hpp"
14 #include "CoinFinite.hpp"
15 #include "SmiScnModel.hpp"
16 #include "SmiScnData.hpp"
17 #include "SmiScenarioTree.hpp"
18 
19 #include <vector>
20 #include <map>
21 #include <string>
22 
23 using namespace std;
24 
25 
26 // sections
34 };
35 
39 };
40 
42 public CoinMpsCardReader
43 {
44 public:
45  SmiSectionType nextSmpsField ( );
46  SmiSectionType whichSmpsSection(){return smiSection_;}
47 
48  SmiSmpsType whichSmpsType() {return smiSmpsType_;}
49 
50  inline const char *periodName ( ) const {return periodName_;}
51  inline const char *scenarioNew ( ) const {return columnName_;}
52  inline const char *scenarioAnc ( ) const {return rowName_;}
53 
54  inline double getProb(){ return prob_;}
55 
56  inline void setCoreCombineRule(SmiCoreCombineRule *r){combineRule_=r;combineRuleSet=true;}
57  inline SmiCoreCombineRule *getCoreCombineRule() { return combineRule_;}
58 
61  SmiSmpsCardReader( CoinFileInput *input, CoinMpsIO * reader ):CoinMpsCardReader (input,reader ),
62  combineRuleSet(false),prob_(0.0){}
63 
65 private:
67  char periodName_[COIN_MAX_FIELD_LENGTH];
68  float fvalue_;
73  double prob_;
74 };
75 
76 class SmiSmpsIO:
77 public CoinMpsIO
78 {
79 public:
80  SmiCoreData * readTimeFile(SmiScnModel *smi,const char *c,const char *ext="time");
81  int readStochFile(SmiScnModel *smi,SmiCoreData *core, const char *c,const char *ext="stoch");
82 
83  inline void setCoreCombineRule(SmiCoreCombineRule *r){combineRule_=r; combineRuleSet=true;}
84  inline SmiCoreCombineRule *getCoreCombineRule() { return combineRule_;}
85  inline int getNumStages(){ return nstag_;}
86  inline int *getColumnStages(){ return cstag_;}
87  inline int *getRowStages(){ return rstag_;}
88 
89  inline void setSolverInfinity(double solverInf) { solverInf_ = solverInf; }
90  inline double getSolverInfinity() const { return solverInf_; }
91 
92  void writeSmps(const char* filename, bool winFileExtensions = false, bool strictFormat = true);
93 public:
94  SmiSmpsIO():CoinMpsIO(),nstag_(0),cstag_(NULL),rstag_(NULL),solverInf_(COIN_DBL_MAX),iftime(false),ifstoch(false),smpsCardReader_(NULL),combineRule_(NULL),combineRuleSet(false),core(NULL),tree(NULL),periodMap_(),scenarioMap_() {}
95  SmiSmpsIO(SmiCoreData * core, SmiScenarioTree<SmiScnNode *> * smiTree):CoinMpsIO(),nstag_(0),cstag_(NULL),rstag_(NULL),solverInf_(COIN_DBL_MAX),iftime(false),ifstoch(false),smpsCardReader_(NULL),combineRule_(NULL),combineRuleSet(false),core(core),tree(smiTree),periodMap_(),scenarioMap_() {}
96 
97  ~SmiSmpsIO(){delete [] cstag_;delete[] rstag_;delete smpsCardReader_;}
98 private:
107  void writeCoreFile(const char* filename, const char* extension, const bool strictFormat);
108 
117  void writeTimeFile(const char* filename, const char* extension, const bool strictFormat);
118 
126  void writeStochFile(const char* filename, const char* extension, const bool strictFormat);
127 
131  void writeScenarioToStochFile(std::ostringstream& stream, SmiTreeNode<SmiScnNode *> * node, int scenario, bool strictFormat);
132 
133  std::string getModProblemName(); // get the (probably modified) problem name
134 
135  int nstag_;
136  int *cstag_;
137  int *rstag_;
138  double solverInf_;
139 
140  bool iftime,ifstoch;
144 
147 
148  typedef std::map<string,int> StringIntMap;
151 
152 };
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 #endif //#define SmiSmpsIO_HPP
SmiCoreCombineRule * getCoreCombineRule()
Definition: SmiSmpsIO.hpp:84
void setCoreCombineRule(SmiCoreCombineRule *r)
Definition: SmiSmpsIO.hpp:83
std::map< string, int > StringIntMap
Definition: SmiSmpsIO.hpp:148
double getSolverInfinity() const
Definition: SmiSmpsIO.hpp:90
const char * scenarioAnc() const
Definition: SmiSmpsIO.hpp:52
SmiCoreCombineRule * combineRule_
Definition: SmiSmpsIO.hpp:71
void setSolverInfinity(double solverInf)
Definition: SmiSmpsIO.hpp:89
StringIntMap periodMap_
Definition: SmiSmpsIO.hpp:149
SmiSectionType whichSmpsSection()
Definition: SmiSmpsIO.hpp:46
const char * periodName() const
Definition: SmiSmpsIO.hpp:50
SmiScnModel: COIN-SMI Scenario Model Class.
Definition: SmiScnModel.hpp:49
SmiSmpsCardReader(CoinFileInput *input, CoinMpsIO *reader)
Constructor expects file to be open This one takes gzFile if fp null.
Definition: SmiSmpsIO.hpp:61
int * rstag_
Definition: SmiSmpsIO.hpp:137
bool iftime
Definition: SmiSmpsIO.hpp:140
void setCoreCombineRule(SmiCoreCombineRule *r)
Definition: SmiSmpsIO.hpp:56
StringIntMap scenarioMap_
Definition: SmiSmpsIO.hpp:150
SmiSectionType
Definition: SmiSmpsIO.hpp:27
double getProb()
Definition: SmiSmpsIO.hpp:54
int * getRowStages()
Definition: SmiSmpsIO.hpp:87
double solverInf_
Definition: SmiSmpsIO.hpp:138
SmiScenarioTree< SmiScnNode * > * tree
Definition: SmiSmpsIO.hpp:146
int getNumStages()
Definition: SmiSmpsIO.hpp:85
SmiSectionType smiSection_
Definition: SmiSmpsIO.hpp:69
#define COIN_MAX_FIELD_LENGTH
Definition: CoinMpsIO.hpp:35
SmiSmpsType
Definition: SmiSmpsIO.hpp:36
bool combineRuleSet
Definition: SmiSmpsIO.hpp:143
SmiSmpsIO(SmiCoreData *core, SmiScenarioTree< SmiScnNode * > *smiTree)
Definition: SmiSmpsIO.hpp:95
int * cstag_
Definition: SmiSmpsIO.hpp:136
Abstract base class for file input classes.
Definition: CoinFileIO.hpp:40
SmiSmpsType whichSmpsType()
Definition: SmiSmpsIO.hpp:48
SmiCoreCombineRule * getCoreCombineRule()
Definition: SmiSmpsIO.hpp:57
This deals with combining Core and Stochastic data.
const double COIN_DBL_MAX
Definition: CoinFinite.hpp:18
SmiCoreCombineRule * combineRule_
Definition: SmiSmpsIO.hpp:142
SmiSmpsCardReader * smpsCardReader_
Definition: SmiSmpsIO.hpp:141
SmiSmpsType smiSmpsType_
Definition: SmiSmpsIO.hpp:70
const char * scenarioNew() const
Definition: SmiSmpsIO.hpp:51
Very simple code for reading MPS data.
Definition: CoinMpsIO.hpp:90
SmiCoreData * core
Definition: SmiSmpsIO.hpp:145
MPS IO Interface.
Definition: CoinMpsIO.hpp:401
int * getColumnStages()
Definition: SmiSmpsIO.hpp:86