MATLAB: How does mesh scaling work in Pattern Search

global optimizationGlobal Optimization Toolboxpattern searchscale mesh

Hi to everyone,
as I am dealing with a constrained optimization problem, I decided to use Pattern Search. One of the decisions I have to make during the setup of the problem is to set the initial Mesh Size and the Mesh Tolerance. The problem is that the solution vector that I am searching for is poorly scaled. For example, in one direction the solution vector is allowed to vary from 1e-4 to 1e-3 (according to its boundaries), whilst in another direction it is allowed to range from 5 to 600.
In the corresponding documentation, I read that Pattern Search gives me the opportunity to deal with such problems by turning "ScaleMesh" to "on". The documentation in that point reads: "Scale is used to rotate the pattern by some degree and scale along the search directions". Rotating and scaling to "some degree" is a little bit vague, isn't it? How am I supposed to decide on the Mesh sizes and tolerance for such poorly scaled search dimensions? Hence, my question is the following: to which degree is the scaling and rotation performed?
I hope that I wasn't vague too!
Thank you all in advance!

Best Answer

You are free to read the patternsearch code to see exactly what is going on. Usually, when you have a poorly scaled problem, you would do better to fix the scaling yourself rather than relying on patternsearch to try to guess what is going on.
The documentation for patternsearch options states: "Scale (ScaleMesh) specifies whether the algorithm scales the mesh points by carefully multiplying the pattern vectors by constants proportional to the logarithms of the absolute values of components of the current point (or, for unconstrained problems, of the initial point). Scale can have the values Off or On (the default). When the problem has equality constraints, Scale is disabled."
Alan Weiss
MATLAB mathematical toolbox documentation