Skip to content

Instantly share code, notes, and snippets.

@sethaxen
Last active June 12, 2023 23:47
Show Gist options
  • Save sethaxen/331402e156537a933121133fe9965573 to your computer and use it in GitHub Desktop.
Save sethaxen/331402e156537a933121133fe9965573 to your computer and use it in GitHub Desktop.
Expected Constrained Improvement with SMAC
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "8069c081",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import sklearn.ensemble\n",
"from sklearn import datasets\n",
"from sklearn.base import ClassifierMixin\n",
"from sklearn.gaussian_process import GaussianProcessClassifier\n",
"\n",
"from ConfigSpace import Configuration, ConfigurationSpace\n",
"from smac import HyperparameterOptimizationFacade, BlackBoxFacade, Scenario\n",
"from smac.model import AbstractModel\n",
"from smac.model.random_forest import RandomForest\n",
"from smac.model.gaussian_process import AbstractGaussianProcess, GaussianProcess\n",
"from smac.acquisition.function.expected_improvement import EI\n",
"from smac.runhistory.encoder import RunHistoryEncoder\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "6ecf7c71",
"metadata": {},
"outputs": [],
"source": [
"# utility functions\n",
"\n",
"\n",
"def is_trained(model: AbstractModel) -> bool:\n",
" if issubclass(type(model), AbstractGaussianProcess):\n",
" return model._is_trained\n",
" elif issubclass(type(model), RandomForest):\n",
" return model._rf is not None\n",
" else:\n",
" # we don't know\n",
" return True\n",
"\n",
"\n",
"def is_fitted(clf: ClassifierMixin) -> bool:\n",
" try:\n",
" sklearn.utils.validation.check_is_fitted(clf)\n",
" return True\n",
" except:\n",
" return False\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "573eb87e",
"metadata": {},
"outputs": [],
"source": [
"class UnknownConstraintModel(AbstractModel):\n",
" \"\"\"A model for handling unknown constraints.\n",
"\n",
" Sometimes the target function includes unknown or complicated constraints that cause a nonfinite value to be\n",
" returned or a nan to be raised. This model wraps another model that is trained only on the finite values,\n",
" along with a classifier that is trained to predict whether a configuration will produce a finite response.\n",
"\n",
" This model is intended to be used with an acquisition function that calls ``predict_probability``.\n",
"\n",
" Parameters\n",
" ----------\n",
" configspace : ConfigurationSpace\n",
" The configuration space.\n",
" model : AbstractModel\n",
" the model used to predict finite responses\n",
" clf : ClassifierMixin | None, defaults to None\n",
" the classifier used to predict whether a configuration will produce a finite response. If None, a\n",
" random forest classifier is used.\n",
" *args, **kwargs: forwarded to AbstractModel\n",
" \"\"\"\n",
"\n",
" def __init__(\n",
" self, configspace: ConfigurationSpace, model: AbstractModel, clf: ClassifierMixin | None = None, *args, **kwargs\n",
" ):\n",
" if clf is None:\n",
" clf = sklearn.ensemble.RandomForestClassifier()\n",
" self._clf = clf\n",
" self._model = model\n",
" super().__init__(configspace, *args, **kwargs)\n",
"\n",
" @property\n",
" def classifier(self) -> ClassifierMixin:\n",
" return self._clf\n",
"\n",
" @property\n",
" def model(self) -> AbstractModel:\n",
" return self._model\n",
"\n",
" def _train(self, X: np.ndarray, y: np.ndarray):\n",
" isvalid = np.isfinite(y).ravel()\n",
" if np.any(isvalid):\n",
" self.model._train(X[isvalid, ...], y[isvalid, ...])\n",
" self._train_classifier(X, isvalid)\n",
" return self\n",
"\n",
" def _train_classifier(self, X: np.ndarray, y: np.ndarray):\n",
" self.classifier.fit(X, y)\n",
" return self\n",
"\n",
" def _predict(self, X: np.ndarray, *args) -> tuple[np.ndarray, np.ndarray | None]:\n",
" if is_trained(self.model):\n",
" return self.model._predict(X, *args)\n",
" else:\n",
" # hopefully these are never used, see EIConstrained\n",
" return (np.ones(X.shape[0]), np.zeros(X.shape[0]))\n",
"\n",
" def predict_probability(self, X: np.ndarray) -> np.ndarray:\n",
" if is_fitted(self.classifier):\n",
" p = self.classifier.predict_proba(X)\n",
" return p[:, [-1]]\n",
" else:\n",
" return np.ones(X.shape[0]).reshape(-1, 1)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "099f3069",
"metadata": {},
"outputs": [],
"source": [
"class EIConstrained(EI):\n",
" \"\"\"A constraint-weighted expected improvement (EI) acquisition function.\n",
"\n",
" This acquisition function is only intended for use when the model is a ``UnknownConstraintModel``.\n",
"\n",
" References\n",
" ----------\n",
" [1] Lee, H., Gramacy, R., Linkletter, C., & Gray, G. (2011).\n",
" Optimization subject to hidden constraints via statistical emulation.\n",
" Pacific Journal of Optimization, 7(3), 467-478.\n",
" [2] Gelbart, M. H., Snoek, J., & Adams, R. P. (2014).\n",
" Bayesian optimization with unknown constraints.\n",
" In: Proceedings of the Thirtieth Conference on Uncertainty in Artificial Intelligence (UAI'14).\n",
" arXiv: 1403.5607.\n",
" \"\"\"\n",
"\n",
" def _compute(self, X: np.ndarray) -> np.ndarray:\n",
" parent_model = self._model.model\n",
" pconst = self._model.predict_probability(X)\n",
" if is_trained(parent_model):\n",
" ei = super()._compute(X)\n",
" return ei * pconst\n",
" else:\n",
" return pconst\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "6552a1fe",
"metadata": {},
"source": [
"## Example 1: Branin-Hoo function with a constraint"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "fefe67bc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO][abstract_initial_design.py:68] Using `n_configs` and ignoring `n_configs_per_hyperparameter`.\n"
]
}
],
"source": [
"# problem set-up\n",
"# branin-hoo function has 3 optima.\n",
"# only one satisfies the specified ellipse constraint: (x1, x2) = (np.pi, 2.275).\n",
"\n",
"\n",
"def braninhoo(x1, x2):\n",
" a = 1\n",
" b = 5.1 / (4 * np.pi**2)\n",
" c = 5 / np.pi\n",
" r = 6\n",
" s = 10\n",
" t = 1 / (8 * np.pi)\n",
" return a * (x2 - b * x1**2 + c * x1 - r) ** 2 + s * (1 - t) * np.cos(x1) + s\n",
"\n",
"\n",
"def ellipse_constraint(x1, x2):\n",
" return (x1 - 2.5) ** 2 + (x2 - 7.5) ** 2 <= 50\n",
"\n",
"\n",
"def braninhoo_constrained(config, seed: int = 0):\n",
" x1 = config[\"x1\"]\n",
" x2 = config[\"x2\"]\n",
" if not ellipse_constraint(x1, x2):\n",
" return np.nan\n",
" return braninhoo(x1, x2)\n",
"\n",
"\n",
"configspace = ConfigurationSpace({\"x1\": (-5.0, 10.0), \"x2\": (0.0, 15.0)})\n",
"scenario = Scenario(configspace, deterministic=True, n_trials=50)\n",
"# override the default RunHistoryInverseScaledEncoder, which doesn't play well with nans and infs\n",
"runhistory_encoder = RunHistoryEncoder(scenario=scenario)\n",
"# use a smaller number of initial configurations\n",
"initial_design = HyperparameterOptimizationFacade.get_initial_design(scenario, n_configs=5)\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "769db7a5",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO][abstract_initial_design.py:81] Reducing the number of initial configurations from 20 to 12 (max_ratio == 0.25).\n",
"[INFO][abstract_initial_design.py:133] Using 12 initial design configurations and 0 additional configurations.\n",
"[INFO][abstract_intensifier.py:306] Using only one seed for deterministic scenario.\n",
"[INFO][abstract_intensifier.py:493] Added config 719654 as new incumbent because there are no incumbents yet.\n",
"[INFO][abstract_intensifier.py:565] Added config 34beb6 and rejected config 719654 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -0.9968221839517355 -> 4.511546706780791\n",
"[INFO][configspace.py:175] --- x2: 9.30847043171525 -> 3.1949775852262974\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config a1337d and rejected config 34beb6 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 4.511546706780791 -> 2.3189717205241323\n",
"[INFO][configspace.py:175] --- x2: 3.1949775852262974 -> 1.2824171036481857\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][smbo.py:298] Finished 50 trials.\n",
"[INFO][smbo.py:306] Configuration budget is exhausted:\n",
"[INFO][smbo.py:307] --- Remaining wallclock time: inf\n",
"[INFO][smbo.py:308] --- Remaining cpu time: inf\n",
"[INFO][smbo.py:309] --- Remaining trials: 0\n"
]
}
],
"source": [
"# try SMAC without accounting for constraints\n",
"smac_std = HyperparameterOptimizationFacade(\n",
" scenario,\n",
" braninhoo_constrained,\n",
" model=RandomForest(configspace),\n",
" acquisition_function=EI(),\n",
" runhistory_encoder=runhistory_encoder,\n",
" overwrite=True,\n",
")\n",
"incumbent_std = smac_std.optimize()\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "27b26235",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(Configuration(values={\n",
" 'x1': 2.3189717205241323,\n",
" 'x2': 1.2824171036481857,\n",
" }),\n",
" 6.431327806074405)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"incumbent_std, braninhoo_constrained(incumbent_std)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e515ebb0",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO][abstract_initial_design.py:133] Using 5 initial design configurations and 0 additional configurations.\n",
"[INFO][abstract_intensifier.py:306] Using only one seed for deterministic scenario.\n",
"[INFO][abstract_intensifier.py:493] Added config 719654 as new incumbent because there are no incumbents yet.\n",
"[INFO][abstract_intensifier.py:565] Added config 34beb6 and rejected config 719654 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -0.9968221839517355 -> 4.511546706780791\n",
"[INFO][configspace.py:175] --- x2: 9.30847043171525 -> 3.1949775852262974\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config 665224 and rejected config 34beb6 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 4.511546706780791 -> 3.517400861622688\n",
"[INFO][configspace.py:175] --- x2: 3.1949775852262974 -> 3.0289182973655278\n",
"[INFO][abstract_intensifier.py:565] Added config 5c1a56 and rejected config 665224 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 3.517400861622688 -> 3.5113129948124318\n",
"[INFO][configspace.py:175] --- x2: 3.0289182973655278 -> 3.0308532789081988\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config d680c5 and rejected config 5c1a56 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 3.5113129948124318 -> 3.0311969520736604\n",
"[INFO][configspace.py:175] --- x2: 3.0308532789081988 -> 2.8865589024188467\n",
"[INFO][abstract_intensifier.py:565] Added config d283e3 and rejected config d680c5 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 3.0311969520736604 -> 3.037406654973571\n",
"[INFO][configspace.py:175] --- x2: 2.8865589024188467 -> 2.8816691479706464\n",
"[INFO][abstract_intensifier.py:565] Added config 0aa4d9 and rejected config d283e3 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 3.037406654973571 -> 3.0427788597576875\n",
"[INFO][configspace.py:175] --- x2: 2.8816691479706464 -> 2.8797333877228173\n",
"[INFO][abstract_intensifier.py:565] Added config bc8d60 and rejected config 0aa4d9 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 3.0427788597576875 -> 3.0441453908825107\n",
"[INFO][configspace.py:175] --- x2: 2.8797333877228173 -> 2.869151780728192\n",
"[INFO][abstract_intensifier.py:565] Added config cb6e27 and rejected config bc8d60 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 3.0441453908825107 -> 3.025667909708938\n",
"[INFO][configspace.py:175] --- x2: 2.869151780728192 -> 2.8625116026951853\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][smbo.py:298] Finished 50 trials.\n",
"[INFO][smbo.py:306] Configuration budget is exhausted:\n",
"[INFO][smbo.py:307] --- Remaining wallclock time: inf\n",
"[INFO][smbo.py:308] --- Remaining cpu time: inf\n",
"[INFO][smbo.py:309] --- Remaining trials: 0\n"
]
}
],
"source": [
"# now try with accounting for constraints\n",
"smac_const = HyperparameterOptimizationFacade(\n",
" scenario,\n",
" braninhoo_constrained,\n",
" overwrite=True,\n",
" initial_design=initial_design,\n",
" model=UnknownConstraintModel(\n",
" configspace,\n",
" GaussianProcess(\n",
" configspace,\n",
" kernel=BlackBoxFacade.get_kernel(scenario),\n",
" ),\n",
" ),\n",
" acquisition_function=EIConstrained(),\n",
" runhistory_encoder=runhistory_encoder,\n",
")\n",
"incumbent_const = smac_const.optimize()\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "12bbc0ac",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(Configuration(values={\n",
" 'x1': 3.025667909708938,\n",
" 'x2': 2.8625116026951853,\n",
" }),\n",
" 0.7077263556119711)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"incumbent_const, braninhoo_constrained(incumbent_const)\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "6a148406",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_56970/987300156.py:14: UserWarning: No contour levels were found within the data range.\n",
" plt.contour(x1, x2, ellipse_constraint(x1, x2), levels=0, colors=\"red\")\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7fb385aaf010>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x1 = np.linspace(-5, 10, 1000)\n",
"x2 = np.linspace(0, 15, 1000)\n",
"x1, x2 = np.meshgrid(x1, x2)\n",
"X = np.dstack([x1, x2]).reshape(-1, 2)\n",
"# we can't just plot the decision surface of the classifier,\n",
"# because _build_matrix operates only on the actual run history,\n",
"# so instead we plot the probabilities for the configurations tested\n",
"x1_config = [d[\"x1\"] for d in smac_const.runhistory.get_configs()]\n",
"x2_config = [d[\"x2\"] for d in smac_const.runhistory.get_configs()]\n",
"X_config = runhistory_encoder._build_matrix(smac_const.runhistory)[0]\n",
"prob_config = smac_const._model.predict_probability(X_config).ravel()\n",
"\n",
"plt.contourf(x1, x2, braninhoo(x1, x2), levels=50, cmap=\"plasma_r\")\n",
"plt.contour(x1, x2, ellipse_constraint(x1, x2), levels=0, colors=\"red\")\n",
"plt.scatter(x1_config, x2_config, c=prob_config, cmap=\"bone_r\", clim=(0, 1))\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "db908527",
"metadata": {},
"source": [
"## Example 2"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "8fddafc2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO][abstract_initial_design.py:68] Using `n_configs` and ignoring `n_configs_per_hyperparameter`.\n"
]
}
],
"source": [
"def w(x):\n",
" return np.exp(-((x - 1) ** 2)) + np.exp(-0.8 * (x + 1) ** 2) - 0.05 * np.sin(8 * (x + 0.1))\n",
"\n",
"\n",
"def z(x1, x2):\n",
" return -w(x1) * w(x2)\n",
"\n",
"\n",
"def ellipse_constraint(x1, x2):\n",
" return (x1 - x2) ** 2 / 3 + (x1 + x2) ** 2 < 3\n",
"\n",
"\n",
"def z_constrained(config, seed: int = 0):\n",
" x1 = config[\"x1\"]\n",
" x2 = config[\"x2\"]\n",
" if not ellipse_constraint(x1, x2):\n",
" return np.nan\n",
" return z(x1, x2)\n",
"\n",
"\n",
"configspace = ConfigurationSpace({\"x1\": (-2.0, 2.0), \"x2\": (-2.0, 2.0)})\n",
"scenario = Scenario(configspace, deterministic=True, n_trials=50)\n",
"# override the default RunHistoryInverseScaledEncoder, which doesn't play well with nans and infs\n",
"runhistory_encoder = RunHistoryEncoder(scenario=scenario)\n",
"# use a smaller number of initial configurations\n",
"initial_design = HyperparameterOptimizationFacade.get_initial_design(scenario, n_configs=5)\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "d994c0b3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO][abstract_initial_design.py:81] Reducing the number of initial configurations from 20 to 12 (max_ratio == 0.25).\n",
"[INFO][abstract_initial_design.py:133] Using 12 initial design configurations and 0 additional configurations.\n",
"[INFO][abstract_intensifier.py:306] Using only one seed for deterministic scenario.\n",
"[INFO][abstract_intensifier.py:493] Added config 927cdc as new incumbent because there are no incumbents yet.\n",
"[INFO][abstract_intensifier.py:565] Added config afc31e and rejected config 927cdc as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -0.9324859157204628 -> 0.5364124551415443\n",
"[INFO][configspace.py:175] --- x2: 0.48225878179073334 -> -1.1480059772729874\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config 61fdf6 and rejected config afc31e as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 0.5364124551415443 -> -1.0249349139630795\n",
"[INFO][configspace.py:175] --- x2: -1.1480059772729874 -> 1.7202088944613934\n",
"[INFO][abstract_intensifier.py:565] Added config 172e3b and rejected config 61fdf6 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -1.0249349139630795 -> 1.3809673972427845\n",
"[INFO][configspace.py:175] --- x2: 1.7202088944613934 -> -0.9015109427273273\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config 422a13 and rejected config 172e3b as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 1.3809673972427845 -> 1.1551328413188457\n",
"[INFO][configspace.py:175] --- x2: -0.9015109427273273 -> 0.14300767704844475\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][smbo.py:298] Finished 50 trials.\n",
"[INFO][smbo.py:306] Configuration budget is exhausted:\n",
"[INFO][smbo.py:307] --- Remaining wallclock time: inf\n",
"[INFO][smbo.py:308] --- Remaining cpu time: inf\n",
"[INFO][smbo.py:309] --- Remaining trials: 0\n"
]
}
],
"source": [
"# try SMAC without accounting for constraints\n",
"smac_std = HyperparameterOptimizationFacade(\n",
" scenario,\n",
" braninhoo_constrained,\n",
" model=RandomForest(configspace),\n",
" acquisition_function=EI(),\n",
" runhistory_encoder=runhistory_encoder,\n",
" overwrite=True,\n",
")\n",
"incumbent_std = smac_std.optimize()\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "1e726676",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(Configuration(values={\n",
" 'x1': 1.1551328413188457,\n",
" 'x2': 0.14300767704844475,\n",
" }),\n",
" -0.8079718466860779)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"incumbent_std, z_constrained(incumbent_std)\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "7ddd918c",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[INFO][abstract_initial_design.py:133] Using 5 initial design configurations and 0 additional configurations.\n",
"[INFO][abstract_intensifier.py:306] Using only one seed for deterministic scenario.\n",
"[INFO][abstract_intensifier.py:493] Added config 927cdc as new incumbent because there are no incumbents yet.\n",
"[INFO][abstract_intensifier.py:565] Added config afc31e and rejected config 927cdc as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -0.9324859157204628 -> 0.5364124551415443\n",
"[INFO][configspace.py:175] --- x2: 0.48225878179073334 -> -1.1480059772729874\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config 61fdf6 and rejected config afc31e as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: 0.5364124551415443 -> -1.0249349139630795\n",
"[INFO][configspace.py:175] --- x2: -1.1480059772729874 -> 1.7202088944613934\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config eedd49 and rejected config 61fdf6 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -1.0249349139630795 -> -0.09224779448564924\n",
"[INFO][configspace.py:175] --- x2: 1.7202088944613934 -> 0.7154173919000537\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][abstract_intensifier.py:565] Added config d1eede and rejected config eedd49 as incumbent because it is not better than the incumbents on 1 instances:\n",
"[INFO][configspace.py:175] --- x1: -0.09224779448564924 -> 0.44838289088968564\n",
"[INFO][configspace.py:175] --- x2: 0.7154173919000537 -> 0.46773598749902767\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[WARNING][abstract_runner.py:122] Target function returned infinity or nothing at all. Result is treated as CRASHED and cost is set to inf.\n",
"[INFO][smbo.py:298] Finished 50 trials.\n",
"[INFO][smbo.py:306] Configuration budget is exhausted:\n",
"[INFO][smbo.py:307] --- Remaining wallclock time: inf\n",
"[INFO][smbo.py:308] --- Remaining cpu time: inf\n",
"[INFO][smbo.py:309] --- Remaining trials: 0\n"
]
}
],
"source": [
"# now try with accounting for constraints\n",
"smac_const = HyperparameterOptimizationFacade(\n",
" scenario,\n",
" braninhoo_constrained,\n",
" overwrite=True,\n",
" initial_design=initial_design,\n",
" model=UnknownConstraintModel(\n",
" configspace,\n",
" GaussianProcess(\n",
" configspace,\n",
" kernel=BlackBoxFacade.get_kernel(scenario),\n",
" ),\n",
" ),\n",
" acquisition_function=EIConstrained(),\n",
" runhistory_encoder=runhistory_encoder,\n",
")\n",
"incumbent_const = smac_const.optimize()\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "aafff61b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(Configuration(values={\n",
" 'x1': 0.44838289088968564,\n",
" 'x2': 0.46773598749902767,\n",
" }),\n",
" -0.9532908750183541)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"incumbent_const, z_constrained(incumbent_const)\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "93886132",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_56970/623996118.py:11: UserWarning: No contour levels were found within the data range.\n",
" plt.contour(x1, x2, ellipse_constraint(x1, x2), levels=0, colors=\"red\")\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7fb37d7528d0>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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SZLG/S3L8qRlIVwuFy7X5PrNrKyshLpBQmRmZorzTiDEeScW4rwTi0Q9b5vNpuj+ohadm2++mWuuuWbadSorK0f/39TUxHnnnce6det45JFHpt2uuLgYCEZ2SkpKRpe3tbVNivIIBAKBQCAQzETUopOfn09+fn5E6zY2NnLeeeexevVqHn/88RktraqqiuLiYjZu3MjKlSsB8Hg8bN68mR/84AfRJlUgEAgEAkGCo2x8aAxNTU2ce+65lJeXc//999Pe3k5LS8toO5wQixYt4plnngGCVVa33nor3/ve93jmmWd4//33ueGGG0hNTeUTn/hERMd1uVx861vfCludZWXEeYvzTgTEeYvzTgTEeSt73qp1L3/iiSf41Kc+Ffa7sYeUJInHH3+cG264YfS7e+65h1/+8pfjBgxcunSpGskUCAQCgUBgYTQdR0cgEAgEAoFAS1SruhIIBAKBQCDQGyE6AoFAIBAILIsQHYFAIBAIBJZFiI5AIBAIBALLYnrRqa2t5TOf+QxVVVWkpKQwd+5cvvWtb+HxTD/xnizL3H333ZSWlpKSksK5557L3r17NUq1Mtx7772cfvrppKamkp2dHdE2N9xwA5IkjfusXbtW3YQqTCznbYXr3d3dzbXXXktWVhZZWVlce+219PT0TLuNGa/3Qw89RFVVFcnJyaxevZrXX3992vU3b97M6tWrSU5OZs6cOTz88MMapVRZojnvTZs2TbqukiRx4MABDVMcP6+99hqXXXYZpaWlSJLEs88+O+M2Vrje0Z63Fa73hg0bOOWUU8jIyKCwsJArrriC6urqGbdT4nqbXnQOHDhAIBDgl7/8JXv37uUnP/kJDz/8MHfddde029133338+Mc/5sEHH2Tr1q0UFxdz4YUX0t/fr1HK48fj8XDVVVfxhS98IartLr74Ypqbm0c/L774okopVIdYztsK1/sTn/gEO3fu5KWXXuKll15i586dXHvttTNuZ6br/ac//Ylbb72Vr3/96+zYsYOzzjqLSy65hLq6urDr19TUcOmll3LWWWexY8cO7rrrLm655RaeeuopjVMeH9Ged4jq6upx13b+/PkapVgZBgcHWbFiBQ8++GBE61vlekd73iHMfL03b97Ml770Jd5++202btyIz+dj/fr1DA4OTrmNYtdbtiD33XefXFVVNeX3gUBALi4ulr///e+PLhsZGZGzsrLkhx9+WIskKsrjjz8uZ2VlRbTu9ddfL19++eWqpkcrIj1vK1zvffv2yYD89ttvjy7bsmWLDMgHDhyYcjuzXe9TTz1Vvummm8YtW7Rokfy1r30t7Ppf/epX5UWLFo1b9vnPf15eu3atamlUg2jP+9VXX5UBubu7W4PUaQMgP/PMM9OuY5XrPZZIztuK17utrU0G5M2bN0+5jlLX2/QRnXD09vZOO/tpTU0NLS0trF+/fnSZy+XinHPO4a233tIiibqyadMmCgsLWbBgATfeeCNtbW16J0lVrHC9t2zZQlZWFqeddtrosrVr15KVlTXjOZjlens8HrZv3z7uOgGsX79+ynPcsmXLpPUvuugitm3bhtfrVS2tShLLeYdYuXIlJSUlXHDBBbz66qtqJtMQWOF6x4OVrndvby/AtM9qpa635UTnyJEj/OxnP+Omm26acp3QNBQTJwotKiqaNEWF1bjkkkv4/e9/z7///W9+9KMfsXXrVs4//3zcbrfeSVMNK1zvlpYWCgsLJy0vLCyc9hzMdL07Ojrw+/1RXaeWlpaw6/t8Pjo6OlRLq5LEct4lJSU88sgjPPXUUzz99NMsXLiQCy64gNdee02LJOuGFa53LFjtesuyzO23386ZZ5457awHSl1vw4rO3XffHbbx1djPtm3bxm3T1NTExRdfzFVXXcVnP/vZGY8hSdK4v2VZnrRMa2I572i4+uqr+eAHP8jSpUu57LLL+Mc//sHBgwd54YUXFDyL6FH7vMH81ztcWmc6B6Ne7+mI9jqFWz/ccqMTzXkvXLiQG2+8kVWrVrFu3ToeeughPvjBD3L//fdrkVRdscr1jgarXe+bb76Z3bt383//938zrqvE9Y569nKtuPnmm7nmmmumXaeysnL0/01NTZx33nmsW7eORx55ZNrtiouLgaAtlpSUjC5va2ubZI9aE+15x0tJSQmzZ8/m0KFDiu0zFtQ8bytc7927d9Pa2jrpu/b29qjOwSjXOxz5+fnY7fZJUYzprlNxcXHY9R0OB3l5eaqlVUliOe9wrF27lieffFLp5BkKK1xvpTDr9f7yl7/Mc889x2uvvUZZWdm06yp1vQ0rOvn5+eTn50e0bmNjI+eddx6rV6/m8ccfx2abPlBVVVVFcXExGzduZOXKlUCwnnzz5s384Ac/iDvt8RDNeStBZ2cn9fX14wRAD9Q8bytc73Xr1tHb28u7777LqaeeCsA777xDb28vp59+esTHM8r1DkdSUhKrV69m48aNXHnllaPLN27cyOWXXx52m3Xr1vH888+PW/bKK6+wZs0anE6nqulViljOOxw7duww5HVVEitcb6Uw2/WWZZkvf/nLPPPMM2zatImqqqoZt1HsekfVdNmANDY2yvPmzZPPP/98uaGhQW5ubh79jGXhwoXy008/Pfr397//fTkrK0t++umn5T179sgf//jH5ZKSErmvr0/rU4iZY8eOyTt27JDvueceOT09Xd6xY4e8Y8cOub+/f3Sdsefd398v//d//7f81ltvyTU1NfKrr74qr1u3Tp41a5alz1uWrXG9L774Ynn58uXyli1b5C1btsjLli2TP/ShD41bx+zX+49//KPsdDrlRx99VN63b5986623ymlpaXJtba0sy7L8ta99Tb722mtH1z969Kicmpoq33bbbfK+ffvkRx99VHY6nfJf//pXvU4hJqI975/85CfyM888Ix88eFB+//335a997WsyID/11FN6nUJM9Pf3j+ZfQP7xj38s79ixQz527Jgsy9a93tGetxWu9xe+8AU5KytL3rRp07jn9NDQ0Og6al1v04vO448/LgNhP2MB5Mcff3z070AgIH/rW9+Si4uLZZfLJZ999tnynj17NE59fFx//fVhz/vVV18dXWfseQ8NDcnr16+XCwoKZKfTKVdUVMjXX3+9XFdXp88JxEi05y3L1rjenZ2d8ic/+Uk5IyNDzsjIkD/5yU9O6m5qhev985//XJ49e7aclJQkr1q1alz30+uvv14+55xzxq2/adMmeeXKlXJSUpJcWVkp/+IXv9A4xcoQzXn/4Ac/kOfOnSsnJyfLOTk58plnnim/8MILOqQ6PkLdpid+rr/+elmWrXu9oz1vK1zvqZ7TY8tpta63dDwBAoFAIBAIBJbDsL2uBAKBQCAQCOJFiI5AIBAIBALLIkRHIBAIBAKBZRGiIxAIBAKBwLII0REIBAKBQGBZhOgIBAKBQCCwLEJ0BAKBQCAQWBYhOgKBQCAQCCyLEB2BQCAQCASWRYiOQCAQCAQCyyJERyAQCAQCgWX5/4gZAMek2AH5AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x1 = np.linspace(-2, 2, 1000)\n",
"x2 = np.linspace(-2, 2, 1000)\n",
"x1, x2 = np.meshgrid(x1, x2)\n",
"X = np.dstack([x1, x2]).reshape(-1, 2)\n",
"x1_config = [d[\"x1\"] for d in smac_const.runhistory.get_configs()]\n",
"x2_config = [d[\"x2\"] for d in smac_const.runhistory.get_configs()]\n",
"X_config = runhistory_encoder._build_matrix(smac_const.runhistory)[0]\n",
"prob_config = smac_const._model.predict_probability(X_config).ravel()\n",
"\n",
"plt.contourf(x1, x2, z(x1, x2), levels=10, cmap=\"plasma_r\")\n",
"plt.contour(x1, x2, ellipse_constraint(x1, x2), levels=0, colors=\"red\")\n",
"plt.scatter(x1_config, x2_config, c=prob_config, cmap=\"bone_r\", clim=(0, 1))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "03d0b861",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "smac_test",
"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.0"
},
"vscode": {
"interpreter": {
"hash": "c145db57d1c86e83351151ef0520af6a7aa74865ecc6c1abcc903c17ea587f4b"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment