final double[] target, final double[] weights,
final double[] startPoint)
throws FunctionEvaluationException, OptimizationException, IllegalArgumentException {
if (target.length != weights.length) {
throw new OptimizationException("dimension mismatch {0} != {1}",
target.length, weights.length);
}
// reset counters
iterations = 0;