Alexander D
05-18-2006, 08:06 AM
Hi,
I have a difficulty understanding of termination criterion coded in Powell.
Powell exits if the following statement is true:
2 * |fp - ssq| <= ftol * ( |fp| + |ssq| ) (eq.1)
where:
fp - fit value on previous iteration
ssq - fit value on current iteration
ftol - tolerance
Suppose I have a function y=x*x + 100 (eq.2), ftol = 1e-6. Suppose that after n iterations, x(n) = 0.01 and x(n-1)=0.02. Then, the left side of the eq.1 is:
2 * | 100.0001 - 100.0004 | = 2 * |-0.0003| = 0.0006 = 6e-4
and the right side is:
1e-6 * ( 100.0001 + 100.0004 ) = 1e-6 * 200.0005 ~ 2e-4
The eq.1 is satisfyed because 6e-4 < 2e-4 and Powell exits.
Now, suppose my function is y=x*x (eq.3). Then, left side of eq.1 is still the same
2 * | 0.0001 - 0.0004 | = 2 * |-0.0003| = 0.0006 = 6e-4
Right side is quite different:
1e-6 * ( 0.0001 + 0.0004 ) = 1e-6 * 0.0005 = 5e-10
The eq.1 is very far from to be satisfyed and the algorithm has to do some more iterations.
I find it very strange. In essence, the functions are the same in shape. For the same starting point x, tolerance ftol, optimization algorithm should do the same number of iterations for both functions eq.2 and eq.3.
I would expect the following inequality to be used as exit criterion:
| fp - ssq | <= ftol (eq.4)
Could you please to comment on the reasoning of eq.1.
Regards,
Alexander D
I have a difficulty understanding of termination criterion coded in Powell.
Powell exits if the following statement is true:
2 * |fp - ssq| <= ftol * ( |fp| + |ssq| ) (eq.1)
where:
fp - fit value on previous iteration
ssq - fit value on current iteration
ftol - tolerance
Suppose I have a function y=x*x + 100 (eq.2), ftol = 1e-6. Suppose that after n iterations, x(n) = 0.01 and x(n-1)=0.02. Then, the left side of the eq.1 is:
2 * | 100.0001 - 100.0004 | = 2 * |-0.0003| = 0.0006 = 6e-4
and the right side is:
1e-6 * ( 100.0001 + 100.0004 ) = 1e-6 * 200.0005 ~ 2e-4
The eq.1 is satisfyed because 6e-4 < 2e-4 and Powell exits.
Now, suppose my function is y=x*x (eq.3). Then, left side of eq.1 is still the same
2 * | 0.0001 - 0.0004 | = 2 * |-0.0003| = 0.0006 = 6e-4
Right side is quite different:
1e-6 * ( 0.0001 + 0.0004 ) = 1e-6 * 0.0005 = 5e-10
The eq.1 is very far from to be satisfyed and the algorithm has to do some more iterations.
I find it very strange. In essence, the functions are the same in shape. For the same starting point x, tolerance ftol, optimization algorithm should do the same number of iterations for both functions eq.2 and eq.3.
I would expect the following inequality to be used as exit criterion:
| fp - ssq | <= ftol (eq.4)
Could you please to comment on the reasoning of eq.1.
Regards,
Alexander D