/src/main/java/net/finmath/montecarlo/interestrate/models/covariance/AbstractLIBORCovarianceModelParametric.java
final AbstractLIBORCovarianceModelParametric calibrationCovarianceModel = AbstractLIBORCovarianceModelParametric.this.getCloneWithModifiedParameters( values) ;
final AbstractLIBORCovarianceModelParametric calibrationCovarianceModel = AbstractLIBORCovarianceModelParametric.this.getCloneWithModifiedParameters ( parameters ) ;
Arrays.fill(parameterStep, new RandomVariableFromDoubleArray(parameterStepParameter != null ? parameterStepParameter.doubleValue() : 1E-4)); final int numberOfThreadsForProductValuation = Runtime.getRuntime().availableProcessors(); final ExecutorService executor = Executors.newFixedThreadPool(numberOfThreadsForProductValuation); final StochasticOptimizer.ObjectiveFunction calibrationError = new StochasticOptimizer.ObjectiveFunction() { @Override public void setValues(final RandomVariable[] parameters, final RandomVariable[] values) throws SolverException { <extra_id_0> final LIBORMarketModel model = calibrationModel.getCloneWithModifiedCovarianceModel(calibrationCovarianceModel); final EulerSchemeFromProcessModel process = new EulerSchemeFromProcessModel(model, brownianMotion); final LIBORMonteCarloSimulationFromLIBORModel liborMarketModelMonteCarloSimulation = new LIBORMonteCarloSimulationFromLIBORModel(model, process); final ArrayList<Future<RandomVariable>> valueFutures = new ArrayList<>(calibrationProducts.length); for(int calibrationProductIndex=0; calibrationProductIndex<calibrationProducts.length; calibrationProductIndex++) { final int workerCalibrationProductIndex = calibrationProductIndex;