Optimization of an optical system requires the solution of a highly nonlinear
problem. It is the process by which the aberrations of a lens are minimized by
changing selected lens data (variables
). Two types of optimization
algorithms are available;
||optimization, minimizes an error function by a damped-least-square (DLS) method
subject to solving constraints
using Lagrange multipliers and application of the Kuhn-Tucker optimality condition,
||optimization, solves a problem using a modified Levenberg-Marquardt algorithm.
The merit function is constructed from almost any command relating to
performance or construction data, thus allowing unlimited flexibility in the
definition of the error function (also called a merit function). Besides minimization,
boundary constraints accept logical operators like
User-defined variables and functions will allow an even broader range of constraints in
optimization, for example,
$z = [efl]+23.12
@xyz == [thi s2]+[thi s4]+$z
@xyz > 10
Defining Optimization Variables, Targets and Constraints
Edit variables, targets and constraints comfortably in a single window.
The definition of a user merit function accepts all commands relating to
surface data, system data and performance data. This includes arithmetic expressions,
a large number of built-in mathematical functions and lens database items as also shown in the
See below a few examples of defining merit function elements:
|efl = 100
||Focal length (EFL) shall be precisely 100 mm.
|syl < 70
||Constrain system length (first surface to last surface) to less than 70 mm.
|spd f1..3 w3..4 0
||Minimize rms-spot diameter (spd) at field
points 1 to 3 and wavelength numbers 3 to 4 (Target is 0).
||As above, minimize rms-spot diameter. Absence of field and wavelength
qualifier implies all fields and wavelengths. This is one of the easiest yet
powerful optimization target.
|thi s1 = [OAL] - 2*[thi s4]
||Use arithmetic operators and lens database items given in [ ] brackets
to define complex targets.
|bfl = sqrt(tan(2))
||Use intrinsic functions to define complex targets.
|@myfkn == [oal s1..6]-5.0
||Construct a user-defined function to be used later.
|@myfkn > 10
||Use a previously defined funtion to define a constraint in optimization.