Skip to content

Instantly share code, notes, and snippets.

@andim
Created August 5, 2022 11:00
Show Gist options
  • Save andim/474d4c8203f0b26c988eff878a822405 to your computer and use it in GitHub Desktop.
Save andim/474d4c8203f0b26c988eff878a822405 to your computer and use it in GitHub Desktop.
noisyopt-example.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "noisyopt-example.ipynb",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/andim/474d4c8203f0b26c988eff878a822405/noisyopt-example.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "dPtvgxH3AYS2",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8ea6d48b-3b82-4b0b-f4f1-965be30bac35"
},
"source": [
"!pip install noisyopt"
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
"Requirement already satisfied: noisyopt in /usr/local/lib/python3.7/dist-packages (0.2.2)\n",
"Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from noisyopt) (1.7.3)\n",
"Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from noisyopt) (1.21.6)\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0crSfo24AiNo"
},
"source": [
"import random\n",
"from collections import Counter\n",
"import numpy as np \n",
"import matplotlib.pyplot as plt\n",
"\n",
"def lottery(n=10000, num_town=15000, rake = 0.1):\n",
" \"\"\" Mean lottery objective. Stochastic due to random buying of tickets \"\"\"\n",
" townsfolk_tickets = [ random.choice(range(n)) for _ in range(num_town) ]\n",
" mary_tickets = list(range(n))\n",
" pool = (1-rake)*(num_town+n)\n",
" count = Counter(townsfolk_tickets+mary_tickets)\n",
" winner_count = [ count[x] for x in range(n) ] # \n",
" payout = [ pool/wc for wc in winner_count ]\n",
" return 10000-np.mean(payout)"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 227
},
"id": "fu6nc5qBAkDf",
"outputId": "ad1fef35-0a38-438a-b869-5496be01eb98"
},
"source": [
"# Objective is lottery in log space\n",
"# It will be constant on some intervals, but always noisy\n",
"def f(x):\n",
" return lottery(num_town=int(10**x),n=10000, rake=0.1)\n",
"\n",
"xs = np.linspace(3,5,20)\n",
"ys = [ f(x) for x in xs ]\n",
"\n",
"plt.rcParams[\"figure.figsize\"] = (4,3)\n",
"plt.plot(xs,ys)\n",
"plt.xlabel('Number of tickets')\n",
"plt.ylabel('Expected return')\n",
"plt.xscale('log')\n",
"plt.grid()"
],
"execution_count": 3,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 288x216 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7XIcfMaHAprS"
},
"source": [
"from noisyopt import minimizeSPSA\n",
"res = minimizeSPSA(f, x0=[4.0], bounds=[[2,5]], paired=False, niter=50, a=1e-3)"
],
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5hhM6gNJC0D-",
"outputId": "f6c7064b-555f-47fa-fc47-04abead1724e"
},
"source": [
"res"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fun: -1661.4599525000012\n",
" message: 'terminated after reaching max number of iterations'\n",
" nfev: 100\n",
" nit: 50\n",
" success: True\n",
" x: array([4.19675176])"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7wusamRrAslb"
},
"source": [
"# Check on hello world example\n",
"def obj(x):\n",
" return (x**2).sum() + 0.1*np.random.randn()\n",
"\n",
"res = minimizeSPSA(obj, x0=[1.0, 2.0], paired=False)"
],
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "cHnvzYHJDAOD",
"outputId": "8ddee1ca-9c3b-48d0-dfa4-93c363436424"
},
"source": [
"res"
],
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" fun: 0.03168175034449358\n",
" message: 'terminated after reaching max number of iterations'\n",
" nfev: 200\n",
" nit: 100\n",
" success: True\n",
" x: array([0.02485918, 0.02649273])"
]
},
"metadata": {},
"execution_count": 7
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment