{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Global Optimization (Differential Evolution)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following global optimizers are implemented in Optiland:\n", "1. Differential Evolution\n", "2. Dual Annealing\n", "3. SHGO\n", "4. Basin-hopping\n", "\n", "These optimizers wrap the scipy.optimize implementations." ] }, { "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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VN7t3njjDa6++mrcbjfhcJivf/3rBVrx4vG1r32NK664Aq/XSygUmvE2nZ2dbN++Ha/XS01NDX/8x39MJpNZ2IUuQt/97ndZtmwZbrebLVu28MorrxR6SYvKc889x7vf/W4aGhrQNI2f/vSnedcrpfjyl79MfX09Ho+Hbdu2ceDAgcIsdpG47777uPTSSykrK6Ompob3vve9dHR05N0mkUjw2c9+lsrKSvx+P7/+679Ob29vgVa8OPzt3/4tGzduJBAIEAgE2Lp1K4888kjuernPF8b999+Ppml84QtfyF0m9/3c++pXv4qmaXkva9asyV0v9/nCkRA0B/bt24dpmnz/+9/nzTff5H/+z//J9773Pf7zf/7PudvEYjFuuukmmpubee211/jGN77BV7/6Vf7u7/6ugCsvfalUig9+8IPceeedM15vGAbbt28nlUrxwgsv8MMf/pAHHniAL3/5ywu80sXlRz/6EXfddRdf+cpX2LlzJ5s2beLmm2/m1KlThV7aojE2NsamTZv47ne/O+P1X//61/n2t7/N9773PV5++WV8Ph8333wziURigVe6eDz77LN89rOf5aWXXuKJJ54gnU5z0003MTY2lrvNF7/4Rf7jP/6Df/u3f+PZZ5/lxIkTvP/97y/gqktfU1MT999/P6+99hqvvvoqN9xwA+95z3t48803AbnPF8KvfvUrvv/977Nx48a8y+W+nx/r1q3j5MmTuZdf/OIXuevkPl9ASsyLr3/966qlpSX3/t/8zd+o8vJylUwmc5f9yZ/8iWptbS3E8hadH/zgByoYDE67/OGHH1a6rquenp7cZX/7t3+rAoFA3r+FOD+XXXaZ+uxnP5t73zAM1dDQoO67774CrmrxAtRPfvKT3Pumaaq6ujr1jW98I3fZ8PCwcrlc6l//9V8LsMLF6dSpUwpQzz77rFLKuo8dDof6t3/7t9xt3n77bQWoF198sVDLXJTKy8vV//pf/0vu8wUwMjKiVq1apZ544gl17bXXqs9//vNKKfl5ny9f+cpX1KZNm2a8Tu7zhSU7QfMkGo1SUVGRe//FF1/kmmuuwel05i67+eab6ejoYGhoqBBLXBJefPFFNmzYQG1tbe6ym2++mVgslvsrozg/qVSK1157jW3btuUu03Wdbdu28eKLLxZwZUvHkSNH6Onpyfs3CAaDbNmyRf4N5lA0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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lens = optic.Optic()\n", "\n", "# add surfaces\n", "lens.surfaces.add(index=0, radius=np.inf, thickness=np.inf)\n", "lens.surfaces.add(index=1, radius=40, thickness=5, material=\"SK16\", is_stop=True)\n", "lens.surfaces.add(index=2, radius=-100, thickness=50)\n", "lens.surfaces.add(index=3)\n", "\n", "# set aperture\n", "lens.set_aperture(aperture_type=\"EPD\", value=20)\n", "\n", "# set fields\n", "lens.fields.set_type(field_type=\"angle\")\n", "lens.fields.add(y=0)\n", "lens.fields.add(y=5)\n", "\n", "# set wavelength\n", "lens.wavelengths.add(value=0.55, is_primary=True)\n", "\n", "lens.draw()" ] }, { "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):" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\"\"\"\n", "Add a focal length operand and wavefront error operands for all fields.\n", "\n", "Use Gaussian quadrature distribution for the rays (see distribution documentation for\n", "more information).\n", "\"\"\"\n", "\n", "# focal length target\n", "input_data = {\"optic\": lens}\n", "problem.add_operand(operand_type=\"f2\", target=60, weight=1, input_data=input_data)\n", "\n", "# wavefront error target\n", "for field in lens.fields.get_field_coords():\n", " input_data = {\n", " \"optic\": lens,\n", " \"Hx\": field[0],\n", " \"Hy\": field[1],\n", " \"num_rays\": 3,\n", " \"wavelength\": 0.55,\n", " \"distribution\": \"gaussian_quad\",\n", " }\n", " problem.add_operand(\n", " operand_type=\"OPD_difference\",\n", " target=0,\n", " weight=1,\n", " input_data=input_data,\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define variables - let both radii of curvature vary. We will use differential evolution, which requires bounds for all variables." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "problem.add_variable(lens, \"radius\", surface_number=1, min_val=-500, max_val=500)\n", "problem.add_variable(lens, \"radius\", surface_number=2, min_val=-500, max_val=500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let thicknesses to image plane vary:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "problem.add_variable(lens, \"thickness\", surface_number=2, min_val=30, max_val=100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check initial merit function value and system properties:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "╒════╤════════════════════════╤═══════════════════╕\n", "│ │ Merit Function Value │ Improvement (%) │\n", "╞════╪════════════════════════╪═══════════════════╡\n", "│ 0 │ 3716.81 │ 0 │\n", "╘════╧════════════════════════╧═══════════════════╛\n", "╒════╤════════════════╤══════════╤══════════╤═════════╤══════════╤════════════════════╕\n", "│ │ Operand Type │ Target │ Weight │ Value │ Delta │ Contribution (%) │\n", "╞════╪════════════════╪══════════╪══════════╪═════════╪══════════╪════════════════════╡\n", "│ 0 │ f2 │ 60 │ 1 │ 46.5275 │ -13.4725 │ 4.88345 │\n", "│ 1 │ OPD difference │ 0 │ 1 │ 56.0052 │ 56.0052 │ 84.3891 │\n", "│ 2 │ OPD difference │ 0 │ 1 │ 19.968 │ 19.968 │ 10.7275 │\n", "╘════╧════════════════╧══════════╧══════════╧═════════╧══════════╧════════════════════╛\n", "╒════╤═════════════════╤═══════════╤═════════╤══════════════╤══════════════╕\n", "│ │ Variable Type │ Surface │ Value │ Min. Bound │ Max. Bound │\n", "╞════╪═════════════════╪═══════════╪═════════╪══════════════╪══════════════╡\n", "│ 0 │ radius │ 1 │ 40 │ -500 │ 500 │\n", "│ 1 │ radius │ 2 │ -100 │ -500 │ 500 │\n", "│ 2 │ thickness │ 2 │ 50 │ 30 │ 100 │\n", "╘════╧═════════════════╧═══════════╧═════════╧══════════════╧══════════════╛\n" ] } ], "source": [ "problem.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define optimizer:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "optimizer = optimization.DifferentialEvolution(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run optimization:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ " message: Optimization terminated successfully.\n", " success: True\n", " fun: 3.612745542781897\n", " x: [-5.386e-01 -2.897e+00 4.682e+00]\n", " nit: 69\n", " nfev: 3462\n", " population: [[-5.386e-01 -2.897e+00 4.682e+00]\n", " [-5.320e-01 -2.821e+00 4.705e+00]\n", " ...\n", " [-5.352e-01 -2.862e+00 4.696e+00]\n", " [-5.356e-01 -2.837e+00 4.676e+00]]\n", " population_energies: [ 3.613e+00 3.772e+00 ... 3.656e+00 3.675e+00]\n", " jac: [ 1.009e+03 2.971e+01 4.932e+01]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# workers=-1 uses all available cores\n", "optimizer.optimize(maxiter=256, disp=False, workers=-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Print merit function value and system properties after optimization:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "╒════╤════════════════════════╤═══════════════════╕\n", "│ │ Merit Function Value │ Improvement (%) │\n", "╞════╪════════════════════════╪═══════════════════╡\n", "│ 0 │ 3.61275 │ 99.9028 │\n", "╘════╧════════════════════════╧═══════════════════╛\n", "╒════╤════════════════╤══════════╤══════════╤══════════╤══════════╤════════════════════╕\n", "│ │ Operand Type │ Target │ Weight │ Value │ Delta │ Contribution (%) │\n", "╞════╪════════════════╪══════════╪══════════╪══════════╪══════════╪════════════════════╡\n", "│ 0 │ f2 │ 60 │ 1 │ 60.1043 │ 0.104299 │ 0.301108 │\n", "│ 1 │ OPD difference │ 0 │ 1 │ 1.30422 │ 1.30422 │ 47.0832 │\n", "│ 2 │ OPD difference │ 0 │ 1 │ 1.37872 │ 1.37872 │ 52.6157 │\n", "╘════╧════════════════╧══════════╧══════════╧══════════╧══════════╧════════════════════╛\n", "╒════╤═════════════════╤═══════════╤═══════════╤══════════════╤══════════════╕\n", "│ │ Variable Type │ Surface │ Value │ Min. Bound │ Max. Bound │\n", "╞════╪═════════════════╪═══════════╪═══════════╪══════════════╪══════════════╡\n", "│ 0 │ radius │ 1 │ 46.1442 │ -500 │ 500 │\n", "│ 1 │ radius │ 2 │ -189.732 │ -500 │ 500 │\n", "│ 2 │ thickness │ 2 │ 56.8164 │ 30 │ 100 │\n", "╘════╧═════════════════╧═══════════╧═══════════╧══════════════╧══════════════╛\n" ] } ], "source": [ "problem.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Draw final lens:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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u5BOp40rnISZUqmE5557DnfeeaexTpIk3HnnnTh8+HADR7Z5OH36NGZnZ03H2OfzYd++fXSML5PFxUUAMM6nzz33HBRFMR3b8fFxDAwM0LFdJaqq4pFHHkE2m8X+/fvpmK4D9957L97+9rebjiFA39crYWJiAj09PdiyZQt+/ud/HtPT0wDomF4J//f//l/ccMMNeO9734toNIrrr78e//2//3dje7v9dpEI2gBOnDiBL3/5y/iVX/kVY93s7Kxpog7AeDw7O3tVx7eZoON6+SQSCaiquuJxo2O2PlSOIx3jK0PTNHziE5/ALbfcgmuvvRaAOLY2m62uRpCO7aV55ZVX4PF4YLfb8au/+qv45je/iR07dtAxvUIeeeQRPP/883jooYfqttGxXRv79u3D17/+dXznO9/BV7/6VZw+fRoHDhzA0tISHdMr4NSpU/jqV7+K0dFRfPe738U999yDX//1X8c3vvENAO3320Ui6CLcf//9dYV5y29Hjx41vebcuXN461vfive+97346Ec/2qCRNzdrOa4EQbQf9957L1599VU88sgjjR7KpmDbtm148cUX8dRTT+Gee+7B3Xffjddff73Rw2ppzpw5g9/4jd/A3/zN38DhcDR6OJuGt73tbXjve9+LXbt24a677sK//du/YWFhAX//93/f6KG1NJqmYc+ePfiDP/gDXH/99fjYxz6Gj370o3j44YcbPbSGYG30AJqZT33qU/jwhz980eds2bLFWJ6ZmcFtt92Gm2++uc7woKurq865pPK4q6trfQbcIlzucb0YXV1dda5m7XpcV0s4HIbFYlnx+0jHbH2oHMe5uTl0d3cb6+fm5nDdddc1aFStxcc//nH8y7/8Cw4dOoS+vj5jfVdXF0qlEhYWFkxXgun7e2lsNhtGRkYAAHv37sUzzzyD//pf/yve97730TFdI8899xxisRj27NljrFNVFYcOHcJ/+2//Dd/97nfp2K4Dfr8fY2NjOHHiBN785jfTMV0j3d3d2LFjh2nd9u3b8Y//+I8A2u+3iyJBFyESiWB8fPyit0qNz7lz5/CmN70Je/fuxde+9jVIkvnQ7t+/H4cOHYKiKMa6733ve9i2bZvJlaMduJzjein279+PV155xeRq9r3vfQ8dHR11/+iEwGazYe/evfjBD35grNM0DT/4wQ+wf//+Bo5s8zA8PIyuri7TMU6n03jqqafoGF8Czjk+/vGP45vf/Cb+4z/+A8PDw6bte/fuhSzLpmN77NgxTE9P07G9TDRNQ7FYpGN6Bdxxxx145ZVX8OKLLxq3G264AT//8z9vLNOxvXIymQxOnjyJ7u5u+r5eAbfccktdy4Hjx49jcHAQQBv+djXamWEzcPbsWT4yMsLvuOMOfvbsWX7+/HnjVmFhYYF3dnbyD33oQ/zVV1/ljzzyCHe5XPzP//zPGzjy5mdqaoq/8MIL/MEHH+Qej4e/8MIL/IUXXuBLS0ucc87L5TK/9tpr+Vve8hb+4osv8u985zs8EonwBx54oMEjb24eeeQRbrfb+de//nX++uuv84997GPc7/ebXPaIi7O0tGR8HwHwL33pS/yFF17gU1NTnHPOv/CFL3C/38//z//5P/zll1/m73rXu/jw8DDP5/MNHnlzc88993Cfz8d/9KMfmc6luVzOeM6v/uqv8oGBAf4f//Ef/Nlnn+X79+/n+/fvb+Com5/777+f//jHP+anT5/mL7/8Mr///vs5Y4z/+7//O+ecjul6UusOxzkd27XwqU99iv/oRz/ip0+f5o8//ji/8847eTgc5rFYjHNOx3StPP3009xqtfLPf/7zfGJigv/N3/wNd7lc/K//+q+N57TTbxeJoHXga1/7Ggew4q2Wl156id96663cbrfz3t5e/oUvfKFBI24d7r777hWP6w9/+EPjOZOTk/xtb3sbdzqdPBwO80996lNcUZTGDbpF+PKXv8wHBga4zWbjN910E3/yyScbPaSW4oc//OGK3827776bcy6sRn/3d3+Xd3Z2crvdzu+44w5+7Nixxg66BbjQufRrX/ua8Zx8Ps9/7dd+jQcCAe5yufhP/dRPmS46EfV85CMf4YODg9xms/FIJMLvuOMOQwBxTsd0PVkugujYXj7ve9/7eHd3N7fZbLy3t5e/733v4ydOnDC20zFdO//8z//Mr732Wm632/n4+Dj/i7/4C9P2dvrtYpxzfhUDTwRBEARBEARBEA2FaoIIgiAIgiAIgmgrSAQRBEEQBEEQBNFWkAgiCIIgCIIgCKKtIBFEEARBEARBEERbQSKIIAiCIAiCIIi2gkQQQRAEQRAEQRBtBYkggiAIgiAIgiDaChJBBEEQBEEQBEG0FSSCCIIgCIIgCIJoK0gEEQRBEARBEATRVpAIIgiCIAiCIAiirfj/AeuEk+rZsb7/AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "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 }