Optimization: How to put limit on the number of Decimals to the variables?

  • 20 October 2020
  • 5 replies
  • 475 views

Badge

I have a query



        During optimization process Zemax varies defined variables and tries to minimize the merit function (optimization).



But still I dont know upto what decimal places Zemax varies the defined variables and tries to achieve the better solution.



For eg: Suppose I have defined a variable of 'Radius of Curvature' having value 100mm.  During optimization process upto what decimal

places Zemax varies this value and tries to find the next best solution.



Is this trying like new radius of curvature of  100.000001mm  and computing the merit function, then next radius of curvature of

100.000002mm and computing new merit fuction etc..



Since my practical limitation is 0.01mm (10 micron) or 0.001mm (1micron), so whether I can tell Zemax to vary the given variables in

minimum step size of  0.01mm or 0.001mm only, not finer than this. More fine computation beyond practical limit is wastage of computation energy

and time.





In short whether I have control over given variable to tell Zemax upto what decimal place the variable is allowed to vary during trying for

next best solution(optimization)?



[Unwanted minimum step size is just wastage of computing time, so my practical limit(tolerance) is nearly 1 micron (0.001mm) only]



Please help me with the above query.



Thanks and Regards



--Satheesha.


5 replies

Userlevel 7
Badge +3

If you use Automatic cycles, OS will keep optimizing until the difference in merit function betwen cycles is something like 10^-8 of the starting value. So it's not the variables, its the MF that controls the number of cycles.


Your best best is to just run 5 cycles or some number rather than using Automatic.


OS uses double precision floats for all variables.


 


- Mark

Badge

Thanks Sir, 


   As you said OS uses double precision floats for all variables. 


  But from Google search I found that smallest double precision floats number is ±10^(-323) [Please correct me if I am wrong].


Isnt it a very small change in variables to find next minimum merit function?


 


[One question also in my mind is that why OpticStudio uses floats as provided from OS.. instead cant it be use floats limit as per own requirement]


 


In other words, I strongly recommend OpticStudio Scientists and Engineers to add a feature where we choose decimal places upto


which Zemax allowed vary the variables to find next best merit function during the optimization, not finer than this limit. 


I guess its more efficient way of using the processing time.


 


 Please clarify.. Thanks Mark..


Regards 


 

Userlevel 4
Badge +1

Hi Satheesha,


I'm pretty sure that there is a difference between the smallest number a chip can represent and the smallest difference between numbers that it can work on. In other words, if that 10^-323 is used with much larger magnitude numbers for math purposes, it will be rounded out entirely. 


But what Mark said is the essential lesson for the optimization. Typically a double precision number is around 16 decimal places, but the optimizer goes to about 8. It does not try for higher precision. And more importantly, it is the merit function that is calculated to this precision, not the value of any given variable. One of the reasons for having different weights on operands is to account for some of them returning values of drastically different magnitudes and trying to compare them. I'm not a Zemax developer so I can only make reasonable guesses here, but the optimization routines are based on continuous mathematical functions, so trying to impose a discreteness to the internal calculations, like the step sizes for physical quantities, might be a more complicated matter than we realize.


 

Userlevel 7
Badge +3

The best way to approach granular values in the LDE is to optimize and then set the values in the LDE to the desired precision. This is what we would do prior to tolerancing, for example. 


For radii, I would suggest running the test plate fitting tool, even if you are not using that manufacturer (but especially if so). This will set all radii to sensible values taken froma  manufactuere's tooling list. For thicknesses, when you run the design lockdown tool you can specify the precision of the thickness values.


Optimization is a continuous process, but manufacture is not so it's best to keep an optimize-versus-tolerancing mindset here.


- Mark

Badge

Hi Mark Sir and Kevin, 


Thanks very much for your responses..  However  I will go through once with Zemax Help manaul about the details of Optimzation process, then I will come back to you.


Thanks 


--Satheesha.


 

Reply