Changeset 1063:1782aa72495a in lemon-main
- Timestamp:
- 07/20/12 17:09:01 (12 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- lemon
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/cplex.cc
r1016 r1063 492 492 _message_enabled ? CPX_ON : CPX_OFF); 493 493 } 494 495 void CplexBase::_write(std::string file, std::string format) const 496 { 497 if(format == "MPS" || format == "LP") 498 CPXwriteprob(cplexEnv(), cplexLp(), file.c_str(), format.c_str()); 499 else if(format == "SOL") 500 CPXsolwrite(cplexEnv(), cplexLp(), file.c_str()); 501 else throw UnsupportedFormatError(format); 502 } 503 504 494 505 495 506 // CplexLp members -
lemon/cplex.h
r746 r1063 151 151 bool _message_enabled; 152 152 153 void _write(std::string file, std::string format) const; 154 153 155 public: 154 156 … … 171 173 const cpxlp* cplexLp() const { return _prob; } 172 174 175 #ifdef DOXYGEN 176 /// Write the problem or the solution to a file in the given format 177 178 /// This function writes the problem or the solution 179 /// to a file in the given format. 180 /// Trying to write in an unsupported format will trigger 181 /// \ref UnsupportedFormatError. 182 /// \param file The file path 183 /// \param format The output file format. 184 /// Supportted formats are "MPS", "LP" and "SOL". 185 void write(std::string file, std::string format = "MPS") const {} 186 #endif 187 173 188 }; 174 189 -
lemon/glpk.cc
r989 r1063 581 581 break; 582 582 } 583 } 584 585 void GlpkBase::_write(std::string file, std::string format) const 586 { 587 if(format == "MPS") 588 glp_write_mps(lp, GLP_MPS_FILE, 0, file.c_str()); 589 else if(format == "LP") 590 glp_write_lp(lp, 0, file.c_str()); 591 else throw UnsupportedFormatError(format); 583 592 } 584 593 … … 999 1008 const char* GlpkMip::_solverName() const { return "GlpkMip"; } 1000 1009 1010 1011 1001 1012 } //END OF NAMESPACE LEMON -
lemon/glpk.h
r877 r1063 116 116 virtual void _messageLevel(MessageLevel level); 117 117 118 virtual void _write(std::string file, std::string format) const; 119 118 120 private: 119 121 … … 145 147 int lpxCol(Col c) const { return cols(id(c)); } 146 148 149 #ifdef DOXYGEN 150 /// Write the problem or the solution to a file in the given format 151 152 /// This function writes the problem or the solution 153 /// to a file in the given format. 154 /// Trying to write in an unsupported format will trigger 155 /// \ref UnsupportedFormatError. 156 /// \param file The file path 157 /// \param format The output file format. 158 /// Supportted formats are "MPS" and "LP". 159 void write(std::string file, std::string format = "MPS") const {} 160 #endif 161 147 162 }; 148 163 -
lemon/lp_base.h
r989 r1063 1008 1008 public: 1009 1009 1010 ///\e 1011 class UnsupportedFormatError : public Exception 1012 { 1013 std::string _format; 1014 mutable std::string _what; 1015 public: 1016 explicit UnsupportedFormatError(std::string format) throw() 1017 : _format(format) { } 1018 virtual ~UnsupportedFormatError() throw() {} 1019 virtual const char* what() const throw() { 1020 try { 1021 _what.clear(); 1022 std::ostringstream oss; 1023 oss << "lemon::UnsupportedFormatError: " << _format; 1024 _what = oss.str(); 1025 } 1026 catch (...) {} 1027 if (!_what.empty()) return _what.c_str(); 1028 else return "lemon::UnsupportedFormatError"; 1029 } 1030 }; 1031 1032 protected: 1033 virtual void _write(std::string, std::string format) const 1034 { 1035 throw UnsupportedFormatError(format); 1036 } 1037 1038 public: 1039 1010 1040 /// Virtual destructor 1011 1041 virtual ~LpBase() {} … … 1556 1586 void min() { _setSense(MIN); } 1557 1587 1558 ///Clear sthe problem1588 ///Clear the problem 1559 1589 void clear() { _clear(); rows.clear(); cols.clear(); } 1560 1590 1561 /// Set sthe message level of the solver1591 /// Set the message level of the solver 1562 1592 void messageLevel(MessageLevel level) { _messageLevel(level); } 1593 1594 /// Write the problem to a file in the given format 1595 1596 /// This function writes the problem to a file in the given format. 1597 /// Different solver backends may support different formats. 1598 /// Trying to write in an unsupported format will trigger 1599 /// \ref UnsupportedFormatError. For the supported formats, 1600 /// visit the documentation of the base class of the related backends 1601 /// (\ref CplexBase, \ref GlpkBase etc.) 1602 /// \param file The file path 1603 /// \param format The output file format. 1604 void write(std::string file, std::string format = "MPS") const 1605 { 1606 _write(file.c_str(),format.c_str()); 1607 } 1563 1608 1564 1609 ///@} -
lemon/lp_skeleton.cc
r877 r1063 92 92 void SkeletonSolverBase::_messageLevel(MessageLevel) {} 93 93 94 void SkeletonSolverBase::_write(std::string, std::string) const {} 95 94 96 LpSkeleton::SolveExitStatus LpSkeleton::_solve() { return SOLVED; } 95 97 -
lemon/lp_skeleton.h
r877 r1063 145 145 ///\e 146 146 virtual void _messageLevel(MessageLevel); 147 148 ///\e 149 virtual void _write(std::string file, std::string format) const; 150 147 151 }; 148 152 … … 223 227 ///\e 224 228 virtual const char* _solverName() const; 229 225 230 }; 226 231
Note: See TracChangeset
for help on using the changeset viewer.