fullseye

lens_global_search — OPTICS lensglobal op

使い方

多始点の局所最適化(lensopt.optimize_lens)で局所解を集め、merit 順に返す(table)。

Start 0 is system as given; starts 1 .. n_starts-1 move every variable to x (1 + spread u) with u uniform in [-1, 1] drawn from numpy.random.default_rng(seed) (a variable that is zero, such as a flat, moves by spread times the typical size of its kind). A perturbed start that is not a valid prescription is redrawn (up to 25 times, then ValueError). Every start is optimised by lensopt.optimize_lens with the same merit and the same EFL target (the EFL of system unless merit["efl_target"] says otherwise), so the optima are comparable. merit is a dict of fields wavelengths rings efl_target efl_weight field_weights pupil_fill min_thickness max_thickness min_radius damping tolerance; variables are as in optimize_lens.

Returns {"optima", "best", "n_starts", "n_distinct", "basins", "seed", "spread"}. optima holds every start’s result sorted by merit (ties by start index): {"start", "merit", "start_merit", "rms_spot", "efl", "system", "values", "status", "converged", "duplicate_of"} where duplicate_of is the start of an earlier (better) optimum with the same variables (every variable within duplicate_tolerance relative, floor 1e-9) or None. basins lists the distinct optima with the number of starts that reached each. Deterministic for a given seed.

Example::

r = lens_global_search(singlet, ["c0", "c1"], {"efl_target": 100.0}, n_starts=12, seed=3)
r["best"]["merit"], r["n_distinct"]

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd

同カテゴリ(lensglobal)

glass_nearest · lens_substitute_glasses


Provenance: lensglobal.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.