From 11afd50680cae5d9009aa6fe51260b6f9e6760f9 Mon Sep 17 00:00:00 2001 From: Cen Wang Date: Sat, 6 Dec 2025 10:54:16 -0500 Subject: [PATCH 1/3] Add workshop related example --- simopt/models/ermexample.py | 203 ++++++++++++++++++++++++++++++ workshop/erm_data.npy | Bin 0 -> 160128 bytes workshop/erm_data_generator.ipynb | 43 +++++++ workshop/workshop.ipynb | 157 +++++------------------ 4 files changed, 279 insertions(+), 124 deletions(-) create mode 100644 simopt/models/ermexample.py create mode 100644 workshop/erm_data.npy create mode 100644 workshop/erm_data_generator.ipynb diff --git a/simopt/models/ermexample.py b/simopt/models/ermexample.py new file mode 100644 index 000000000..4c533222c --- /dev/null +++ b/simopt/models/ermexample.py @@ -0,0 +1,203 @@ +"""Example problem of deterministic function with noise. + +Simulate a synthetic problem with a deterministic objective function +evaluated with noise. +""" + +from __future__ import annotations + +from typing import Annotated, ClassVar + +import numpy as np +from pydantic import BaseModel, Field + +from mrg32k3a.mrg32k3a import MRG32k3a +from simopt.base import ( + ConstraintType, + Model, + Objective, + Problem, + RepResult, + VariableType, +) +from simopt.input_models import InputModel + + +class ERMExampleModelConfig(BaseModel): + """Configuration model for ERMExample simulation. + + An empirical risk minimization model for linear regression. + """ + + beta: Annotated[ + tuple[float, ...], + Field( + default=(0.0, 0.0), + description="(intercept, slope) coefficients", + ), + ] + + +class ERMExampleProblemConfig(BaseModel): + """Configuration model for ERMExample Problem. + + Base class to implement simulation-optimization problems. + """ + + initial_solution: Annotated[ + tuple[float, ...], + Field( + default=(0.0, 0.0), + description="initial solution", + ), + ] + budget: Annotated[ + int, + Field( + default=1000, + description="max # of replications for a solver to take", + gt=0, + json_schema_extra={"isDatafarmable": False}, + ), + ] + + +class FileInputModel(InputModel): + def __init__(self, filename): + self.data = np.load(filename) + + def set_rng(self, rng: random.Random) -> None: + self.rng = rng + + def unset_rng(self) -> None: + self.rng = None + + def random(self) -> float: + n_rows = np.shape(self.data)[0] + resample_idx = np.random.choice(n_rows, size=1, replace=True) + resample_x = self.data[resample_idx, 0].item() + resample_y = self.data[resample_idx, 1].item() + return resample_x, resample_y + + +class ERMExampleModel(Model): + """A model that for the empirical risk of a linear regression model.""" + + class_name_abbr: ClassVar[str] = "ERMEXAMPLE" + class_name: ClassVar[str] = "Linear Regression ERM" + config_class: ClassVar[type[BaseModel]] = ERMExampleModelConfig + n_rngs: ClassVar[int] = 1 + n_responses: ClassVar[int] = 1 + + def __init__(self, fixed_factors: dict | None = None) -> None: + """Initialize the model. + + Args: + fixed_factors (dict | None): fixed factors of the model. + If None, use default values. + """ + # Let the base class handle default arguments. + super().__init__(fixed_factors) + self.resample_model = FileInputModel("workshop/erm_data.npy") + + def before_replicate(self, rng_list: list[MRG32k3a]) -> None: # noqa: D102 + self.resample_model.set_rng(rng_list[0]) + + def replicate(self) -> tuple[dict, dict]: + """Evaluate the squared error loss of a single observation. + + Returns: + tuple[dict, dict]: A tuple containing: + - responses (dict): Performance measures of interest, including: + - "sq_error_loss": Squared error loss of a single observation. + - gradients (dict): A dictionary of gradient estimates for + each response. + """ + beta0, beta1 = self.factors["beta"] + x, y = self.resample_model.random() + sq_error_loss = (y - beta0 - beta1 * x) ** 2 + error_loss = y - beta0 - beta1 * x + # gradients wrt beta0 and beta1 + grad_sq_error_loss = (-2 * error_loss, -2 * x * error_loss) + + # Compose responses and gradients. + responses = {"sq_error_loss": sq_error_loss} + gradients = {"sq_error_loss": {"beta": grad_sq_error_loss}} + return responses, gradients + + +class ERMExampleProblem(Problem): + """Base class to implement simulation-optimization problems.""" + + class_name_abbr: ClassVar[str] = "ERM-EXAMPLE-1" + class_name: ClassVar[str] = "Min Empirical Risk" + config_class: ClassVar[type[BaseModel]] = ERMExampleProblemConfig + model_class: ClassVar[type[Model]] = ERMExampleModel + n_objectives: ClassVar[int] = 1 + n_stochastic_constraints: ClassVar[int] = 0 + minmax: ClassVar[tuple[int, ...]] = (-1,) + constraint_type: ClassVar[ConstraintType] = ConstraintType.UNCONSTRAINED + variable_type: ClassVar[VariableType] = VariableType.CONTINUOUS + gradient_available: ClassVar[bool] = True + model_default_factors: ClassVar[dict] = {} + model_decision_factors: ClassVar[set[str]] = {"beta"} + + @property + def optimal_value(self) -> float | None: # noqa: D102 + # Compute optimal beta0 and beta1 + all_data = np.load("workshop/erm_data.npy") + x = all_data[:, 0] + y = all_data[:, 1] + optbeta1, optbeta0 = np.polyfit(x, y, 1) + opttrainingmse = np.mean( + [(yy - optbeta0 - optbeta1 * xx) ** 2 for (xx, yy) in zip(x, y)] + ) + return opttrainingmse + + @property + def optimal_solution(self) -> tuple | None: # noqa: D102 + # Compute optimal beta0 and beta1 + all_data = np.load("workshop/erm_data.npy") + x = all_data[:, 0] + y = all_data[:, 1] + optbeta1, optbeta0 = np.polyfit(x, y, 1) + return (optbeta0, optbeta1) + + @property + def dim(self) -> int: # noqa: D102 + return 2 + + @property + def lower_bounds(self) -> tuple: # noqa: D102 + return (-np.inf,) * self.dim + + @property + def upper_bounds(self) -> tuple: # noqa: D102 + return (np.inf,) * self.dim + + def vector_to_factor_dict(self, vector: tuple) -> dict: # noqa: D102 + return {"beta": vector[:]} + + def factor_dict_to_vector(self, factor_dict: dict) -> tuple: # noqa: D102 + return tuple(factor_dict["beta"]) + + def replicate(self, _x: tuple) -> RepResult: # noqa: D102 + responses, gradients = self.model.replicate() + objectives = [ + Objective( + stochastic=responses["sq_error_loss"], + stochastic_gradients=gradients["sq_error_loss"]["beta"], + ) + ] + return RepResult(objectives=objectives) + + def get_random_solution(self, rand_sol_rng: MRG32k3a) -> tuple: # noqa: D102 + # beta = tuple([rand_sol_rng.uniform(-2, 2) for _ in range(self.dim)]) + beta = tuple( + rand_sol_rng.mvnormalvariate( + mean_vec=[1.0] * self.dim, + cov=np.eye(self.dim).tolist(), + factorized=False, + ) + ) + return beta diff --git a/workshop/erm_data.npy b/workshop/erm_data.npy new file mode 100644 index 0000000000000000000000000000000000000000..c117ae3d89eb01e506b0a885d085ccaea06ed65d GIT binary patch literal 160128 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%0AD9cR!P|39 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%0De3Dxor*3P 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 literal 0 HcmV?d00001 diff --git a/workshop/erm_data_generator.ipynb b/workshop/erm_data_generator.ipynb new file mode 100644 index 000000000..fc805e171 --- /dev/null +++ b/workshop/erm_data_generator.ipynb @@ -0,0 +1,43 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "5c2c7b4c", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "n = 10000 # number of observations\n", + "# X ~ Normal(0, 1)\n", + "# Y|X ~ Normal(1 + x, 0.1)\n", + "x = np.random.normal(size=10000)\n", + "y = 1 + x + np.random.normal(loc=0, scale=0.1, size=10000)\n", + "xydata = np.array([[xx, yy] for (xx, yy) in zip(x, y)])\n", + "np.save(\"erm_data.npy\", xydata)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "simopt", + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/workshop/workshop.ipynb b/workshop/workshop.ipynb index 2c0527ebd..29b52f8bb 100644 --- a/workshop/workshop.ipynb +++ b/workshop/workshop.ipynb @@ -24,7 +24,8 @@ "\n", "import sys\n", "\n", - "sys.path.append(\"venv\\\\lib\\\\site-packages\")" + "sys.path.append(\"venv\\\\lib\\\\site-packages\")\n", + "sys.path.append(\"..\")" ] }, { @@ -39,8 +40,8 @@ "import simopt.experiment_base as expbase\n", "from simopt.experiment_base import PlotType\n", "\n", - "# Import Example problem and Random Search and ADAM solvers.\n", - "from simopt.models.example import ExampleProblem\n", + "# Import ERM-Example problem and Random Search and ADAM solvers.\n", + "from simopt.models.ermexample import ERMExampleProblem\n", "from simopt.solvers.adam import ADAM\n", "from simopt.solvers.randomsearch import RandomSearch" ] @@ -51,11 +52,15 @@ "source": [ "In this portion of the workshop, we'll be working with a problem and two solvers.\n", "\n", - "**Problem:** Minimize $||x||^2$ with additive Gaussian noise over $x \\in \\mathbb{R}^2$.\n", + "**Problem:** Find the slope ($\\beta_1$) and intercept ($\\beta_0$) coefficients that minimize the training MSE of a simple linear regression model, i.e., least squares regression:\n", + "\n", + "$$ \\min_{\\beta_0, \\beta_1} \\frac{1}{n}\\sum_{i=1}^n (y_i - (\\beta_0 + \\beta_1 x_i))^2, $$\n", + "\n", + "where $Y(x) = 1 + x + \\epsilon$ and $\\epsilon \\sim N(0, 0.1)$.\n", "\n", "**Solver:** Random Search\n", - "* Randomly samples solutions. For this two-dimensional problem, solutions are sampled from a MVN distribution with mean vector (0, 0) and variance-covariance matrix (1, 0; 0, 1).\n", - "* Takes a fixed number of observations (replications) at each solution.\n", + "* Randomly samples ($\\beta_0$, $\\beta_1$) from a bivariate normal distribution with mean vector (1, 1) and variance-covariance matrix (1, 0; 0, 1).\n", + "* Draws a fixed number of observations from the training dataset (i.e., a minibatch) and computes the squared error loss.\n", "* [Full documentation](https://simopt.readthedocs.io/en/latest/randomsearch.html)\n", "\n", "**Solver:** ADAM\n", @@ -73,11 +78,11 @@ "# CODE CELL [1]\n", "\n", "# Instantiate the problem and the Random Search solver, with specifications.\n", - "my_problem = ExampleProblem(\n", - " fixed_factors={\"initial_solution\": (2.0, 2.0), \"budget\": 200}\n", + "my_problem = ERMExampleProblem(\n", + " fixed_factors={\"initial_solution\": (0.0, 0.0), \"budget\": 2000}\n", ")\n", "my_rand_search_solver = RandomSearch(\n", - " fixed_factors={\"crn_across_solns\": True, \"sample_size\": 10}\n", + " fixed_factors={\"crn_across_solns\": True, \"sample_size\": 100}\n", ")\n", "\n", "# Pair the problem and solver for experimentation.\n", @@ -88,7 +93,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's see how Random Search does on this toy problem." + "Let's see how Random Search does on this problem." ] }, { @@ -99,20 +104,16 @@ "source": [ "# CODE CELL [2]\n", "\n", - "# Run 10 macroreplications of Random Search on the Example Problem.\n", + "# Run 10 macroreplications of Random Search on the ERM-Example Problem.\n", "myexperiment.run(n_macroreps=10)\n", "\n", "# Post-process the results.\n", "myexperiment.post_replicate(n_postreps=200)\n", "expbase.post_normalize(experiments=[myexperiment], n_postreps_init_opt=200)\n", "\n", - "# [Results are saved in a file called experiments/outputs/RNDSRCH_on_EXAMPLE-1.pickle.]\n", + "# [Results are saved in a file called experiments//outputs/RNDSRCH_on_ERM-EXAMPLE-1.pickle.]\n", "# [The file is not human-readable, so we'll skip looking at it.]\n", "\n", - "# Record a summary of the results in a human-readable way.\n", - "myexperiment.log_experiment_results()\n", - "# [Go check out the file called experiments/logs/RNDSRCH_on_EXAMPLE-1_experiment_results.txt] # noqa: E501\n", - "\n", "# Plot the (unnormalized) progress curves from the 10 macroreplications.\n", "expbase.plot_progress_curves(\n", " experiments=[myexperiment], plot_type=PlotType.ALL, normalize=False\n", @@ -134,7 +135,7 @@ "\n", "In CODE CELL [1], play around with the arguments when initializing `myproblem` and `mysolver`.\n", "\n", - "Vary factors of the Example problem:\n", + "Vary factors of the ERM-Example problem:\n", "- Change the initial solution.\n", "- Change the budget, i.e., the max number of replications. \n", "\n", @@ -153,14 +154,14 @@ "\n", "### Exercise \\#2\n", "\n", - "1. Open the file simopt/model/example.py in the VS Code editor.\n", - "2. Let's change how random search randomly samples solutions in R^2. For starters, uncomment Line 430\n", + "1. Open the file simopt/model/ermexample.py in the VS Code editor.\n", + "2. Let's change how random search randomly samples solutions in $\\mathbb{R}^2$. For starters, uncomment Line 193\n", "\n", - " `x = tuple([rand_sol_rng.uniform(-2, 2) for _ in range(self.dim)])`\n", + " `beta = tuple([rand_sol_rng.uniform(-2, 2) for _ in range(self.dim)])`\n", "\n", - " and comment out Lines 431-437\n", + " and comment out Lines 194-200\n", " \n", - " `x = tuple(rand_sol_rng.mvnormalvariate(mean_vec=np.zeros(self.dim), cov=np.eye(self.dim), factorized=False))`\n", + " `beta = tuple(rand_sol_rng.mvnormalvariate(mean_vec=[1.0] * self.dim, cov=np.eye(self.dim), factorized=False))`\n", "\n", "3. Restart the kernel using the Restart Button at the top of this notebook. This will ensure the new version of the source code is being imported.\n", "4. Run COMBO CODE CELL [0 + 1 + 2] below (this effectively reruns CODE CELLS [0], [1], and [2]). *How have the plots changed?*\n", @@ -181,17 +182,18 @@ "import sys\n", "\n", "sys.path.append(\"venv\\\\lib\\\\site-packages\")\n", + "sys.path.append(\"..\")\n", "import simopt.experiment_base as expbase\n", "from simopt.experiment_base import PlotType\n", - "from simopt.models.example import ExampleProblem\n", + "from simopt.models.ermexample import ERMExampleProblem\n", "from simopt.solvers.adam import ADAM\n", "from simopt.solvers.randomsearch import RandomSearch\n", "\n", - "my_problem = ExampleProblem(\n", - " fixed_factors={\"initial_solution\": (2.0, 2.0), \"budget\": 200}\n", + "my_problem = ERMExampleProblem(\n", + " fixed_factors={\"initial_solution\": (0.0, 0.0), \"budget\": 2000}\n", ")\n", "my_rand_search_solver = RandomSearch(\n", - " fixed_factors={\"crn_across_solns\": True, \"sample_size\": 10}\n", + " fixed_factors={\"crn_across_solns\": True, \"sample_size\": 100}\n", ")\n", "myexperiment = expbase.ProblemSolver(problem=my_problem, solver=my_rand_search_solver)\n", "\n", @@ -222,8 +224,8 @@ "source": [ "# CODE CELL [3]\n", "\n", - "my_adam_solver = ADAM(fixed_factors={\"crn_across_solns\": True, \"r\": 10})\n", - "# Create a grouping of Example-RandomSearch and Example-ADAM pairs.\n", + "my_adam_solver = ADAM(fixed_factors={\"crn_across_solns\": True, \"r\": 100})\n", + "# Create a grouping of ERM-Example-RandomSearch and ERM-Example-ADAM pairs.\n", "mygroupexperiment = expbase.ProblemsSolvers(\n", " problems=[my_problem], solvers=[my_rand_search_solver, my_adam_solver]\n", ")\n", @@ -236,7 +238,7 @@ "# Record a summary of the results in a human-readable way.\n", "mygroupexperiment.log_group_experiment_results()\n", "# [Go check out the file called\n", - "# experiments/logs/group_RNDSRCH_ADAM_on_EXAMPLE-1_group_experiment_results.txt]\n", + "# experiments//logs/group_RNDSRCH_ADAM_on_ERM-EXAMPLE-1_group_experiment_results.txt]\n", "\n", "# Plot the mean progress curve for each solver from the 10 macroreplications.\n", "expbase.plot_progress_curves(\n", @@ -249,104 +251,11 @@ ")\n", "# [The plot should be displayed in the output produced below.]" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "#### Your turn.\n", - "\n", - "### Exercise \\#3\n", - "\n", - "1. Open simopt/model/example.py again.\n", - "2. Change the noise in the objective function evaluations to create a slightly different 2D optimization problem. This can be done by changing Line 99: \n", - " \n", - " `fn_eval_at_x = np.linalg.norm(x) ** 2 + noise_rng.normalvariate()`\n", - "\n", - " where `x` is a numpy array of length two. For starters, try passing the argument `sigma=10` into the function call `noise_rng.normalvariate()`. The default value is `sigma=1`, so this has the effect of increasing the common variance of the noise from 1 to 100.\n", - "3. Restart the kernel and run COMBO CODE CELL [0 + 1 + 3] below. *How have the plots changed? Why haven't they changed more?*\n", - "\n", - "4. Next, change the underlying objective function by replacing `np.linalg.norm(x) ** 2` in Line 99 with some other two-dimensional function of `x`, e.g., `1 - np.exp(-np.linalg.norm(x) ** 2)`. (This objective function looks like an upside-down standard bivariate normal pdf, rescaled.)\n", - "5. Depending of your choice of new objective function, you MAY need to change other parts of the code, including:\n", - " * The gradient of `f(x)` in Line 103. For the example given above, this would need to be changed from\n", - " \n", - " `gradients = {\"est_f(x)\": {\"x\": tuple(2 * x)}}`\n", - "\n", - " to\n", - "\n", - " `gradients = {\"est_f(x)\": {\"x\": tuple(2 * x * np.exp(-np.linalg.norm(x) ** 2))}}`\n", - " * If you change the problem to a maxmization problem, you will need to change Line 190 from\n", - " \n", - " `return (-1,)`\n", - " \n", - " to\n", - " \n", - " `return (1,)`.\n", - " * The optimal solution in Line 214. (For the running example, this will not be necessary.)\n", - " * The optimal objective function value in Line 208. (For the running example, this will not be necessary.)\n", - "6. Restart the kernel and run COMBO CODE CELL [0 + 1 + 3] below. *How have the plots changed?*\n", - "\n", - "**Extra for Experts:** Change the dimension of the problem. To do this, you will need to change the dimension of the default initial solution, defined in Line 185." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# COMBO CODE CELL [0 + 1 + 3]\n", - "import os\n", - "\n", - "os.chdir(\"../\")\n", - "import sys\n", - "\n", - "sys.path.append(\"venv\\\\lib\\\\site-packages\")\n", - "import simopt.experiment_base as expbase\n", - "from simopt.experiment_base import PlotType\n", - "from simopt.models.example import ExampleProblem\n", - "from simopt.solvers.adam import ADAM\n", - "from simopt.solvers.randomsearch import RandomSearch\n", - "\n", - "my_problem = ExampleProblem(\n", - " fixed_factors={\"initial_solution\": (2.0, 2.0), \"budget\": 200}\n", - ")\n", - "my_rand_search_solver = RandomSearch(\n", - " fixed_factors={\"crn_across_solns\": True, \"sample_size\": 10}\n", - ")\n", - "my_adam_solver = ADAM(fixed_factors={\"crn_across_solns\": True, \"r\": 10})\n", - "\n", - "mygroupexperiment = expbase.ProblemsSolvers(\n", - " problems=[my_problem], solvers=[my_rand_search_solver, my_adam_solver]\n", - ")\n", - "mygroupexperiment.run(n_macroreps=10)\n", - "mygroupexperiment.post_replicate(n_postreps=200)\n", - "mygroupexperiment.post_normalize(n_postreps_init_opt=200)\n", - "mygroupexperiment.log_group_experiment_results()\n", - "expbase.plot_progress_curves(\n", - " experiments=[\n", - " mygroupexperiment.experiments[0][0],\n", - " mygroupexperiment.experiments[1][0],\n", - " ],\n", - " plot_type=PlotType.MEAN,\n", - " normalize=False,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Other demonstrations, time permitting\n", - "* Walkthrough `replicate()` method of simopt/models/ironore.py to illustrate what the code looks like for a typical stochastic simulation model.\n", - "* Walkthrough `solve()` method of simopt/solvers/ADAM.py to illustrate what the code looks like for a typical solver." - ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "simopt", "language": "python", "name": "python3" }, @@ -360,7 +269,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.13.10" } }, "nbformat": 4, From ff8649a8e60cd82f02500f8b192a1d8131838231 Mon Sep 17 00:00:00 2001 From: Cen Wang Date: Sat, 6 Dec 2025 17:46:55 -0500 Subject: [PATCH 2/3] Temporarily disable ruff for workshop related files --- ruff.toml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ruff.toml b/ruff.toml index 5eca43981..ad3b4d6a5 100644 --- a/ruff.toml +++ b/ruff.toml @@ -1,6 +1,12 @@ # ruff.toml line-length = 88 -exclude = ["simopt/gui/*", "notebooks/*"] +exclude = [ + "simopt/gui/*", + "notebooks/*", + "simopt/models/ermexample.py", + "workshop/erm_data_generator.ipynb", + "workshop/workshop.ipynb" +] [lint] select = [ From a2236d3f66ecad49cd4de8e8569b58f984f1544c Mon Sep 17 00:00:00 2001 From: Cen Wang Date: Sat, 6 Dec 2025 17:48:44 -0500 Subject: [PATCH 3/3] Temporarily disable ty for workshop related files --- ty.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/ty.toml b/ty.toml index b3261959c..a3c39d0c5 100644 --- a/ty.toml +++ b/ty.toml @@ -19,6 +19,7 @@ exclude = [ "simopt/gui/new_experiment_window.py", "simopt/gui/plot_window.py", "simopt/model.py", + "simopt/models/ermexample.py", "simopt/plot_type.py", "simopt/plots", "simopt/problem.py",