Hello!

philip wrote:

Is the effect of the scale parameter the same as solving the problem transformed to new variables (so that each new variable is the original divided by the scale)?

Yes, effect should be the same (however, because of rounding errors you still may get different results)

philip wrote:

Why do I sometimes get termination type 4 even though I have set zero tolerance for gradient?

What is the tolerance for the gradient in this case and is it possible that I get will get a difference from optimum that exceeds epsx (taking scale into account)?

It is possible that norm of constrained becomes exactly zero - say, when all constraints become active. In this case algorithm terminates with error 4, because, technically, zero<=zero. :)

philip wrote:

Is the algorithm affected by changing the objective function or one of the constraint equations/inequalities by a constant?

Theoretically - not affected. In practice - may be affected because of rounding errors.

philip wrote:

How is the tolerance for constraint violations determined exactly?

Currently ALGLIB uses fixed tolerance equal to 1E-6.

philip wrote:

Why do I get termination type 7 sometimes? What can I do about it?

Unfortunately, our hardware performs computations with finite precision (it would be good to have infinite precision floating point, but...). As result, sometimes you may get "gradient" vector which is NOT descent direction because rounding errors distorted its true value. Attempt to perform line search on such direction fails, and algorithm returns 7. Luckily, rounding errors are small and can "override" true gradient only near true solution. So, 7 signals successful termination.