00001
00006 #ifndef _OuterPenalty_h
00007 #define _OuterPenalty_h
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "Error.h"
00019 #include "PenaltyFunction.h"
00020
00021
00022
00023
00024
00025 class OuterPenalty
00026 : public PenaltyFunction
00027 {
00028 public:
00029
00030
00033 OuterPenalty();
00034
00040 OuterPenalty(CountedPtr<const FunctionBase> cpFunction);
00041
00042
00045 ~OuterPenalty(void);
00046
00047
00048
00049
00050
00051
00052 virtual std::auto_ptr<FunctionBase> Clone() const;
00053
00054
00055
00056 virtual wxString ToString(bool full = true) const;
00057
00058 static FunctionIdType ClassId();
00059
00062 virtual FunctionIdType Id() const;
00063
00064
00065
00066 virtual bool IsValid(const ColumnVector& point) const;
00067
00068 virtual bool IsValidStartingPoint(const ColumnVector& point) const;
00069
00070 virtual int FunctionId() const;
00071
00072 protected:
00073
00074 OuterPenalty(const OuterPenalty& from);
00075
00081 virtual double DoEvaluate(const ColumnVector& point) const
00082 throw(EvaluationError);
00083
00084 virtual double DoEvaluateNoThrow(const ColumnVector& point) const
00085 throw();
00086
00087 private:
00088
00089 };
00090
00091
00092
00093
00094
00095
00096
00097 #endif // _OuterPenalty_h