1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the class library */ 4 /* SoPlex --- the Sequential object-oriented simPlex. */ 5 /* */ 6 /* Copyright (c) 1996-2023 Zuse Institute Berlin (ZIB) */ 7 /* */ 8 /* Licensed under the Apache License, Version 2.0 (the "License"); */ 9 /* you may not use this file except in compliance with the License. */ 10 /* You may obtain a copy of the License at */ 11 /* */ 12 /* http://www.apache.org/licenses/LICENSE-2.0 */ 13 /* */ 14 /* Unless required by applicable law or agreed to in writing, software */ 15 /* distributed under the License is distributed on an "AS IS" BASIS, */ 16 /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ 17 /* See the License for the specific language governing permissions and */ 18 /* limitations under the License. */ 19 /* */ 20 /* You should have received a copy of the Apache-2.0 license */ 21 /* along with SoPlex; see the file LICENSE. If not email to soplex@zib.de. */ 22 /* */ 23 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 25 /**@file spxdefaultrt.h 26 * @brief Textbook ratio test for SoPlex. 27 */ 28 #ifndef _SPXDEFAULTRT_H_ 29 #define _SPXDEFAULTRT_H_ 30 31 32 #include <assert.h> 33 34 #include "soplex/spxdefines.h" 35 #include "soplex/spxratiotester.h" 36 37 namespace soplex 38 { 39 40 /**@brief Textbook ratio test for SoPlex. 41 @ingroup Algo 42 43 Class SPxDefaultRT provides an implementation of the textbook ratio test 44 as a derived class of SPxRatioTester. This class is not intended for 45 reliably solving LPs (even though it does the job for ``numerically simple'' 46 LPs). Instead, it should serve as a demonstration of how to write ratio 47 tester classes. 48 49 See SPxRatioTester for a class documentation. 50 */ 51 template <class R> 52 class SPxDefaultRT : public SPxRatioTester<R> 53 { 54 public: 55 56 //------------------------------------- 57 /**@name Construction / destruction */ 58 ///@{ 59 /// default constructor 60 SPxDefaultRT() 61 : SPxRatioTester<R>("Default") 62 {} 63 /// copy constructor 64 SPxDefaultRT(const SPxDefaultRT& old) 65 : SPxRatioTester<R>(old) 66 {} 67 /// assignment operator 68 SPxDefaultRT& operator=(const SPxDefaultRT& rhs) 69 { 70 if(this != &rhs) 71 { 72 SPxRatioTester<R>::operator=(rhs); 73 } 74 75 return *this; 76 } 77 /// destructor 78 virtual ~SPxDefaultRT() 79 {} 80 /// clone function for polymorphism 81 inline virtual SPxRatioTester<R>* clone() const 82 { 83 return new SPxDefaultRT(*this); 84 } 85 ///@} 86 87 //------------------------------------- 88 /**@name Select enter/leave */ 89 ///@{ 90 /// 91 virtual int selectLeave(R& val, R, bool); 92 /// 93 virtual SPxId selectEnter(R& val, int, bool); 94 }; 95 96 } // namespace soplex 97 98 #include "spxdefaultrt.hpp" 99 100 #endif // _SPXDEFAULTRT_H_ 101