{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bounded Optimization Operands" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from optiland import optic, optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define a starting lens:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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yQSljNBKXwWm0j/KEYcfFvJIAAAAAHSD6elpjY6Ottxvmb1FqmUkCALt3LlTw8PDsiwr7OGgytTUlNasWaPnn39eIyMjYQ8HXYRzA3Ph/EArnBuYC+cHpEJlaXp6WqtWrZqz0thXFSbbtrV69eqwh4E5jIyM8MKFpjg3MBfOD7TCuYG5cH5grspSCU2bAAAAANACgQkAAAAAWiAwoSvE43F9+tOfVjweD3so6DKcG5gL5wda4dzAXDg/MB99tegDAAAAAMwHFSYAAAAAaIHABAAAAAAtEJgAAAAAoAUCEwAAAAC0QGBC6PL5vP72b/9WxxxzTMv9V199td70pjfpuOOO01lnnaXnn3++w6NEGH7zm9/o1FNP1SmnnKJjjjlGX/va18IeEkK0Z88eXXbZZTr//PMb9r344ot63/vep5NOOknr1q3TZZddplwuF8Io0UkPP/yw/vzP/1ynnXaaTjvtNB122GG6+uqr5ft++T6cG/3r0Ucf1ZVXXqkzzjhDp556qg455BB97GMfk+d55ftwfqAtBgjRT37yE3PSSSeZaDRqDjjggKb3ufLKK81pp51m8vm88X3fnHnmmeb44483vu93eLTopOeff96MjIyYe++91xhjzK9+9Stj27b5/ve/H/LI0Gme55lbbrnFrFu3zkgy5557bs1+3/fNCSecYG644QZjjDG7d+82q1evNh/96EfDGC466OyzzzZvectbTCaTMcYYc9dddxlJ5tZbbzXGcG70u7PPPtu8/e1vN67rGmOM+a//+i8jydx0003GGM4PtI/AhNA89dRT5rOf/azJZDLmgx/8YNPANDExYWKxWM2H5HvvvddIMv/+7//eyeGiw6655hrzute9rmbbKaecYk499dSQRoSw/OAHPzD//M//bIwxZtWqVQ2B6Sc/+YmxLMvs3r27vO2GG24wiUTCzM7OdnSs6Kx7773XPPHEEzXbxsbGzMUXX2yM4dzodz/96U/N448/XrNt//33NxdeeKExhvMD7aMlD6E5/PDD9alPfUqJRELRaLTpfe677z65rqvjjjuuvO2EE06QJN1///0dGSfCcc8999T83KXCz/7Xv/61giAIaVQIwznnnKP3ve99ktT0teKee+7R6tWrtWLFivK2E044QdlsVps3b+7YONF5p59+uo488sjy7Ww2q1wup1e/+tWSODf63Tve8Y7yuSBJ27dv1549e/S2t71NEucH2kdgQld78sknJUljY2PlbSMjIxoaGtKOHTtCGhU64cknn6z5uUvSwQcfrFwup1deeSWcQaErtTpXJPE60Wduu+02jYyM6NJLL5XEuYGK3/72t3r3u9+ta6+9tjwPkvMD7YqEPQAsT1u3bm2574gjjmhZUao3MzMjSUokEjXbk8mkXNdd+ADR9WZmZpr+3CXxs0cNzhVIhQUgPve5z+mHP/xhuWLAuYEtW7bo/e9/vx577DEdf/zxOvXUU8v7OD/QLgITlsS6deta7nviiSdqWijmEovFJEm5XE4DAwPl7fl8XoODg/s2SHS1WCzWsFJRPp+XJH72qMG5gueee07nnHOOvvnNb+rNb35zeTvnBo455hj9/ve/l+u6uuWWW3TGGWfom9/8pi644ALOD7SNljwsCVNYUKTpn3bDkiStXr1akvTSSy+Vt3mep8nJSR1xxBGLPm50j9WrV9f83CVp165dSqVSSqVSIY0K3ajVuSKJ14k+MDk5qXe96136zGc+oz/5kz+p2ce5gZJYLKarrrpKJ554or7yla9I4vxA+whM6GonnniiJOnBBx8sb3v44YcVBIFOP/30sIaFDli/fn3Nz12SNm/ezM8dDdavX6+XXnqpZs7B5s2btXLlSh177LEhjgydcMEFF+hP//RPa67P9cMf/lAS50a/e+ihhzQ9PV2zLZVKlRcO4vxAuwhM6ArPPfecJicnNTU1VbP9yCOP1Lve9S7dcsst5bL5l7/8ZZ111lm8mC1zGzdu1LZt23TnnXdKKvSh/+IXv9DVV18d7sAQmpmZGe3Zs0fPP/+8jDHl7e9///t1wAEH6K//+q8lSbOzs/rGN76ha665RrbN29xydscdd+hXv/qVjjvuON1555268847deONN+qGG26QxLnR7y666CJdddVV5deLrVu36j//8z914YUXSuL8QPssU/2uA3TYe97zHm3evFlPP/20pMJqeOvWrdN3vvMdHXLIIZKk3bt3a+PGjXr44Yc1Ojqqo48+Wl/+8pc1Ojoa5tDRAd/97nd14403asWKFfI8T9ddd53OPvvssIeFDtuxY4fOPfdcPfbYY+UVElevXq3Xv/71+td//VdJhd8kb9y4UdlsVrZt6+yzz9b1118vy7LCHDqW2DHHHKNHH320Yftxxx2nhx56SBLnRj+77bbb9K1vfUvZbFaJRELZbFYXX3yxNm7cWL4P5wfaQWACAAAAgBaoNwIAAABACwQmAAAAAGiBwAQAAAAALRCYAAAAAKAFAhMAAAAAtEBgAgAAAIAWCEwAAAAA0AKBCQAAAABaIDABAAAAQAsEJgDAsnDRRRdpbGxMGzZs0Jlnntnx5z/zzDO1YcMGjY2N6aKLLur48wMAlkYk7AEAAFDtmWee0WGHHabR0VG97nWvk20Xfrf3yCOPaGJiQlu2bNFRRx3V9LHHH3+8fvnLX3ZwtBV33XWXJGnDhg2hPD8AYGkQmAAAXceyLP3Hf/yHjjvuOEnS9u3bddRRR+nCCy9sGZYAAFgKtOQBALpKIpHQhz/84XJYkqRPfvKTsixLn//850McGQCgHxGYAABd5cADD9Q3vvGN8u1f//rXuv322/XJT35SBx10UNvHSafTOuuss2RZln70ox/p+uuv14knnqi1a9fq7rvv1j333KOLL75Yhx56qN73vvcpn89LkrZs2aLXvva1ikQievTRR7Vx40YdccQReuMb36hnn31WX//61/Xe975XBx54oG666aZF//sDALoLgQkA0NWuuOIKrVmzRlddddW8HjcwMKC/+Zu/kSTdeuutuu666/TAAw9o1apVOu+88/T444/r7//+7/XTn/5Ud9xxh77//e9Lko455hhdfvnl8n1ft99+u77yla/ot7/9rbZs2aJTTz1Vxx9/vO644w59+tOf1qc+9Sm98MILi/53BgB0DwITAKBr/dM//ZN+9atf6aabblIymZz34yORwlTdSy65RIODg7IsS29+85slSRs3bpQkrVu3TqlUSo8//njD46688kpJ0ooVK3T00UfrhBNO0IknnihJOvnkk+X7vp566qmF/wUBAF2PwAQA6EqZTEaf/OQntX79en3gAx/Yp2MNDw+Xvx8aGqq5Xdpfaslr93Gl75s9DgCwfLBKHgCgK9188816/vnn9d3vfleWZS3acZsdq53j199nMccEAOheVJgAAF1n586d+uIXv6jzzjtP69evL2+/5JJLdN9994U4MgBAvyEwAQC6zrXXXqsgCGpWoZuYmND3v/99BUHQ9nFyuZwkyXXd8rZ0Ol1zu7TN87x5PS6dTktSzeMAAMsPgQkA0FW2bt2qTZs2KZFI6Pzzz9eGDRu0YcMGrVu3Trt3757Xsa655hpJ0mc/+1nt2rVLDz/8sL797W/rhRde0F/91V9Jkr74xS9q165d2rRpkx588EFt375dt9xyiyTpsssuk1RYfGLz5s368Y9/rLvvvlvGGH3iE5+QJH3mM5/R+Pj4Yv31AQBdxjLGmLAHAQDAvrrooov0zDPP6Je//GWo49iwYYPWrl2rf/iHfwh1HACAxUGFCQAAAABaIDABAAAAQAssKw4AWDYeeughbdiwQUNDQ7rrrrs6+txnnnmmZmZm9NBDD2nt2rUdfW4AwNJhDhMAAAAAtEBLHgAAAAC0QGACAAAAgBYITAAAAADQAoEJAAAAAFogMAEAAABACwQmAAAAAGiBwAQAAAAALRCYAAAAAKCF/weiqn5UAlUyIwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lens = optic.Optic()\n", "\n", "# add surfaces\n", "lens.surfaces.add(index=0, thickness=np.inf)\n", "lens.surfaces.add(index=1, thickness=7, radius=100, material=\"N-SF2\", is_stop=True)\n", "lens.surfaces.add(index=2, thickness=30, radius=-200)\n", "lens.surfaces.add(index=3)\n", "\n", "# set aperture\n", "lens.set_aperture(aperture_type=\"EPD\", value=15)\n", "\n", "# add field\n", "lens.fields.set_type(field_type=\"angle\")\n", "lens.fields.add(y=0)\n", "\n", "# add wavelength\n", "lens.wavelengths.add(value=0.55, is_primary=True)\n", "\n", "# draw lens\n", "lens.draw(num_rays=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define optimization problem:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "problem = optimization.OptimizationProblem()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add operands (targets for optimization). There are two options:\n", "\n", "1. Provide an exact `target` for the value.\n", "2. Provide a `min_val` and/or `max_val` to require only that the operand falls within bounds." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "input_data = {\"optic\": lens}\n", "\n", "# add focal length operand with minimum and maximum values\n", "problem.add_operand(\n", " operand_type=\"f2\",\n", " min_val=15,\n", " max_val=18,\n", " weight=1,\n", " input_data=input_data,\n", ")\n", "\n", "# only minimum value or only maximum value can be set. By default, both are None.\n", "# problem.add_operand(operand_type='f2', min_val=15, max_val=None, weight=1,\n", "# input_data=input_data)\n", "# problem.add_operand(operand_type='f2', min_val=None, max_val=18, weight=1,\n", "# input_data=input_data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define variables - let radius of curvature vary for both surfaces, at surface index 1 and 2:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "problem.add_variable(lens, \"radius\", surface_number=1)\n", "problem.add_variable(lens, \"radius\", surface_number=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check initial merit function value and system properties:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "╒════╤════════════════════════╤═══════════════════╕\n", "│ │ Merit Function Value │ Improvement (%) │\n", "╞════╪════════════════════════╪═══════════════════╡\n", "│ 0 │ 7266.02 │ 0 │\n", "╘════╧════════════════════════╧═══════════════════╛\n", "╒════╤════════════════╤══════════╤══════════════╤══════════════╤══════════╤═════════╤═════════╤════════════════╕\n", "│ │ Operand Type │ Target │ Min. Bound │ Max. Bound │ Weight │ Value │ Delta │ Contrib. [%] │\n", "╞════╪════════════════╪══════════╪══════════════╪══════════════╪══════════╪═════════╪═════════╪════════════════╡\n", "│ 0 │ f2 │ │ 15 │ 18 │ 1 │ 103.241 │ 85.241 │ 100 │\n", "╘════╧════════════════╧══════════╧══════════════╧══════════════╧══════════╧═════════╧═════════╧════════════════╛\n", "╒════╤═════════════════╤═══════════╤═════════╤══════════════╤══════════════╕\n", "│ │ Variable Type │ Surface │ Value │ Min. Bound │ Max. Bound │\n", "╞════╪═════════════════╪═══════════╪═════════╪══════════════╪══════════════╡\n", "│ 0 │ radius │ 1 │ 100 │ │ │\n", "│ 1 │ radius │ 2 │ -200 │ │ │\n", "╘════╧═════════════════╧═══════════╧═════════╧══════════════╧══════════════╛\n" ] } ], "source": [ "problem.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define optimizer:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "optimizer = optimization.OptimizerGeneric(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run optimization:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " message: CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL\n", " success: True\n", " status: 0\n", " fun: 0\n", " x: [-8.863e-01 -2.765e+00]\n", " nit: 2\n", " jac: [ 0.000e+00 0.000e+00]\n", " nfev: 12\n", " njev: 4\n", " hess_inv: <2x2 LbfgsInvHessProduct with dtype=float64>" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "optimizer.optimize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print merit function value and system properties after optimization.\n", "\n", "Here we see that the focal length falls within our minimum and maximum bounds." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "╒════╤════════════════════════╤═══════════════════╕\n", "│ │ Merit Function Value │ Improvement (%) │\n", "╞════╪════════════════════════╪═══════════════════╡\n", "│ 0 │ 0 │ 100 │\n", "╘════╧════════════════════════╧═══════════════════╛\n", "╒════╤════════════════╤══════════╤══════════════╤══════════════╤══════════╤═════════╤═════════╤════════════════╕\n", "│ │ Operand Type │ Target │ Min. Bound │ Max. Bound │ Weight │ Value │ Delta │ Contrib. [%] │\n", "╞════╪════════════════╪══════════╪══════════════╪══════════════╪══════════╪═════════╪═════════╪════════════════╡\n", "│ 0 │ f2 │ │ 15 │ 18 │ 1 │ 16.636 │ 0 │ 0 │\n", "╘════╧════════════════╧══════════╧══════════════╧══════════════╧══════════╧═════════╧═════════╧════════════════╛\n", "╒════╤═════════════════╤═══════════╤═══════════╤══════════════╤══════════════╕\n", "│ │ Variable Type │ Surface │ Value │ Min. Bound │ Max. Bound │\n", "╞════╪═════════════════╪═══════════╪═══════════╪══════════════╪══════════════╡\n", "│ 0 │ radius │ 1 │ 11.3715 │ │ │\n", "│ 1 │ radius │ 2 │ -176.461 │ │ │\n", "╘════╧═════════════════╧═══════════╧═══════════╧══════════════╧══════════════╛\n" ] } ], "source": [ "problem.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Draw final lens:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAwwAAAF4CAYAAAD5U36FAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/oUlEQVR4nO3dd1zbdf4H8Nc3IQmQQcLeuwM6aAt0b1u1y9aeq+f2/DlPTz1Xb1irntVTT89Zz3GOO8dVrXbZ2mpbuwedFuhklVFoIRBWEpLv749AWqS0QCHfJLyejwePB9lv3nz5knc+n8/7I4iiKIKIiIiIiOg8ZFIHQERERERE7osFAxERERERtYsFAxERERERtYsFAxERERERtYsFAxERERERtYsFAxERERERtYsFAxERERERtYsFAxERERERtYsFAxERERERtctH6gBcyW63o6SkBFqtFoIgSB0OEREREZEkRFGEyWRCZGQkZLILjyF4VMFgs9nw2muv4csvv4RKpcLp06cxePBgvPDCC0hISLjo40tKShATE+OCSImIiIiI3F9RURGio6MveB9BFEXRRfFcssceewyff/45srKyEBYWhrq6OkyYMAF1dXU4dOjQRauj6upq6PV6HD+RB61W66Koz7Lb7TAajdDr9ReNlboHcy4N5t31mHPXY86lwby7HnPueq7IuclkQlJiAoxGIwICAi54X48aYXj//fcxb948hIWFAQDUajVuueUW/OEPf8DJkycRGxt7wce3TEPSarXQ6XQ9Hu+v2e122Gw26HQ6/sG5CHMuDebd9Zhz12POpcG8ux5z7nquzHlHpul7VMHg4+ODhoaGVteZTCb4+/sjODi4zf3NZjPMZrPzck1NDQDHL8Fut/dssOdht9shiqIkr91bMefSYN5djzl3PeZcGsy76zHnrueKnHfmuT2qYLj//vvx6quv4sEHH8TQoUNRVlaG//73v3jttdfg7+/f5v6LFi3CwoUL21xvNBphs9lcEXIromiHyVQLQIQgsEJ3BeZcGsy76zHnrsecS4N5dz3m3PVckXOTydTh+3pUwbBgwQKcOnUKw4YNw8CBA3HixAmMHDkSs2bNOu/958+fj0ceecR5uaamBjExMdDr9ZJNSQIEzgF0IeZcGsy76zHnrsecS4N5dz3m3PVckXO5XN7h+3pUwfDaa69h3bp1OH78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PbZs2SLOnj1b7Nu3rzh27Fhx8ODB4mOPPcYe6T3giy++EFNSUsQxY8aIw4cPF7/99lupQ/JqH3/8sThu3Dhx4MCB4ujRo8WMjAxx8eLFUoflVU6ePCmOGTNGDA4Odp7Do6Ojxauuusp5n71794qjR48Whw0bJmZkZIjPPvtsqze41DkXyznP6d0vJSXFmetzv1oKBlF0n+NcEEVRdO2YBhEREREReQquYSAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiIiIionaxYCAiokt22223Qa/XY+LEiZg5c6bLX3/mzJmYOHEi9Ho9brvtNpe/PhGRN/OROgAiInIf+fn5SEhIQEBAAAYPHgyZzPG50sGDB2E0GpGdnY1+/fqd97FDhgzBhg0bXBjtWStWrAAATJw4UZLXJyLyZiwYiIioFUEQsHHjRqSlpQEATp48iX79+uHWW29tt1ggIiLvxSlJRETk5OvrizvuuMNZLADAk08+CUEQ8Le//U3CyIiISCosGIiIyCk8PBzvv/++8/KOHTvw2Wef4cknn0RERESHn6e+vh6zZs2CIAhYuXIl/vznP2PEiBGIj4/HDz/8gLVr1+L2229HXFwcrr32WjQ1NQEAsrOzMWjQIPj4+CAnJwf3338/kpKSkJmZiYKCArz77ru45pprEB4ejhdeeKHbf34iImqLBQMREbXr4YcfRkxMDP74xz926nH+/v549dVXAQBvvvkm/vSnP2H79u2IjIzEvHnzcOTIEfz73//G6tWr8dVXX+Gbb74BAKSmpuIPf/gDbDYbPvvsM7z11lvYtWsXsrOzMX78eAwZMgRfffUVFixYgL/85S8oLS3t9p+ZiIhaY8FARETn9fnnn2Pbtm144YUX4Ofn1+nH+/g4lsndddddUKvVEAQBo0aNAgDcf//9AICUlBQYDAYcOXKkzeMeeeQRAEBgYCD69++PjIwMjBgxAgAwZswY2Gw2HD9+vOs/IBERdQgLBiIiaqOhoQFPPvkkRo4ciRtuuOGSnkur1Tq/12g0rS633N4yJamjj2v5/nyPIyKi7sUuSURE1MbLL7+MoqIifPnllxAEodue93zP1ZHn//V9ujMmIiK6MI4wEBFRKyUlJXjxxRcxb948jBw50nn9XXfdhZ9//lnCyIiISAosGIiIqJX58+fDbre36kJkNBrxzTffwG63d/h5zGYzAMBisTivq6+vb3W55Tqr1dqpx9XX1wNAq8cREVHPYMFAREROubm5+PTTT+Hr64ubb74ZEydOxMSJE5GSkoIzZ8506rmeeOIJAMCzzz6LiooK7N+/H//9739RWlqKv//97wCAF198ERUVFfj000+RlZWFkydP4o033gAAPPDAAwAci6/37t2LVatW4YcffoAoinjssccAAM888wyqqqq668cnIqLzEERRFKUOgoiIPNttt92G/Px8bNiwQdI4Jk6ciPj4eHz00UeSxkFE5E04wkBERERERO1iwUBERERERO1iW1UiIuoW+/btw8SJE6HRaLBixQqXvvbMmTNRW1uLffv2IT4+3qWvTUTk7biGgYiIiIiI2sUpSURERERE1C4WDERERERE1C4WDERERERE1C4WDERERERE1C4WDERERERE1C4WDERERERE1C4WDERERERE1C4WDERERERE1K7/B7PETEdZAXhVAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lens.image_solve() # move image plane to the paraxial focus\n", "lens.draw(num_rays=5)" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.1" } }, "nbformat": 4, "nbformat_minor": 2 }