/*
Copyright (C) 2009 Ueli Hofstetter
This source code is release under the BSD License.
This file is part of JQuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://jquantlib.org/
JQuantLib is free software: you can redistribute it and/or modify it
under the terms of the JQuantLib 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.
JQuantLib is based on QuantLib. http://quantlib.org/
When applicable, the original copyright notice follows this notice.
*/
package org.jquantlib.math.optimization;
import org.jquantlib.math.matrixutilities.Array;
public class ProjectedCostFunction extends CostFunction {
private int numberOfFreeParameters;
private final Array fixedParameters;
private final Array actualParameters;
private final boolean [] parametersFreedoms_;
private final CostFunction costFunction;
public ProjectedCostFunction(final CostFunction costFunction, final Array parameterValues, final boolean [] parametersFreedoms) {
if (System.getProperty("EXPERIMENTAL") == null)
throw new UnsupportedOperationException("Work in progress");
this.numberOfFreeParameters = 0;
// TODO: code review :: use of clone()
this.fixedParameters = parameterValues.clone();
this.actualParameters = parameterValues.clone();
this.parametersFreedoms_ = parametersFreedoms; // TODO: clone() ?
this.costFunction = costFunction;
if (fixedParameters.size() != parametersFreedoms_.length)
throw new IllegalArgumentException("fixedParameters_.size()!=parametersFreedoms_.size()");
for(int i = 0; i0))
throw new ArithmeticException("numberOfFreeParameters==0");
}
}
public void mapFreeParameters(final Array parametersValues){
if(!(parametersValues.size() == numberOfFreeParameters))
throw new IllegalArgumentException("parametersValues.size()!=numberOfFreeParameters");
int i = 0;
for(int j = 0; j
Ads help maintain this website.