public IssuerProviderDiscount evaluate(DoubleMatrix1D x) {
IssuerProviderDiscount provider = _knownData.copy();
Set<String> nameSet = _generatorsMap.keySet();
int indexParam = 0;
for (String name : nameSet) {
GeneratorYDCurve gen = _generatorsMap.get(name);
double[] paramCurve = Arrays.copyOfRange(x.getData(), indexParam, indexParam + gen.getNumberOfParameter());
indexParam += gen.getNumberOfParameter();
YieldAndDiscountCurve curve = gen.generateCurve(name, provider.getMulticurveProvider(), paramCurve);
if (_discountingMap.containsKey(name)) {
provider.setCurve(_discountingMap.get(name), curve);
}
if (_forwardIborMap.containsKey(name)) {
IborIndex[] indexes = _forwardIborMap.get(name);