/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Copyright (C) 2006 StatPro Italia srl This file is part of QuantLib, a free-software/open-source library for financial quantitative analysts and developers - http://quantlib.org/ QuantLib is free software: you can redistribute it and/or modify it under the terms of the QuantLib license. You should have received a copy of the license along with this program; if not, please email . The license is also available online at . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details. */ #ifndef quantlib_parametric_exercise_hpp #define quantlib_parametric_exercise_hpp #include #include namespace QuantLib { class ParametricExercise { public: virtual ~ParametricExercise() {} // possibly different for each exercise virtual std::vector numberOfVariables() const = 0; virtual std::vector numberOfParameters() const = 0; virtual bool exercise(Size exerciseNumber, const std::vector& parameters, const std::vector& variables) const = 0; virtual void guess(Size exerciseNumber, std::vector& parameters) const = 0; }; //! returns the biased estimate obtained while optimizing /* TODO document: n exercises, n+1 elements in simulationData simulationData[0][j] -> cashflows up to first exercise, j-th path simulationData[i+1][j] -> i-th exercise, j-th path simulationData[0][j].foo unused (unusable?) if foo != cumulatedCashFlows parameters.size() = n */ Real genericEarlyExerciseOptimization( std::vector >& simulationData, const ParametricExercise& exercise, std::vector >& parameters, const EndCriteria& endCriteria, OptimizationMethod& method); } #endif