diff options
Diffstat (limited to 'thirdparty/linux/include/coin1/IpEqMultCalculator.hpp')
-rw-r--r-- | thirdparty/linux/include/coin1/IpEqMultCalculator.hpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin1/IpEqMultCalculator.hpp b/thirdparty/linux/include/coin1/IpEqMultCalculator.hpp new file mode 100644 index 0000000..7c3cb20 --- /dev/null +++ b/thirdparty/linux/include/coin1/IpEqMultCalculator.hpp @@ -0,0 +1,64 @@ +// Copyright (C) 2004, 2006 International Business Machines and others. +// All Rights Reserved. +// This code is published under the Eclipse Public License. +// +// $Id: IpEqMultCalculator.hpp 1861 2010-12-21 21:34:47Z andreasw $ +// +// Authors: Carl Laird, Andreas Waechter IBM 2004-09-23 + +#ifndef __IPEQMULTCALCULATOR_HPP__ +#define __IPEQMULTCALCULATOR_HPP__ + +#include "IpUtils.hpp" +#include "IpAlgStrategy.hpp" + +namespace Ipopt +{ + /** Base Class for objects that compute estimates for the equality + * constraint multipliers y_c and y_d. For example, this is the + * base class for objects for computing least square multipliers or + * coordinate multipliers. */ + class EqMultiplierCalculator: public AlgorithmStrategyObject + { + public: + /**@name Constructors/Destructors */ + //@{ + /** Default Constructor. */ + EqMultiplierCalculator() + {} + /** Default destructor */ + virtual ~EqMultiplierCalculator() + {} + //@} + + /** overloaded from AlgorithmStrategyObject */ + virtual bool InitializeImpl(const OptionsList& options, + const std::string& prefix) = 0; + + /** This method computes the estimates for y_c and y_d at the + * current point. If the estimates cannot be computed (e.g. some + * linear system is singular), the return value of this method is + * false. */ + virtual bool CalculateMultipliers(Vector& y_c, + Vector& y_d) = 0; + + private: + /**@name Default Compiler Generated Methods + * (Hidden to avoid implicit creation/calling). + * These methods are not implemented and + * we do not want the compiler to implement + * them for us, so we declare them private + * and do not define them. This ensures that + * they will not be implicitly created/called. */ + //@{ + /** Copy Constructor */ + EqMultiplierCalculator(const EqMultiplierCalculator&); + + /** Overloaded Equals Operator */ + void operator=(const EqMultiplierCalculator&); + //@} + }; + +} // namespace Ipopt + +#endif |