I'm using Global Optimization in ADE Assembler and would like to change what appears to be the default behaviour.
I have a number of corners - 3, in the present case. For each corner, I have a single Figure Of Merit (FOM) calculated, which is to be minimised.
So, for each iteration I get 3 FOMs - as an example, I got 83.97, 83.88 and 84.68 from a recent run.
The optimization tool seems to work on the average of these numbers. I would like, instead, to optimise away the highest number.
E.g. the settings ranked best from the run mentioned had FOMs of 81.96, 81.35, 87. I'd prefer the case with FOMs 83.97, 83.88, 84.48 to be ranked higher.
I can't see an option to change the way this works. I could do some things like generate a new FOM2 = (FOM - 80)*(FOM-80) and that would favour the one I want for this case at least, but is there a built-in way?
The cost function is trying to minimise all of them with equal weighting, so that's probably going to have an effect along the lines of what you've observed.
One possibility would be to add another measurement which has evalType of "corners" which is something like:
peakToPeak(calcVal("FOM" "THETEST") ?overall t)
and then specify that this should be < some acceptable limit (say <1 in or case). That would mean that another goal is to minimise the spread of across the corners (I suggested using a less than spec rather than minimise, because you may want it to work harder to minimise the FOM goal than just meet an acceptable spread).
I will have a go at that.
All the best,
Actually, Andrew, from your example, I see what to do - I really want to minimise the highest FOM over corners.
So, I'm trying ymax(calcVal("FOM") ?overall t) - lower FOMs are better in my world - I think this will do what I want.
I didn't know the evalType corners!