{ "cells": [ { "cell_type": "markdown", "metadata": { "vscode": { "languageId": "plaintext" } }, "source": [ "# Tutorial 10c - Custom Optimization Algorithms" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "nbsphinx-toctree" ] }, "source": [ "### November 2024" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This tutorial demonstrates how to define a custom optimization algorithm in Optiland. There are already several optimization algorithms available in Optiland, including a least squares optimizer, dual annealing, differential evolution, and a generic optimizer that wraps `scipy.optimize.minimize`. While the existing algorithms may cover most use cases, it is sometimes necessary to implement a custom algorithm to meet specific requirements.\n", "\n", "In this tutorial, we will create a _random walk optimizer_, which traverses the design space by making random steps and evaluating the objective function at each step. This is a very simple (and inefficient) strategy for optimization, but it will demonstrate how to integrate a custom algorithm into the Optiland framework." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:18.382856Z", "iopub.status.busy": "2026-03-24T09:48:18.382692Z", "iopub.status.idle": "2026-03-24T09:48:21.857864Z", "shell.execute_reply": "2026-03-24T09:48:21.857377Z" } }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "from optiland import analysis, optic, optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our goal will be to optimize the coefficients of an aspheric singlet to minimize the RMS spot size. We start by first defining this singlet with all aspheric coefficients set to zero." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:21.860054Z", "iopub.status.busy": "2026-03-24T09:48:21.859774Z", "iopub.status.idle": "2026-03-24T09:48:21.864080Z", "shell.execute_reply": "2026-03-24T09:48:21.863630Z" } }, "outputs": [], "source": [ "class AsphericSinglet(optic.Optic):\n", " \"\"\"Aspheric singlet\"\"\"\n", "\n", " def __init__(self):\n", " super().__init__()\n", "\n", " # add surfaces\n", " self.surfaces.add(index=0, radius=np.inf, thickness=np.inf)\n", " self.surfaces.add(\n", " index=1,\n", " thickness=7,\n", " radius=20.0,\n", " is_stop=True,\n", " material=\"N-SF11\",\n", " surface_type=\"even_asphere\",\n", " conic=0.0,\n", " coefficients=[0, 0, 0],\n", " )\n", " self.surfaces.add(index=2, thickness=21.56201105)\n", " self.surfaces.add(index=3)\n", "\n", " # add aperture\n", " self.set_aperture(aperture_type=\"EPD\", value=20.0)\n", "\n", " # add field\n", " self.fields.set_type(field_type=\"angle\")\n", " self.fields.add(y=0)\n", "\n", " # add wavelength\n", " self.wavelengths.add(value=0.55, is_primary=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we need to define our optimization algorithm. This is a class that inherits from `optimization.OptimizerGeneric`. This class has two requirements:\n", "\n", "1. The constructor must accept the optimization problem as an argument. This is an instance of `optimization.OptimizationProblem`.\n", "2. The class must implement the `optimize` method.\n", "\n", "The optimization algorithm is as follows:\n", "\n", "1. Get current variable values (\"position\") and the objective function value.\n", "2. Save the initial position in case we want to undo the optimization later (optional, but good practice).\n", "3. Generate a random step.\n", "4. Calculate the objective function at the new position.\n", "5. If the new position is better, accept the step.\n", "6. Continue for the maximum number of steps.\n", "7. Update the variables to the optimal position." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:21.865864Z", "iopub.status.busy": "2026-03-24T09:48:21.865716Z", "iopub.status.idle": "2026-03-24T09:48:21.869705Z", "shell.execute_reply": "2026-03-24T09:48:21.869368Z" } }, "outputs": [], "source": [ "class RandomWalkOptimizer(optimization.OptimizerGeneric):\n", " def __init__(self, problem):\n", " super().__init__(problem)\n", "\n", " def optimize(self, max_steps=100, delta=0.1, seed=42):\n", " # Set random seed\n", " np.random.seed(seed)\n", "\n", " # Get current position and objective function value\n", " current_position = [var.value for var in self.problem.variables]\n", " current_value = self._fun(current_position)\n", " num_variables = len(current_position)\n", "\n", " # save initial position to be able to revert\n", " self._x.append(current_position)\n", "\n", " # Save values of each iteration\n", " values = [current_value]\n", "\n", " for _ in range(max_steps):\n", " # Generate a random step\n", " random_step = np.random.randn(num_variables) * delta\n", " new_position = current_position + random_step\n", "\n", " # Calculate the objective function value at the new position\n", " new_value = self._fun(new_position)\n", " values.append(new_value)\n", "\n", " # If the new value is better, accept the step\n", " if new_value < current_value:\n", " current_position = new_position\n", " current_value = new_value\n", "\n", " # Update the variables with the best position\n", " for idvar, var in enumerate(self.problem.variables):\n", " var.update(current_position[idvar])\n", "\n", " return values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create and draw the starting point lens." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:21.871501Z", "iopub.status.busy": "2026-03-24T09:48:21.871337Z", "iopub.status.idle": "2026-03-24T09:48:21.988299Z", "shell.execute_reply": "2026-03-24T09:48:21.987929Z" } }, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0cAAAFzCAYAAAD1znIRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAe2lJREFUeJzt3Qd4VVX2NvCX9N57rxAghd6rooKCYsGGo6KoYPmPYxnbN7YZy9hnRDoiWFBHdCxjQ6WDVOk9jVQSEtL7vfmetS83JEAggSTnlvf3PIeb25LNzc45Z52991rdGhsbG0FERERERGTlbLRuABERERERkSlgcERERERERMTgiIiIiIiIyIDBEREREREREYMjIiIiIiIiAwZHREREREREDI6IiIiIiIgMGBwREREREREBsNO6AZZAr9ejoqICDg4O6Natm9bNISIiIiKiZhobG1FXVwc3NzfY2LQ+PsTgqANIYPT2229r3QwiIiIiIjqHv/zlL/Dw8Gj1eQZHHUBGjIwftqOjo6YRsQRqEhFzBIvOh/2F2oP9hdqD/YXag/2FuqK/1NbWqsEM43l7axgcdQDjL0YCI62Do/r6etUG7lzofNhfqD3YX6g92F+oPdhfqCv7y/new4QMREREREREDI6IiIiIiIgMGBwRERERERExOCIiIiIiIjJgcERERERERMRsdURE1BrJBjRu3DgcP368qeC1FM775JNPkJKSonXziIiIOhxHjoiI6Kzs7e0xYcIE7Nu3T20HDhyAr68vkpOTtW4aERFRpzCr4Gj79u2q0Or48eMxYMAArFq16oy853PnzsUVV1yB4cOH4/7778fRo0fP+30///xzTJo0CcOGDcMdd9yBPXv2dOL/gojIfDzwwAMqIDJ67rnnWIeEiIgsllkFR9XV1YiPj8cTTzxx1ueXLFmCTz/9FE899RQ++OADODk54aGHHlIVcVvz888/q2q599xzDz766CN0795dvae4uLgT/ydERObB3d0djz32mPpaLjqNHTtW6yYRERF1GrMKjoyjQWc7OMuo0bJly3D33XdjzJgxKoh68cUXUVhYeMYIU3Mff/wxJk+ejKuvvhoxMTEqsJKg6ptvvunk/w0RkXmNHsn+kaNGRERkySwmIUNOTg6KioowaNCgpsfc3NyQmJiI3bt3q6l2Z1tsLHPop02b1vSYLDaW77Fr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FIFat0PaYG9vz1SYdF7sL9Qe7C/UHuwv1B7sL9QV/cV4nn6+KkYMjjpAXV2dun377be1bgoREREREZ3jvN3Jyam1p1kEtiPo9XpVjMrBwUHTKx7Shquuugr/+9//VGEsonNhf6H2YH+h9mB/ofZgf6Gu6C8S8khgJO+xsWl9ZRFHjjqAfMAeHh5aNwP19fVoaGhQVX/PVfmXSLC/UHuwv1B7sL9Qe7C/UFf1l3ONGBkxIQMRERERERGDIyIiIiIiIgMGRxZE1jzdc8896pbofNhfqD3YX6g92F+oPdhfyJT6CxMyEBERERERceSIiIiIiIjIgMERERERERERgyMiIiIiIiIDBkdEREREREQsAmsZcnNzsXDhQmzduhVFRUXw8/PDlVdeibvuugv29vZNrzt8+DD++c9/Yt++ffD29saNN96IO+64Q9O2U9dbtGgR1q9fj4MHD6r+sWrVqjNek5+fj1deeUX1KRcXF0ycOBEPPPAA7Oy4y7BGn3/+OT788EO1f4mPj8fjjz+OxMRErZtFGtu+fbvqF/v378fx48fxxhtvYMyYMU3PS76nefPm4auvvlIV7VNSUvDkk08iIiJC03aTNhYvXoyVK1ciIyNDFe5MTk7GQw89hKioqKbX1NbW4p133sHPP/+Muro6DBkyRPUZX19fTdtOXe+LL75QW15enrofExOD6dOnY/jw4Z3eVzhyZAFkRyMHoaeffhqfffYZHnnkESxfvhzvvfde02vkwPTggw8iODhYHcz+7//+D/Pnz8eXX36padup60lV6UsvvRQ33HDDWZ/X6XT485//rCpQv//++3j++efx7bffqpMcsj5y4Hn77bdV2tSPPvoI3bt3Vyc0xcXFWjeNNFZdXa2C5SeeeOKszy9ZsgSffvopnnrqKXzwwQeqMr30HTmpIesMpqdMmaKCJDk/kWORnJdIPzJ66623sGbNGrz66qvqHEWCbrkYQ9YnICBA9Q85Z126dCkGDBiARx99FKmpqZ3fVySVN1meJUuWNF599dVN9//zn/80jh07trGurq7psX//+9+N1113nUYtJK198803jaNHjz7j8XXr1jUOHDiw8fjx4y36z6hRo1r0H7IOt99+e+Orr77adF+n0zWOHz++cfHixZq2i0xL//79G1euXNl0X6/XN15++eWNS5cubXqsvLy8cejQoY0//vij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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lens = AsphericSinglet()\n", "lens.draw(num_rays=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now create the optimization problem, add our operand (RMS spot size target) and variables (3 aspheric coefficients)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:21.989880Z", "iopub.status.busy": "2026-03-24T09:48:21.989713Z", "iopub.status.idle": "2026-03-24T09:48:21.992650Z", "shell.execute_reply": "2026-03-24T09:48:21.992074Z" } }, "outputs": [], "source": [ "problem = optimization.OptimizationProblem()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:21.994129Z", "iopub.status.busy": "2026-03-24T09:48:21.993973Z", "iopub.status.idle": "2026-03-24T09:48:21.996810Z", "shell.execute_reply": "2026-03-24T09:48:21.996412Z" } }, "outputs": [], "source": [ "input_data = {\n", " \"optic\": lens,\n", " \"surface_number\": -1,\n", " \"Hx\": 0,\n", " \"Hy\": 0,\n", " \"num_rays\": 5,\n", " \"wavelength\": 0.55,\n", " \"distribution\": \"hexapolar\",\n", "}\n", "\n", "# add RMS spot size operand\n", "problem.add_operand(\n", " operand_type=\"rms_spot_size\",\n", " target=0,\n", " weight=1,\n", " input_data=input_data,\n", ")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:21.998234Z", "iopub.status.busy": "2026-03-24T09:48:21.998081Z", "iopub.status.idle": "2026-03-24T09:48:22.000897Z", "shell.execute_reply": "2026-03-24T09:48:22.000487Z" } }, "outputs": [], "source": [ "problem.add_variable(lens, \"asphere_coeff\", surface_number=1, coeff_number=0)\n", "problem.add_variable(lens, \"asphere_coeff\", surface_number=1, coeff_number=1)\n", "problem.add_variable(lens, \"asphere_coeff\", surface_number=1, coeff_number=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We print the optimization problem info to see the current status." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:22.002394Z", "iopub.status.busy": "2026-03-24T09:48:22.002198Z", "iopub.status.idle": "2026-03-24T09:48:22.017561Z", "shell.execute_reply": "2026-03-24T09:48:22.017103Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "╒════╤════════════════════════╤═══════════════════╕\n", "│ │ Merit Function Value │ Improvement (%) │\n", "╞════╪════════════════════════╪═══════════════════╡\n", "│ 0 │ 0.612344 │ 0 │\n", "╘════╧════════════════════════╧═══════════════════╛\n", "╒════╤════════════════╤══════════╤══════════════╤══════════════╤══════════╤═════════╤═════════╤════════════════╕\n", "│ │ Operand Type │ Target │ Min. Bound │ Max. Bound │ Weight │ Value │ Delta │ Contrib. [%] │\n", "╞════╪════════════════╪══════════╪══════════════╪══════════════╪══════════╪═════════╪═════════╪════════════════╡\n", "│ 0 │ rms spot size │ 0 │ │ │ 1 │ 0.783 │ 0.783 │ 100 │\n", "╘════╧════════════════╧══════════╧══════════════╧══════════════╧══════════╧═════════╧═════════╧════════════════╛\n", "╒════╤═════════════════╤═══════════╤═════════╤══════════════╤══════════════╕\n", "│ │ Variable Type │ Surface │ Value │ Min. Bound │ Max. Bound │\n", "╞════╪═════════════════╪═══════════╪═════════╪══════════════╪══════════════╡\n", "│ 0 │ asphere_coeff │ 1 │ 0 │ │ │\n", "│ 1 │ asphere_coeff │ 1 │ 0 │ │ │\n", "│ 2 │ asphere_coeff │ 1 │ 0 │ │ │\n", "╘════╧═════════════════╧═══════════╧═════════╧══════════════╧══════════════╛\n" ] } ], "source": [ "problem.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now create an optimizer using our `RandomWalkOptimizer` class. We pass the optimization problem as an argument." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:22.019155Z", "iopub.status.busy": "2026-03-24T09:48:22.018972Z", "iopub.status.idle": "2026-03-24T09:48:22.023183Z", "shell.execute_reply": "2026-03-24T09:48:22.022528Z" } }, "outputs": [], "source": [ "optimizer = RandomWalkOptimizer(problem)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can run the optimization by calling the `optimize`. We choose to run the optimization for 1000 steps and use a `delta` value of 0.1. The `delta` value controls the size of the step in each iteration." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:22.024988Z", "iopub.status.busy": "2026-03-24T09:48:22.024777Z", "iopub.status.idle": "2026-03-24T09:48:23.395465Z", "shell.execute_reply": "2026-03-24T09:48:23.395006Z" } }, "outputs": [], "source": [ "values = optimizer.optimize(max_steps=1000, delta=0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the author's machine, the optimization completes in 2 seconds. Let's print the problem information to see whether optimization was successful." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:23.397130Z", "iopub.status.busy": "2026-03-24T09:48:23.396964Z", "iopub.status.idle": "2026-03-24T09:48:23.407683Z", "shell.execute_reply": "2026-03-24T09:48:23.407274Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "╒════╤════════════════════════╤═══════════════════╕\n", "│ │ Merit Function Value │ Improvement (%) │\n", "╞════╪════════════════════════╪═══════════════════╡\n", "│ 0 │ 5.48352e-06 │ 99.9991 │\n", "╘════╧════════════════════════╧═══════════════════╛\n", "╒════╤════════════════╤══════════╤══════════════╤══════════════╤══════════╤═════════╤═════════╤════════════════╕\n", "│ │ Operand Type │ Target │ Min. Bound │ Max. Bound │ Weight │ Value │ Delta │ Contrib. [%] │\n", "╞════╪════════════════╪══════════╪══════════════╪══════════════╪══════════╪═════════╪═════════╪════════════════╡\n", "│ 0 │ rms spot size │ 0 │ │ │ 1 │ 0.002 │ 0.002 │ 100 │\n", "╘════╧════════════════╧══════════╧══════════════╧══════════════╧══════════╧═════════╧═════════╧════════════════╛\n", "╒════╤═════════════════╤═══════════╤══════════════╤══════════════╤══════════════╕\n", "│ │ Variable Type │ Surface │ Value │ Min. Bound │ Max. Bound │\n", "╞════╪═════════════════╪═══════════╪══════════════╪══════════════╪══════════════╡\n", "│ 0 │ asphere_coeff │ 1 │ -0.000260867 │ │ │\n", "│ 1 │ asphere_coeff │ 1 │ -8.99569e-06 │ │ │\n", "│ 2 │ asphere_coeff │ 1 │ -3.55134e-08 │ │ │\n", "╘════╧═════════════════╧═══════════╧══════════════╧══════════════╧══════════════╛\n" ] } ], "source": [ "problem.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Indeed, the objective function value is minimized. We also draw the lens and generate the spot diagram to confirm." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:23.409394Z", "iopub.status.busy": "2026-03-24T09:48:23.409108Z", "iopub.status.idle": "2026-03-24T09:48:23.488035Z", "shell.execute_reply": "2026-03-24T09:48:23.487622Z" } }, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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GB9//DEKCwvh6enZ622orGvEwTz9WiHdeqGyWt2oUJi7rQpBV8fJqJADQt1tYclRISIio8VwREREBi02NhYbN27E7t27MX78+B79Xk3NzUgrrlXrhNSoUE4VUopr0QzAycZCBaBrEzxVBbkoHwc421r2aHuIiKh3MRwREZFBk01gZe3Rp59+iqKiInh4eHTb1y6raVAjQfpS2jJCVFnXBBn8kbVB8f4OmD3IS40OBbnZwMIES4oTEdEpDEdERGTwEhIS8PPPP6vRo0svvfSCvkZjU7MaBWpbQS6tpE7d52pnqUaFbmgJQlE+9nCw4agQEZG5MZpw9O677+L333/H4cOHYW1traZYnC4nJwfPPvsstm3bBgcHB0ybNg133nknrKw6/jFLS0vx4osv4tdff1Vz22XKxn333ac+n4iIDGf0SNYeffbZZ50ePSqpbmgJQbqRIRkVqq5vgmwf1M/TDkODnDB/qIOaIhfgYmOSG80SEZGJhqOGhgZMmDAB8fHxamrF6RobG/G3v/1NLdZ97733UFBQgMcee0wFIwlIHXnkkUfUY1977TX1PZ544gk8/fTT6iAiIsMxcOBA9UbWrl27zlh71NDYrCrG6dYKVeFATjUyy3SjQh72Vojxs8eCod5qVGiAtz3srC00+imIiMiQGU04uu2229Tl559/ftb7t2zZgpMnT+L1119XAUnKv95+++1YtGgRbr31VjXadDp5/KZNm7Bs2TLExMSo2+6//34Vsu655x54e3v38E9FRERdHT2SN8iOZeQhq86uda3Q4fxq1DY0q/2DIr3skBjqrPYUkv2FfJ2sOSpERESmFY7OR3ZQj4iIaFfmNTExEc899xyOHz+OqKioMz5H9s1wdnZuDUZixIgR6gl43759Hc5rr6urU4debW1t694XcmihsrYBQ/71naqopHsJwBcCdD7N7C/UaVVpe9HHygb231Vp3F+a0dA4FEs/z1PXHPvUwceiEoMsK+FjXwVPiypYVTUDJ4EsOWBaJOTJjAitnms6S/98aOjtJMPA/kK90V86+3iTCUey/8Xpc9D1QUnu6+hz3N3d290mTzouLi4dfo5YunQplixZ0u5zpkyZgoqKCtTX10ML9Y1NuG9COOrq62Ejo2R8l5TOp7mZ/YU67b8PPIuZdz0E/6AwzftLRUU5rBqqEeluBU8H8yqaYGNjg4CA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c+N290REZFQkYNx+++0d3j906FC89dZbHd4vnztjxgy163pvGzhwIDZs2IB///vfald3IiIyLAxHRERkVPQB43S//PILnn32WcycOfOcn+/g4AAvLy9owdraWn1vW1tbhiMiIgPEaXVERGRU9AGj7SFT5P7zn/9g4cKFmDhxYpe+3ueff45LLrkEv/76K6655hqMGTMG//jHP1BTU4MvvvhCTcW79NJL8eKLL6KxsbH18+T2d955B48++iguuugiTJs2DT///DOKi4tx7733qtuuv/56HDhwoAd+C0RE1BMYjoiIyKhJMJL1O0OGDMEdd9xxQV9DgtCaNWvwzDPPYNGiRdi+fTvuu+8+/P777yp0Pfnkk/j444/xww8/tPu81atXq5GslStXYuzYsSooPfbYY5g6dSpWrFiBoKAgdb25ubmbfloiIupJDEdERGS0mpqa8PDDD8PS0hJPPfUU+vTpc0Ffp6GhAQ8++CCioqJUyJowYQJ27dqFRx55BOHh4WoUSIooyHqntkaPHo1rr70WISEhuOWWW1BZWYmYmBg1ehUaGoobb7wRJ0+eRGFhYTf9xERE1JMYjoiIyGi99tpr2Lt3rypw4OjoeMFfx87OTo3y6Hl6eiIgIECtT9Lz8PBQU+baioyMbPc5IiIiot3niNM/j4iIDBMLMhARkVH65ptv1NS1V199VY3c/BFWVlbnvU1GpWSkqqPH6Eetznbb6Z9HRESGiSNHRERkdA4fPox//etfuOuuu5CYmKh1c4iIyERw5IiIiIxKSUmJKpYg+xlNmTIFBQUF7e6X9Ufu7u6atY+IiIwXwxERERmV3377DdnZ2eqYPHnyGff7+/ur8txERERd1aeZ9UWJiMhMyN5EN9xwA+bMmaNpOx5//HFVglwKSRARkeHgmiMiIjIrso+RlOauqKjo9e+9c+dO9b2//vrrXv/eRER0fhw5IiIisyFT8WRPIxEYGAgLi959j1A2m83Pz1cf29vbw8vLq1e/PxERnRvDEREREREREafVERERERER6TAcERERERERMRwRERERERHpMBwRERERERExHBEREREREekwHBERERERETEcERERERER6TAcERERERERMRwRERERERFB+f9pZTdqc1kxzwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lens.draw(num_rays=5)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:23.489592Z", "iopub.status.busy": "2026-03-24T09:48:23.489442Z", "iopub.status.idle": "2026-03-24T09:48:23.604665Z", "shell.execute_reply": "2026-03-24T09:48:23.604163Z" } }, "outputs": [ { "data": { "text/plain": [ "(
,\n", " [])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAGWCAYAAABo73jaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAARipJREFUeJztnQd4FVXax98b0glpBBJKAqGLILCwhLD6YUHBRVcFpYi0RZpgg08FF0EUZSk2WBThU4oCIrprwYiy4LoKkY4iTQRCIJCQQBol9Z7veY87d++9mduSW+bO/f+e52YyZ87MvNP+c+Y97znHIIQQBAAAwO8J8rUBAAAA3AMEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHdSKVatWkcFgoD179qguv/nmm6lTp05eseWzzz6j3/3udxQeHk4pKSk0e/Zsqqqqcmpdo9FICxYsoNTUVLn+DTfcQOvXr1fNe+TIEerfvz9FRUVRfHw8jRgxgvLz8+u0TWfIysqS53rRokWqy59//nm5vKCggDyJ3s+zLuC+XABwlZUrV3IfQGL37t2qy/v06SOuv/56j9uRkZEhDAaDuOWWW8Ty5cvFo48+KoKCgsTEiROdWn/69OnyOMaNGyfXHzBggJxfv369Rb4zZ86IhIQE0bp1a/HGG2+Il156ScTFxYkuXbqI8vLyWm3TWU6dOiXXX7hwoery2bNny+X5+fnCUwTCedYDEHTg14LesWNH+bBXVlaa0v7yl79I8Tly5Ijddc+ePStCQkLE5MmTTWlGo1HcdNNNonnz5qKqqsqUPmnSJBERESFOnz5tStuyZYs8B2+//XattulPgh4I51kPwOUCvMLKlSulW+Ddd9+1SH/55ZdlekZGhint/PnzdPToUaqsrLS7zcOHD8vf+PHjKTg42JT+yCOPcEGFPvroI7vrf/rpp3IfnF+BbZk0aRKdPXuWMjMzTekff/wx3XXXXdLVoNC3b19q164dffjhh7XapqdgV0hISIiqm4LPVWxsLJWVleE86xAIOqgTxcXF0ndr/bMWiTFjxsgHderUqXTmzBmZdvDgQZozZw6NHTuW/vjHP5ryzpgxg6677jrKycmxu+/9+/fLaY8ePSzSmzZtSs2bNzctt7d+/fr15b7M6dmzp8X22Y4LFy7U2I+S13w/zm6zNly9elX1XHO6OexzZt/2hg0bLNIrKiqk+A4aNEj6nHGe9QcEHdQJLj01atSoxm/Hjh018q5YsYLq1asnBZzFZdSoUZSUlESvvvpqrfbNJUymSZMmNZZx2rlz5xyun5iYKEt21usyyvqO9nPp0iUqLy93aZu1LXmrneuFCxda5GvTpg2lp6fT+++/b5H+xRdfUGFhoRR8Vwi08+zP/Pf7CYBasHTpUvk5bM20adOourraIo3Fm/MPGzaMbrrpJjpw4ABt2bKFoqOja0TQ8M8R165dk9OwsLAay7gEWlJS4nB9W+uab9/Rfsy35ew2awO7PB544IEa6WvWrKH33nvPIm3kyJHS/XDixAlq3bq1TFu7di0lJydTnz595DzOs/6AoIM6wZ+4ap/IcXFxqmF0Q4cOlSVHLi2yQN1222213ndERIScKqU2c9hHrCy3t76tdc2372g/1nmdyVcb2rZtK7+IrPn+++9rpA0ZMoSeeOIJKeKzZs2SrrFNmzbRk08+WaNU64hAO8/+DFwuwKtcvHjRFLvOFW0cS1xblM9r5VPdHE5jH6+j9XNzc2XFnvW6jLK+o/1wrLRSWnR2m56GX6hcZ8GCzrDvnAXwoYcecnlbOM/+AwQdeJXJkydTaWkpzZs3T5YsX3/99Vpvq2vXrnJq3biJ/acc6aAst7c+VyhyQxZzdu7cabH9Zs2aSV+1WiOqXbt2WezH2W16A3a7/PLLL7R7924p7N26daPrr7/e5e3gPPsRvo6bBIETh75x40a5zuLFi+X80KFDZczxsWPHLPKdO3dOxjZXVFQ4tKNDhw4yPto87njmzJkyPvrw4cOmtKKiIrlNnpo3YrEVy9ysWTOLbXIDGrY1OzvblPbPf/5THs9bb71Vq216Og6dzx830hk0aJBsBPTKK69YLMd51h8QdOAVQc/Ly5Piwi0N+cFjCgoKRGJiokhPTxfV1dWmvKNGjZLbZiFzxOeffy5F5dZbb5WtBR977DEpXtx6UM1enprz1FNPyfTx48eLFStWmFobrl271iIfC0zDhg1lC0Z+Ib388suyBWPnzp1FWVlZrbZpyyZ3NiyaMmWKXFavXj0p4OYEynkOJCDowCuCPnDgQNGgQQORlZVlke/TTz+V25k/f36thIb5xz/+Ibp27SrCwsJkK0EuOVqXOm0JDb9IWDRatGghQkNDpc3vv/++6n5+/vlncccdd4jIyEgRGxsrhg8fLnJzc2vkc3abS5YskTZt3rzZY4K+a9cuuYzttiZQznMgYeA/vnb7ABCIDB48WHa8xf5hT/Hjjz9KfzKHNroafw78D4QtAuADuBz1r3/9q0bjH3fDjbm418KBAwd6dD9AG0DQAfABHAvOzdw9xeeffy7DQpcvX05TpkyRzeSB/oHLBQAd0rJlS8rLy6N+/frJVqQNGjTwtUnAC0DQAQBAJ6BhEQAA6AQIOgAA6ARUinoB7q+Em0mzH9PVjpEAAIGNEEJ2l8H90wQF2S+DQ9C9AIs5d1sKAAC1hQeG4QFF7AFB9wJKhAFfEOu+v7X2JcEDIHBPfY5KAloDtvsG2O55uL95LhA6E6kEQfcCipuFxVzrgs5Dl7GNWr7B1YDtvgG2ew9n3LXaPwoAdM7Jgsv0c06xnAJQF1BCB8CHfLTnDL33QxbFBJVTsfEcjejVku7vgfoWUDtQQgfAR5zIv0xrfjgtoxgSo8LklOc5HYDaAEEHwEfklZTRlfIqSqgfRoYgg5zyPKcDUBsg6AD4iMTocKofFkwFV8pJGIWc8jynA1AbIOgA+IjWjaJoZK8WMnoh73K5nPI8pwNQG1ApCoAP4QrQrikxdPZ8PjVv0ojaNNZuWCvQPhB0AHxMq4Qoig2qoPh4lMxB3YDLBQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAIEHQAAdAKa/gOfw/1/c5ex3MsgOqYKTHAPuAcIOvD5iD08qAP3A85dx3JvgxixJ7DAPeA+4HIBmhixJyUuEiP2BCC4B9wLBB1oYsSeIIzYE5DgHnAvEHSgiRF7jBixJyDBPeBeIOhAEyP2ZBdexYg9AQjuAfeCSlHgU7jyq1uLOEQ4BDC4B9wHBB34HH6A8RAHNrgH3ANcLgAAoBMg6AAAoBMg6AAAoBMg6AAAoBMg6AAAoBMg6AAAoBMg6AAAoBMg6AAAoBMg6AAAoBP8TtCXLl1KLVu2pPDwcEpLS6Ndu3bZzb9x40bq0KGDzN+5c2fKyMiwWM7ddc6aNYuaNGlCERER1LdvXzp+/LjqtsrLy6lr166yv4kDBw649bgAACCgBH3Dhg00depUmj17Nu3bt4+6dOlC/fr1owsXLqjm37FjBw0bNozGjh1L+/fvp3vvvVf+fv75Z1OeBQsW0OLFi2nZsmW0c+dOql+/vtxmWVnN7juffvppatq0qUePEQAAao3wI3r27CkmT55smq+urhZNmzYV8+bNU80/ePBgMWDAAIu0tLQ0MWHCBPm/0WgUSUlJYuHChablRUVFIiwsTKxfv95ivYyMDNGhQwdx6NAhwadt//79TttdXFws1+GpluHzmZ+fL6f+Bmz3DbDd87iiH37TOVdFRQXt3buXZsyYYUoLCgqSLpLMzEzVdTidS/TmcOn7k08+kf+fOnWKcnNz5TYUYmJipCuH1x06dKhMy8vLo3Hjxsn1IiMjHdrKrhn+KZSUlMip0WiUP63CtrELSss22gK2+wbY7nlcsc9vBL2goICqq6spMTHRIp3njx49qroOi7Vafk5XlitptvLwBR89ejRNnDiRevToQVlZWQ5tnTdvHs2ZM6dGemFhIVVVVZGWb5zS0lJ5zPyy9Cdgu2+A7Z6HbdSdoPuKJUuWyBNq/mXgCM5r/mXAJfTk5GSKi4uj6Oho0vINzhW+bKeWb3A1YLtvgO2eJzg4WH+CnpCQQPXq1ZPuD3N4PikpSXUdTreXX5lyGke5mOfhaBZm27Zt0v0SFhZmsR0urQ8fPpxWr15dY7+c1zo/wzeNlm8chm9wf7BTDdjuG2C7Z3HFNu0ehRWhoaHUvXt32rp1q8UblufT09NV1+F08/zMli1bTPlTU1OlqJvn4dI0R7soeTgC5scff5RhivxTwh454uall17yyLECx/Co8DtOFGB0eI2B6+Jb/KaEzrAbY9SoUbJ03LNnT3r99dfpypUrNGbMGLl85MiR1KxZM+nDZh5//HHq06cPvfLKKzRgwAD64IMPaM+ePbR8+XLT2/mJJ56guXPnUtu2baXAP/fcczI0kcMbmZSUFAsboqJ+G1WldevW1Lx5cy+fAcB8tOcMrfnhtBwdngcU5jEoB/6uma/NCnjUrgsPLwe8h18J+pAhQyg/P182BOJKS3aLbN682VSpmZ2dbfF50rt3b1q3bh3NnDmTnn32WSnaHKnSqVMni9hyfimMHz+eioqK6MYbb5Tb5IZIQHtwyY9FgyuyUuIi5SjxPN81JYZi/eZ7U3+cLFC/LjxWKIaW8x4Gjl304v4CEnbjcDhkcXGx5itFL126RPHx8Zr1KfLn/HOf/CxFIyjIQEajkKPFv3DP9dQ+1qBp2/35vDuy/ViRoFmfHqpxXV68txP1bp1AWsToJ+fdFf3Q7lEAoAKPCs+f81wCZNHgKc8nRteshAbeg8+/+nXBl643gaADv4I/39k3y/UfXALkKc+3SsBnvS/h8692XeBu8S5+5UMHgOGKNvbN5pWUyRIgi4bWW/sF6nUB3gWCDvwSFgsIhvbAdfEtcLkAAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOgKADAIBOQH/oOhk4GYMKAOAbtPT8QdD9nI/2nJGjq18pr5JjOPKwXzxyDNDvQ64lAQl0PtLY8wdB92P4weabSQghR1vngXl5nocBw4Ouz4dcawISyJzQ4PMHH7ofw6U0frAT6odRUJBBTnme04E2HnKe8jyna3nbQB/PHwTdj+FPbi6lccnAaBRyyvOcDvT3kGtRQAKZRA0+fxB0P4Y/6/iT22AwUHbhVTnlebhb9PmQa1FAApnWGnz+4EP3c9h/yj47VJJp6yFnVwg/5Iqf2x3XxZPbBvp4/iDoOoBvIl/fSMA7D7nWBASQpp4/CDoIeDwRBujJh9wT20YopD6AoIOABmGAOAd6ApWiIGBBGCDOgd6AoIOABWGAOAd6A4IOAhaEAeIc6A0IOghYtBhH7G1wDvQFKkVBQIMwQJwDPQFBBwGPluKIfQXOgT6AywUAAHSC3wn60qVLqWXLlhQeHk5paWm0a9cuu/k3btxIHTp0kPk7d+5MGRkZFss5TGvWrFnUpEkTioiIoL59+9Lx48dNy7Oysmjs2LGUmpoql7du3Zpmz55NFRUVHjtGAADQvaBv2LCBpk6dKgV137591KVLF+rXrx9duHBBNf+OHTto2LBhUpD3799P9957r/z9/PPPpjwLFiygxYsX07Jly2jnzp1Uv359uc2yst/Cto4ePUpGo5HefvttOnToEL322msy77PPPuu14wYAAKcQfkTPnj3F5MmTTfPV1dWiadOmYt68ear5Bw8eLAYMGGCRlpaWJiZMmCD/NxqNIikpSSxcuNC0vKioSISFhYn169fbtGPBggUiNTXVabuLi4sFn2qeahk+n/n5+XLqb8B23wDbPY8r+uE3laLs4ti7dy/NmDHDlBYUFCRdJJmZmarrcDqX6M3h0vcnn3wi/z916hTl5ubKbSjExMRIVw6vO3ToUNXtFhcXU3x8vE1by8vL5U+hpKRETrmkzz+twraxC0rLNtoCtvsG2O55XLHPbwS9oKCAqqurKTEx0SKd59ktogaLtVp+TleWK2m28ljz66+/0pIlS2jRokU2bZ03bx7NmTOnRnphYSFVVVWRlm+c0tJSeZPzy9KfgO2+AbZ7HrZRd4KuBXJycqh///70wAMP0Lhx42zm468I8y8DLqEnJydTXFwcRUdHk5ZvcG5YwnZq+QZXA7b7BtjueYKDg/Un6AkJCVSvXj3Ky8uzSOf5pKQk1XU43V5+ZcppHOVinqdr164W6507d45uueUW6t27Ny1fvtyurWFhYfJnDd80Wr5xGL7B/cFO6y5fUxtG+pXt1ujB9lMXr/pd4ySDH5x3V2zT7lFYERoaSt27d6etW7davGF5Pj09XXUdTjfPz2zZssWUn0MRWdTN83BpmqNdzLfJJfObb75Z7n/lypWavviB1OXrkxsO0HOf/Cynf9971tcmBTR8/s2vB18f4H38SpnYjbFixQpavXo1HTlyhCZNmkRXrlyhMWPGyOUjR460qDR9/PHHafPmzfTKK69IP/vzzz9Pe/bsoSlTppjezk888QTNnTuXPvvsMzp48KDcRtOmTWV4o7mYp6SkSL95fn6+9K/b8rED33T5+t7O05RTdM3XpgUkfN75/KMLXt/jNy4XZsiQIVJQuSEQCyq7RViwlUrN7Oxsi9Izu0fWrVtHM2fOlHHjbdu2lREunTp1MuV5+umn5Uth/PjxVFRURDfeeKPcJjdEUkr0XBHKv+bNm1vYwzcu8F2XryweSpevZwqvUOEVNPbyBXze+Xokx9U3XQ/u6Iuvk7+4XvSCgWMXfW2E3mE3DodDcrij1itFL126JEMytexW4pIff9bzrcviwV2+BhmIXujfkjq3aqZp2/35vNuy/eDJHJq1OYuMgkzXg79+XxvSVdOCbvST8+6Kfmj3KABwocvXEWktqFlshK9NC0j4vPP5Rxe8vsevXC4A2OrylaNcuLQFfMPA7s2pW8t4v4ty0RsQdKCLLl+13tovEEAXvL4HLhcAANAJEHQAANAJcLkAoIFWrraWwYUBXAGCDoCHsCXM3IqSG95w7Hb9sGAamZZCN6dGqi/r1UJWANvbHgAKEHQAPIAtYbZu5cox29zKsm1cSyoy1lzG8xzNs/90oU2hB0ABPnQAvNA1gdIUXmnlyg1wlFaVPM+tLfNKylWX7c/+TczRtB44AoIOQB1hYd1xosAksLZEW3GXcAmbS99Go5BTno+rH0qJ0WGqyxhb21PbPwhc4HIBwM2uFXaRKMKsNIXnecX3zXl4HW5Vyekj0lJka8v4+JrL5PZSbG/Pns8dBB4QdABqiZo/XPF5qwmzUpFpr5Wr9TJlHbXtMbb2j0rTwASCDoAbe31Uehm0JcxqrSp/vVBCZ88XU3NjKLVpHK3a4lJte+xmsbV/CHpgAkEHwAXMQwfN/eHWrhDGWpjVwg7ZZfLeD1kUE1ROxcZzNKJXSwuXifU65ttztH+EOQYeEHQAnETNX23PteJoXS5xcxoJQYlRYVRULCxcJo7842r+eGX/8K0HJhB0oCm0Wqq05S/nPr/tuVbsrUuG36JXWsRFkCGokhLqh9Lpwmum6BVn/ONqrhh7vn2tnVMtXmt/BoIONIOWS5X2/OW9WyfYda3YWpdRXCYNgw0WLhN7+1NE25YrxtG6WkDL1zqgBL28vFwOonz69Gm6evUqNWrUiLp16yYHXAagtmi9VOnIX12bMEYORyRB0oeed5lH+QmjEWYum9qGKjprq6/Q+rUOiIZF27dvp8GDB1NsbCzdeuutcnDlF198kR566CFq06aNHK9z4cKFVFpa6lmLgS6x1xjHV5g32FEbJcnaX26rhShja10W4lcGd6E//yFVThVhtrU/xlGrUXvraqEBkhavdUCV0P/0pz/Rvn376MEHH6Svv/6aevToQRER/x3u6+TJk/Tdd9/R+vXr6dVXX6U1a9bQ7bff7km7gc7QWqnSVilYzV+tzNc2jLFVQhTFBlXIhkV1CVVklLzW63JfMDwOqxZcHFq71gEn6AMGDKCPP/6YQkJCVJe3atVK/kaNGkWHDx+m8+fPu9tOoHPsRWxozSVgHnJoLvr9r090KYzRGZwNVTyQXUibD+XVEGwtVpJq6VoHpKBPmDDB6Q127NhR/gBwFUeNcbyFM5WKaiLJgsqizlNPCZWaGCr7tCXYWqwk1cq11ht1inK5fPlyjbEco6Oj62oTCGC0MC6lMy4BWyLZNSWO+nVq4lGhshZDnn68L8emYGvVxaGFa02B3tviqVOnpAumfv36FBMTQ3FxcfLHlaU8BcDfcaYC1FaviYqIW4cyesJGZR/2bHH2eECAltA5qoU/7d59911KTEyUNwcAekGp5OQSsKO+WLTiB3bGFkcVuhD3ABX0H3/8kfbu3Uvt27f3jEUAaLixi7kIaskP7Ixg26vQRcMefeCyoP/+97+nM2fOQNCBrnAmEsSWCGqldOusYGst6gX4UND/7//+jyZOnEg5OTnUqVOnGqGMN9xwgxvNA8A7ONPU3l9E0JGtWox6AT4S9Pz8fDpx4gSNGTPGlMZ+dL55eFpdXe0m0wDwHo4iQfxJBB3ZqtWoF+ADQf/zn/8s+27hVqGoFAV6wVHFoqdEkEvT+09fIkP5ZYpvWE1hIfXq7I93pp92rVToAh8LOnfK9dlnn8n+WwDQCyysTeMiaOrt7Sg0OKiGqLpTBJXKyq1H8uizA+eo5FoFtYwSlFV6kiLDQykqLJh6t25I4/u0rtX2XY16qagyymNW+qwBASTo3DEXR7pA0IFeUKtA5BhvV0MZneHNb47TR3tz6OKVciq5VsWdLVI9ElQtBFUaDVR4tVL+Nuw5S18dyqPx/5NKj9zS1uX9OCPY/D/38YJolwAW9LvvvpuefPJJOnjwIHXu3LlGpSh35AWAv+CoAtGd4X0vbjpE72WeJqMQVG2UPefapehaJb225ThdvFJBz911vcv7cyTY/lTRCzwk6Bzhwrzwwgs1lqFSFPgb9ioQGXcJHpfM1+w4TZVGwQMVWYi5PWHn/Kt3/NYFr6uijmiXwMPlpv/cd4utH8Qc+Bv2ms27q99uFtbl/z4lxZlxVDK3psoo5MuAXwqu4Mh+R10GgAAQdAD0hL1+TtwleMu/PSHdJ2pEhwdT87gIuqV9Ixrzh5YUF6neRTW/DFZuz3JpcAr08RJ41Kq3xd27d9M333xDFy5cqNHbIg9w4UmWLl0qR0bKzc2lLl260JIlS6hnz54282/cuJGee+45ysrKkqMqzZ8/n/74xz+alvPn6OzZs2nFihVUVFREf/jDH+itt96SeRUuXbpEjz76KH3++ecUFBREgwYNojfeeIOionDj6wFbTfjdEdny26hHF1WX3dQ2gSbd3JoaNwj9zwAX8fRgr5a06KujskL0PwV6CbtpCq9W0P7sQqf3X9s+XkAACfrLL79MM2fOlE3/rePQPR2TvmHDBpo6dSotW7aM0tLS6PXXX6d+/frRsWPHqHHjxjXy79ixg4YNG0bz5s2ju+66i9atW0f33nuvHH2JW7kyCxYsoMWLF9Pq1avluKgs/rxNHqgjPPy3kszw4cPloB1btmyhyspK2ahq/Pjxcnt1xZsdJGmxMyYt2GTPBha8hAZhdPxCKbVt3IBubl/zPrMHb/dyeVWNdC6JP/+n6+X+fr1QQj/nFFNzYyi1aRxNbz3Ugya9v4e+/DnPlJ+1vcpItOfUJbq/u/OVsopg84uAkeOYWqEcs+KK0eJ1CAR7TrhhfwbBRVQXYBHnUu7o0aPJ27CIc18yf/vb3+Q8fx0kJyfL0vP06dNr5B8yZAhduXKFNm3aZErr1asXde3aVb4U+NCbNm1K06ZNo//93/+Vy4uLi+Uxrlq1ioYOHUpHjhyRA3bwVwkPvcds3rxZlvLPnj0r13dESUmJ7GqYt23eX7w3O0hyZl98PvlrhEuK/CXiadx5/LW13ZENdbXxX8cu0LjVu6nS8kOWxt7YUlZy8vZ5kOiYoHIqNvIg0S3l9vnhHrxsB128YumqSYoOo7Xjern0wHvyGN11z/iiszCjHdu9bY+9/dnSDzVcvgJ84OyW8DYVFRWyl8e+ffta2MLzmZmZqutwunl+hkvfSn7u251dN+Z5+MTxi0PJw1Pu610Rc4bz87537typut/y8nJ5Ecx/jHkFMpfK+EEmYaQWcRFyyvOcbq/iuTY/V/bFLzl377+uNjn7c9V2Rza4w8aC0jLpvw6i//447vy6pAYW20+MCrXYfmrDSOp7XeMa610sLZMtS7V0jHW9Z7z5LBidsN3b9jizP4+5XDgGnf3Y7O7wJgUFBTKKhkvP5vD80aNHVddhsVbLz+nKciXNXh5rd05wcLB8qyt5rGEXz5w5c2qkFxYWUlXVb5/fZ88Xy1JZYlQYGYIqqWGwgfIul9PZ8/nSn+pOnN0X3zilpaXyJvd0Cd3dx18b2x3Z4A4bi4ouUatoIV0mSrii4T/pZ0Mq/7P9UIoJqaZ2MfUstt82luS6jHRm/mcDvO6lS5GaOEZ33DPefBacsd3b9jjaH9voMUFn1wSPWNS6dWvpirBuWPT3v/+dAp0ZM2ZIX78Cl9DZNcQjOimfTOwvLTaeo6JiQQn1Q2UEgsEQRs2bNKox+ntdcXZffINzPQjb6WlBd/fx18Z2Rza4w8bY2Kt0suRsjVDF2Nh4at4kVm6/uNgoxfyXYkFktv3jRWfpZIllvVRwkEGuywUKLRyjO+4Zbz4LztjubXsc7Y8LkM7i8hV47LHHZIRLu3btqGHDhtJFYf7zFAkJCVSvXj3Ky/tvRRHD80lJSarrcLq9/MrUUR6O5jGHS9nse7O137CwMCnc5j+Gbxrlx5Vf7C8lQxCdLrwmpzzP6eb53PFzZV98g7t7/3W1ydmfq7Y7ssEdNiY0CKegekFkJIPF70huqcX28y5XWGz/1MWrtPXIhRrrxUeFUbcW8Zo6xrreM958FoKcsN3b9jizP4+V0Dka5OOPP5aldG8SGhpK3bt3p61bt8pIFeUNy/NTpkxRXSc9PV0uf+KJJ0xpHKnC6QxHtbAocx6uKFVK0+wbnzRpkmkbHM7I/nveP7Nt2za5b/a11wVvhoxpMTxNCzY5sqGuUS7ch0qD8GC6ZFW5+fHeHHow7beKr64pMfLzmktk/BAzHLpYYLUO06ddI5fPEx/fbz6b36Jc1I5R69dB7/bc76b9uSzo/KnH7hZfwG6MUaNGyQpKjj1nPz5HsSh9s48cOZKaNWsmfdjM448/Tn369KFXXnlFvoA++OAD2rNnDy1fvlwu57czi/3cuXNl3LkStsiRK8pL47rrrqP+/fvTuHHjZGQMhy3yC4QjYJyJcNHSyOdaHGVdCzbZC9uzjj4oKC13KdqBH87IkGC6RJbizA2Nnv/sZ7qnazNuDEFtY0N/29/eM/TpgRza/qtl7Drrcb0got+nOudqsWU/+36sz7dWwgW1cC/40h537M9lQX/++edlQ5yVK1dSZKRzFTPugsMQeYCNWbNmyQpJLlVzCKFSqZmdnW3xedK7d28ZK85x888++6wU7U8++cQUg848/fTT8qXAceVcEr/xxhvlNpUYdGbt2rVSxG+77TZTwyKOXQf6wFbImDs6r+J8f2jTUPaeaM13xy/KRkfBBqJ2MQY6c9VAJWVGUotpYB98bESoahy5J4bVA/6Jy3HoPLgFj1jEq7Vs2bJGpSg32gGWuBJH6ku8HYeuBdtZ9J7ccEDez8pgEPzl9tqQrrLU+twnP5s6r+LwQ25x+eK9nSy613VmH/e/tUN2i6sGhyRyNAtXgLKfXI2QIAM9eXtbl7rS3XGiwK799o7d2RdWIN4zWtYPl0voiisCAD1gr8dBd41SxOI47qZU2RWu0kGXOY7aV3Nky8jeLVzuF11Pw+oB53BZ0NndAoBesCd67hyliMWY+zV/LzObjMJo0R+6vU/kkP+IeW37Q/fFsHpA44KuDAANgN5wJHrW0QeKK6M2FYgsyg3rh8oRi7ijrdJrlVTFoefsdjH89lMK8PUMRPH1Q2UPjLUZscjbw+oBPxL066+/XlZEDhw4UIYP2uL48eOyt8UWLVqo9q0CgBZxNFybEn3gjgpEFud+nZqY9vXlwfOUeaKAEiKryRAeSt2S4yglIZIaNwhXDTF017B6zgg+0Kmgcxe1zzzzDD3yyCN0++23y7BBDtnjSBBuzs49E37//fd06NAhGQ2ixHAD4C94c7g28/A0jmvnPjus49DrQm2jW1yp6AV+LOgcrsfx2yza3IUth/GdPn2arl27JltwcuQLx4BzN7PcjBYAf8OXw7W1Soj6T3/o7ikdO7IVY4nqF5cqRTlGm38A6A1HIuhPFYiIbglctBt8CYAXqe1wbUolqStDw3mK30ZHKpD/2xtaDmOJ6pdaDUEHgN6ozXBt7HPnhjlaaGWp5hNXGkchuiVwgKAD8B+cCVFUKjS15Ie2Z4t5Rad5ny1a6wwLeFnQz50755bOqADQMs6GKGrJD+2MLbaOB0IeoD50jkV3x6DIAGgd6xIvT3ne3E9uzw+t+LI96Vc334cjn7gzxwMCTNBfeuklmjBhAj3wwAOyQxsAPIE3xNDZEi+XdJUSL88r3evaqyRV/OrcKRZPuWTsbnib5vvgfdqrBHXmeAL1Wgesy4UbFd155500duxYOfTcihUr6O677/asdSCg0EpXrs6GKKr53JXeCz3lV7flL+cKUFs+cS2GXGrlWgd02CIPAMGj9XD/4twNwA033EC/+93vLH4A1AYtuQVslb6VylDzUiWnccWjeeMjWyXh2pRIrdextw9zW8zXZeyV4AP5WlOgR7lwC1EeCJpbhN5zzz0uDWAKgC20VMnIqEWBOCpV2isJ21v3ZMFlOfI7DxZs3vRfbR22yZnStithjIF+rfWES2rMbpZp06ZR3759Zb8tjRo18pxlIKDQolvAvM8VZ8IUbcV3M7bWZf/3ez9kUUxQuRz5nQcHdjRakqMYcmfDGH2FFq91wAk6j6u5a9cu+tvf/ib7bQHAnWi9sYuzpUq1kj27PdTW3Z/9W2dgPKZoYlQYFRX/5npQ1re1P0cx5FovAWv9WgeEoFdXV9NPP/1EzZs396xFIGDRcmMXe6VK60GWrQf7tbUuw8LbIi6CDEGVlFA/lE4XXnNqtCTrrwfz/ftDCVjL1zogBH3Lli2etQQADY787qhUaa/LXUfrcn/nivA2DDbUarQkW755fygBa/Va+zOo0QTASeoSpmirRMpCyz70vMs8QHMYjbAzWpL1Nu35ylECDkwg6ADUslRpyzdu3u+4PVcMw8LbNSXG5gAX9lwrjnzlKAEHHhB0AGpJbcMUrcXZeoALa+GuawgjCBwg6ADUktqEKarGs6el0M2pkXaFu7YhjCCwgKADUAdcCVNUWoxai/N7O09T27iWVGRU94mTgWodwggCCwg6AHXE2TBFTlfze58pvEKFVyroMpWrCjfjbAgjCGwwBB0AXuwLxlZXt3H1QykxOkx1GYc3aqkvFqBdUEIHwAPYcoWo+d1HpKVQs9gIWSlqyyfOP7hWgCMg6AB4CFuuEGuxT20YaRpjwJ5PHK4V4AgIOgA+wFycjUajzWUAuAJ86AAAoBMg6AAAoBPgcgF+i3mLSvZDA9+i1sIVeBcIOvBL7LW2BN7n73vP0pqd2Rgj1MfA5QL8DrUxKbm1ZU7RNV+bFpDweefzjzFCfQ8EHfgdtgZK5taWwPvwebc3ODbwHn4j6BynO3z4cIqOjqbY2FgaO3YsXb5svwRQVlZGkydPpoYNG1JUVBQNGjSI8vLyLPJkZ2fTgAEDKDIykho3bkxPPfUUVVVVmZbzgNi33367HD+V952enk5fffWVx44TOMZea0vgffi8q10P9ProffxG0FnMeWBqHjlp06ZN9O9//5vGjx9vd50nn3ySPv/8c9q4cSN9++23dO7cORo4cKDFsHos5hUVFbRjxw5avXo1rVq1imbNmmXKw/thQc/IyKC9e/fSLbfcQnfffTft37/fo8cLXGtaPyKthWxtCbwPn3c+/+iaQAMIP+Dw4cOCTd29e7cp7csvvxQGg0Hk5OSorlNUVCRCQkLExo0bTWlHjhyR28nMzJTzGRkZIigoSOTm5pryvPXWWyI6OlqUl5fbtKdjx45izpw5TttfXFws98tTLVNdXS3y8/Pl1B/49UKp2P5rvpz6m+3m6MV28+vhD1T7yXl3RT/8IsolMzNTull69OhhSuvbty8FBQXRzp076b777quxDpemKysrZT6FDh06UEpKitxer1695LRz586UmJhoytOvXz+aNGmS/Bro1q1bje1yq77S0lKKj4+3aW95ebn8KZSUlJjWtW4VqCXYNq7Q0rKN5nCoohKu6G+2m6MX262vh9Yx+sl5d8U+vxD03Nxc6d82Jzg4WIoqL7O1TmhoqHwRmMPirazDU3MxV5Yry9RYtGiR9N0PHjzYpr3z5s2jOXPm1EgvLCy08M9rDeVlxTc5vyz9CdjuG2C752Eb/ULQp0+fTvPnz7eb58iRI6QV1q1bJ4X6008/rfGCMWfGjBk0depUixJ6cnIyxcXFyYpVLd/g7P9kO7V8g6sB230DbPc8XHh1Oi/5kGnTptHo0aPt5mnVqhUlJSXRhQsXLNK5pMuRL7xMDU7nys6ioiKLUjpHuSjr8HTXrl0W6ylRMNbb/eCDD+jhhx+WFazmbhw1wsLC5M8avmm0fOMwfIP7g51qwHbfANs9iyu2+VTQORSQf47gUEEWZvaLd+/eXaZt27ZNvmHT0tJU1+F8ISEhtHXrVhmuyBw7dkyGKfL2lO2+9NJL8mWhlLg5ioZL0R07djRta/369fTnP/9ZijpHxQAAgCYRfkL//v1Ft27dxM6dO8X3338v2rZtK4YNG2ZafvbsWdG+fXu5XGHixIkiJSVFbNu2TezZs0ekp6fLn0JVVZXo1KmTuOOOO8SBAwfE5s2bRaNGjcSMGTNMedauXSuCg4PF0qVLxfnz500/jqJxFkS5eB7Y7htgu+dxRT/8RtAvXrwoBTwqKkqGFY4ZM0aUlv43POrUqVPyoL/55htT2rVr18Qjjzwi4uLiRGRkpLjvvvukGJuTlZUl7rzzThERESESEhLEtGnTRGVlpWl5nz595Hatf6NGjXLadgi654HtvgG2ex5X9MPAf3z9laB3uFI0JiaGiouLNV8pyvUSHD2kZZ+iGrDdN8B2bemHX4QtAuBJ0O0rzoFegKCDgKZGN7wB2O0rzoF+0O53BgA+6IY30Lp9xTnQFxB0ELDY6oY3kLp9xTnQFxB0ELDY6oY3kLp9xTnQFxB0ELCodcMbaN2+4hzoC1SKgoCGK/+6tYgL6AgPnAP9AEEHAQ8LmLtFzJNhgJ7YtifOAfA+EHQdgBjiwAkDRIih9jihoecPgu7n4AHXdhggVzLyPLs06vqwe3LbQB/PHypF/RjEEAdWGCBCDLXFCQ0+fxB0PwYPeGCFASLEUFvkafD5g6D7MXjAAysMECGG2iJRg88ffOh+jPKA82ceP+CKDw8PuH7DABFiqB1aa/D5g6D7OXjAtYknwwARYqgd7tfY8wdB1wF4wAHwHVp6/uBDBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnYD+0IFfwgPxamVQAfBfcF18CwQd+B0f7Tkjh/3iAXmVYb8G/q6Zr80KeNSuC4/oA7wHXC7A70qALBpCCEqJi5RTnj9ZcNnXpgU0fP7VrgtfL+A9IOjAr+DPeS4BJtQPo6Agg5zyfF5Jua9NC2j4/KtflzJfmxZQQNCBX8G+Wf6cL7hSTkajkFOeT4wO87VpAQ2ff/XrEu5r0wIKvxH0S5cu0fDhwyk6OppiY2Np7NixdPmy/c+5srIymjx5MjVs2JCioqJo0KBBlJeXZ5EnOzubBgwYQJGRkdS4cWN66qmnqKqqSnV727dvp+DgYOratatbjw04D1e0sW/WYDBQduFVOeX5VgmogPMlfP7VrgsqRr2L31SKspifP3+etmzZQpWVlTRmzBgaP348rVu3zuY6Tz75JH3xxRe0ceNGiomJoSlTptDAgQOlMDPV1dVSzJOSkmjHjh1y+yNHjqSQkBB6+eWXLbZVVFQkl9122201XgrAu3BFW7cWcRbRFEaj0ddmBTxq1wV4GeEHHD58WLCpu3fvNqV9+eWXwmAwiJycHNV1ioqKREhIiNi4caMp7ciRI3I7mZmZcj4jI0MEBQWJ3NxcU5633npLREdHi/LycovtDRkyRMycOVPMnj1bdOnSxSX7i4uL5X55qmWqq6tFfn6+nPobsN03wHbP44p++EUJPTMzU7pZevToYUrr27cvBQUF0c6dO+m+++6rsc7evXtlSZ7zKXTo0IFSUlLk9nr16iWnnTt3psTERFOefv360aRJk+jQoUPUrVs3mbZy5Uo6efIkvf/++zR37lyH9paXl8ufQklJiZxyKVLLJUm2jaMTtGyjLWC7b4DtnscV+/xC0HNzc6V/2xz2ZcfHx8tlttYJDQ2VLwJzWLyVdXhqLubKcmUZc/z4cZo+fTp99913cp/OMG/ePJozZ06N9MLCQpv+ea3cOKWlpfIm55elPwHbfQNs9zxso18IOgvl/Pnz7eY5cuQI+Qr2sT/44INSnNu1a+f0ejNmzKCpU6dalNCTk5MpLi5OVupq+Qbnyiy2U8s3uBqw3TfAds/jbEFS5iUfMm3aNBo9erTdPK1atZKVlhcuXLBI55IuR77wMjU4vaKiQlZmmpfSuUJTWYenu3btslhPqfDkZfxm3LNnD+3fv19WqJp/pvFJ/vrrr+nWW2+tse+wsDD5s4ZvGi3fOAzf4P5gpxqw3TfAds/iim0+FfRGjRrJnyPS09OlMLNfvHv37jJt27ZtUlzT0tJU1+F8HK2ydetWGa7IHDt2TIYp8vaU7b700kvyZaG4dDiKhkvRHTt2lOsfPHjQYrtvvvmm3PdHH31EqampdT4HAADgLvzCh37ddddR//79ady4cbRs2TJZ2ckl5qFDh1LTpk1lnpycHBlSuGbNGurZs6cMU+RYdXZ9sK+dRfrRRx+VIs4Voswdd9whhXvEiBG0YMEC6TefOXOmjF1XStidOnWysIWFPzw8vEY6AAD4Gr8QdGbt2rVSxFm0+ROES92LFy82LWeR5xL41atXTWmvvfaaKS9HnXAEC5ewFerVq0ebNm2SUS0s9PXr16dRo0bRCy+84PXjAwCAumLg2MU6bwXYhStF+YuhuLhY85WiXC/BXzRa9imqAdt9A2zXln5o9ygAAAC4BAQdAAB0AgQdAAB0AgQdAAB0AgQdAAB0AgQdAAB0AgQdAAB0AgQdAAB0gt+0FAX6hUeGxyg3gQ3uAfcAQQc+5aM9Z2jND6flCPE8qDCPQ8lDmYHAAfeA+4DLBfi0VMYPMvc+kRIXKac8z+kgMMA94F4g6MBn8Cc2l8oS6odRUJBBTnme00FggHvAvUDQgc9gfyl/YhdcKSejUcgpz3M6CAxwD7gXCDrwGVz5xf5SHjUmu/CqnPI8KsUCB9wD7gWVosCncOVXtxZxiHAIYHAPuA8IOvA5/ADjIQ5scA+4B7hcAABAJ0DQAQBAJ0DQAQBAJ0DQAQBAJ0DQAQBAJ0DQAQBAJ0DQAQBAJ0DQAQBAJ0DQAQBAJ0DQAfAxJwsu0885xXIKQF1A038AfDy4w3s/ZFFMUDkVG8/RiF4tMbgDqDUooQOggcEdEqPCMLgDqDMQdAA0MLiDAYM7ADcAQQdAA4M7CAzuANwABB0ADQzukHe5HIM7gDqDSlEAfAhXgHZNiaGz5/OpeZNG1KZxtK9NAn4MBB0AH9MqIYpigyooPh4lc1A34HIBAACdgBK6F+BwNKakpIS0jNFopNLSUgoODqagIP9618N23wDbPY+iG4qO2AOC7gX4pmGSk9FgBABQex2JiYmxm8cgnJF9UOeSwLlz56hBgwYykkHLJQF+6Zw5c4aio/2rcg62+wbY7nlYolnMmzZt6vBLAiV0L8AXoXnz5uQv8M2t5RvcHrDdN8B2z+KoZK6gXccRAAAAl4CgAwCAToCgAxNhYWE0e/ZsOfU3YLtvgO3aApWiAACgE1BCBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBB1zGXLl2i4cOHy0YTsbGxNHbsWLp82f7wZmVlZTR58mRq2LAhRUVF0aBBgygvL88iT3Z2Ng0YMIAiIyOpcePG9NRTT1FVVZXq9rZv3y77yujatatf2P73v/+dbr/9dmrUqJHcd3p6On311Vd297t06VJq2bIlhYeHU1paGu3atctu/o0bN1KHDh1k/s6dO1NGRobFco5TmDVrFjVp0oQiIiKob9++dPz48TqfHy3YnpWVJW1NTU2Vy1u3bi0jTSoqKjRvuznl5eXynuaW3wcOHCDNwFEuQJ/0799fdOnSRfzwww/iu+++E23atBHDhg2zu87EiRNFcnKy2Lp1q9izZ4/o1auX6N27t2l5VVWV6NSpk+jbt6/Yv3+/yMjIEAkJCWLGjBk1tlVYWChatWol7rjjDmmHP9j++OOPi/nz54tdu3aJX375RS4LCQkR+/btU93nBx98IEJDQ8W7774rDh06JMaNGydiY2NFXl6eav7t27eLevXqiQULFojDhw+LmTNnyu0fPHjQlOevf/2riImJEZ988on48ccfxZ/+9CeRmpoqrl27VqfzowXbv/zySzF69Gjx1VdfiRMnTohPP/1UNG7cWEybNk3ztpvz2GOPiTvvvJMjBOW9pBUg6DqFb1q+2Xbv3m1K44fJYDCInJwc1XWKiorkTb5x40ZT2pEjR+R2MjMz5TyLYFBQkMjNzTXleeutt0R0dLQoLy+32N6QIUPkgzN79myXBF0LtpvTsWNHMWfOHNVlPXv2FJMnTzbNV1dXi6ZNm4p58+ap5h88eLAYMGCARVpaWpqYMGGC/N9oNIqkpCSxcOFCi2MLCwsT69evr/X50YrtarDIsnC6gi9tz8jIEB06dJAvEq0JOlwuOiUzM1N+ivfo0cOUxp+Q3K/Mzp07VdfZu3cvVVZWynwK/ImakpIit6dslz9XExMTTXn69esnOzo6dOiQKW3lypV08uRJ+Tntb7ardbEaHx9fYxm7CXi/5vtkG3le2afasZnnV2xQ8p86dYpyc3Mt8nA/HuxSMD8OV8+PVmxXo7i4WPX8atH2vLw8GjduHL333nvSbac1IOg6hW9O9hGbw75sfnB4ma11QkNDpViYwwKorMNTc0FUlivLGPY7Tp8+nd5//325T3+y3ZpFixZJ3/TgwYNrLCsoKKDq6mrVbdqz015+Zeooj6vnRyu2W/Prr7/SkiVLaMKECU7Z7UvbhRA0evRomjhxosXLVEtA0P0MFkquiLH3O3r0qM/s4wftwQcfpDlz5lC7du38ynZr1q1bJ4/jww8/rCGgoO7k5ORQ//796YEHHpClXq2zZMkS+bU2Y8YM0iroPtfPmDZtmiwl2KNVq1aUlJREFy5csEjnaA6OjuBlanA6f84WFRVZlHT5M1NZh6fW0QRKJAkv4xt+z549tH//fpoyZYrJbcGlm4MHD0pXTK9evTRpuzkffPABPfzwwzIywvpTXSEhIYHq1atXI5LGfJ9qdtrLr0w5jaMtzPMokUK1OT9asV2Bxwe45ZZbqHfv3rR8+XKnbPa17du2bZPuF+u+X7i0zhFHq1evJp/jayc+8AxKxRlHeyhwZIEzFYsfffSRKe3o0aOqFYvm0QRvv/22rFgsKyuTlVMcOWD+mzRpkmjfvr38//Lly5q1XWHdunUiPDxcRjs4Uzk3ZcoU0zwff7NmzexWzt11110Waenp6TUq5xYtWmRaXlxcrFop6sr50YrtzNmzZ0Xbtm3F0KFDZeRRbfCF7adPn7a4r/mc83Xge+7MmTNCC0DQdQyHtnXr1k3s3LlTfP/99/IhMg9t4weLhZaXm4f+paSkiG3btknB4Juef9ahfxyKeODAAbF582bRqFEj1bBFBVejXHxp+9q1a0VwcLBYunSpOH/+vOnHLwxb4XP80K9atUoK7fjx42X4nBJJM2LECDF9+nSL8DnePgsHR+HwuVELn+NtcEjfTz/9JO655x7VsEV758cZfGE7XzcOsbztttvk/+bnWOu2W3Pq1CnNRblA0HXMxYsX5UMeFRUlS6FjxowRpaWlNW7Ib775xpTGN+8jjzwi4uLiRGRkpLjvvvtqPGxZWVkyBjciIkLGcXMMcWVlpVsF3Ve29+nTR27X+jdq1Cibti5ZskS+SDgumkuOHBtuvj3rdT/88EPRrl07mf/6668XX3zxhcVyLi0+99xzIjExUYoWi9+xY8dcOj/O4m3bV65cqXp+a+Ms8MV517qgo/tcAADQCYhyAQAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBBwAAnQBBB8CDHDt2zNRpmbfZvHmz7FiKO0cDgQEEHQAH3QFzj4ADBw6sMShDcnIy/eUvf7G7Pne1+uijj1KDBg3I23DXtCEhIbR27Vqv7xv4BjT9B8ABv/zyiyzprlixQnaTyowcOZJ+/PFH2r17txxYQw0ekLpNmzZyNJxmzZqRL+CBlFetWiXtBPoHJXQAHMADdfz1r3+VJe3z58/Tp59+KvtLX7NmjU0xZ3hgjC5duliIOYsr99e+adMmat++vRzG7P7776erV6/K/rR5FPu4uDh67LHH5NeBAqfPnTtXvkiioqKoRYsW9Nlnn1F+fj7dc889Mu2GG26QfdGbc/fdd8u0EydOeOjsAE3h697BAPAHuCe+m2++WfbAx6PUv/jiiw7X4VHjuUtfc7i3Qe629fbbbxf79u0T3377rWjYsKHs0pf77OaBhz///HPZIyB3EavQokULER8fL5YtWyZ++eUX2cc897LI3ehyL4LcK+C9994rrrvuOmmrOdx7IO8X6B8IOgBOwv1ocxmoc+fOdrsLVuAug1944QWLNKX72F9//dWUxoMscHe/5t3f9uvXzzT4giLoDz30kGmeuwXm7XB3rwo8kAenWXcZzP2mP//887U4YuBvwOUCgJO8++670kXCPvGzZ886zH/t2jUKDw+vkc7baN26tcVAxOxSYbeJeZr1MHPsUjFfznTu3LlGmvV6ERER0qUD9A8EHQAn2LFjB7322mvS992zZ08aO3asHCfV0diXhYWFNdI58sQcHhxbLc063NA8Dy+3lWa9Ho812qhRIyeOEvg7EHQAHMClWx6Ye9KkSXJg43feeUcONr1s2TK763Xr1o0OHz5MvqSsrExWiLItQP9A0AFwAMeSc2mcI10Ydo8sWrSInn76acrKyrK5Xr9+/eQo8ebRKt7mhx9+kKPUp6en+8wG4D0g6ADY4dtvv5Wx3CtXrpS+b4UJEybIBkf2XC933nknBQcH0z//+U/yFevXr5ex8+a2A/2ChkUAeBB+GXC8+FdffeX1fRcUFMhYd45DT01N9fr+gfcJ9sE+AQgYuCRfVFQk+3LxdvN/dge9+eabEPMAAiV0AADQCfChAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCAToCgAwCATgj2tQEAqFFdXU2VlZW+NgN4kJCQEKpXr56vzdAVEHSgKYQQlJubS0VFRb42BXiB2NhYSkpKIoPB4GtTdAEEHWgKRcwbN25MkZGReNB1/OK+evUqXbhwQc43adLE1ybpAgg60JSbRRHzhg0b+toc4GEiIiLklEWdrzncL3UHlaJAMyg+cy6Zg8BAudaoL3EPEHSgOeBmCRxwrd0LBB0AAHQCBB0AAHQCBB0AN7B06VJq2bIlhYeHU1paGu3atctu/lWrVkl3g/mP1zVn9OjRNfL079/fIs+lS5do+PDhFB0dLUMAx44dS5cvX7bI89NPP9FNN90kt5+cnEwLFixw45EDLQFBB6CObNiwgaZOnUqzZ8+mffv2UZcuXahfv36mkDxbsAifP3/e9Dt9+nSNPCzg5nnWr19vsZzF/NChQ7RlyxbatGkT/fvf/6bx48eblpeUlNAdd9xBLVq0oL1799LChQvp+eefp+XLl7vxDADNIADQCNeuXROHDx+WU3+iZ8+eYvLkyab56upq0bRpUzFv3jyb66xcuVLExMTY3e6oUaPEPffcY3M5nyt+hHfv3m1K+/LLL4XBYBA5OTly/s033xRxcXGivLzclOeZZ54R7du3d8m2f/zjH3JfCrNnzxZdunQR77zzjkhOThb169cXkyZNElVVVWL+/PkiMTFRNGrUSMydO1eX11yroIQOdMmJ/Mu040SBnHqSiooKWfLt27evKS0oKEjOZ2Zm2l2XXSNccmY3yD333CNL2tb861//kjHa7du3p0mTJtHFixdNy3j77Gbp0aOHKY33y/vfuXOnKc///M//UGhoqCkPfz0cO3aMCgsL63TsJ06coC+//JI2b94svxzeeecdGjBgAJ09e5a+/fZbmj9/Ps2cOdNkC/A8aFgEdMdHe87Qmh9O05XyKqofFkwje7Wg+3ske2RfBQUFskFUYmKiRTrPHz161OZ6LNDvvvsu3XDDDVRcXEyLFi2i3r17S1Fv3ry5yd0ycOBASk1NleL57LPP0p133ilFmhvhcKtaFntzgoODKT4+Xi5jeMrrW9umLIuLi6v1sRuNRnkMDRo0oI4dO9Itt9wiXxQZGRnypcLHyKL+zTffyHoF4Hkg6EBXcImcxZyblqfERVLBlXI5361FHLVuFEVaIT09Xf4UWMyvu+46evvtt+nFF1+UaUOHDjUt79y5sxT/1q1by1L7bbfdRr6GK4FZzM1fFPyiYTE3T3NUlwDcB1wuQFfklZTJknlC/TAKCjLIKc9zuidISEiQIpaXl2dpR16e7HTKlZ4Hu3XrRr/++qvNPK1atZL7U/Lw9q3FsqqqSka+KPvmqZptyjJn4a8QNZvN4SgctTQuyQPvAEEHuiIxOly6WbhkbjQKOeV5TvcE7Jvu3r07bd261ZTGAsbz5iVwZwTz4MGDdjupYt80+9CVPLx97vuGffgK27Ztk/tXXBychyNfzJvWc0QMu0PsuVtKS0vp2rVrpvmTJ086fSzAd0DQga5gtwr7zLlkmF14VU553pPuFg5ZXLFiBa1evZqOHDkiKy+vXLlCY8aMMeUZOXIkzZgxwzT/wgsv0Ndffy2FkkMdH3roIRm2+PDDD5sqTJ966in64YcfKCsrS74guOK0TZs2slKTYRcN+9nHjRsn4963b99OU6ZMka6apk2byjwPPvigfOlwfDr75znE8o033pA224NfCpyHvwb4BfD666/L9B07dnjkHAL3AB860B1cAco+c3azcMnc077zIUOGUH5+Ps2aNUtWNHbt2lVGfphXlGZnZ1v4ljnChIVYqZjkUj6LJVcuMuzG4QZB/JLgUjgLNMeTs389LCzMtJ21a9dKEWefOm9/0KBBtHjxYtPymJgY+eKYPHmy3Ae7bNhO81h1NXi9qKgoeSzc8+Wrr75KzzzzDE2YMEF+SQBtYuDYRV8bAQBTVlZGp06dklEZ1q0mgffgVqxPPPGEVwYZwTV3L3C5AACAToCgAwCAToCgAwBqdAqGMV39Ewg6AADoBAg60Byopw8ccK3dCwQdaAallSGPBg8CA+VaW7cwBbUDcehAM3DsNfceqDRn5wGEMeakfkvmLOZ8rfma87UHdQdx6EBT8O3IjW1QKRcYsJhznzJ4cbsHCDrQJNy3iXn/I0B/sJsFJXP3AkEHAACdgEpRAADQCRB0AADQCRB0AADQCRB0AADQCRB0AADQCRB0AADQCRB0AAAgffD/5zlGx6wT3RQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "spot = analysis.SpotDiagram(lens)\n", "spot.view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that we also saved the values of the objective function in each iteration. We can now use these values to plot the convergence of the objective function over the 1000 iterations." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2026-03-24T09:48:23.606523Z", "iopub.status.busy": "2026-03-24T09:48:23.606362Z", "iopub.status.idle": "2026-03-24T09:48:23.665047Z", "shell.execute_reply": "2026-03-24T09:48:23.664615Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(values)\n", "plt.xlabel(\"Iteration\")\n", "plt.ylabel(\"Objective Function Value\")\n", "plt.title(\"Convergence of Random Walk Optimizer\")\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can clearly see that the optimization converges within about 250 iterations. We can therefore conclude that the random walk optimizer is effective for this problem. For improved performance, we might consider adding a stopping condition in the future to avoid unnecessary iterations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Conclusions:\n", "\n", "- This tutorial showed how to add custom optimization algorithms in Optiland.\n", "- A custom optimizer inherits from `optimization.OptimizerGeneric` and it must 1) accept the optimization problem as an argument and 2) implement the `optimize` method.\n", "- The methods shown here can be used to define any arbitrary optimization algorithm. Likewise, existing optimization libraries can be built into Optiland using this approach." ] } ], "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.13.2" } }, "nbformat": 4, "nbformat_minor": 2 }