diff --git a/notebooks/HF-API-BayBE.ipynb b/notebooks/HF-API-BayBE.ipynb index 224273f..616e183 100644 --- a/notebooks/HF-API-BayBE.ipynb +++ b/notebooks/HF-API-BayBE.ipynb @@ -7,24 +7,23 @@ "Use the Advanced Optimization benchmark from AC hugging face (https://huggingface.co/spaces/AccelerationConsortium/crabnet-hyperparameter)\n", "- Optimize (minimize) y1\n", " - If y1 is greater than 0.2, the result is considered \"bad\" no matter how good the other values are\n", - "- Transfer learning: \n", - " - higher fidelity means more expensive computation \n", - " - treat fidelity1 = 0.5 as \"source' and fidelity1 = 1.0 as \"target\"\n", "- Multi-task: \n", " - since y1 and y2 are correlated \n", - " - treat y1 as task1, then y2 as task 2" + " - treat y2 as training task, then y1 as testing task (transfer y2 knowledge to predict y1)" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Loaded as API: https://accelerationconsortium-crabnet-hyperparameter.hf.space ✔\n" + "Using your existing Space: https://hf.space/lyuyizhi/crabnet-hyperparameter 🤗\n", + "\n", + "Loaded as API: https://lyuyizhi-crabnet-hyperparameter.hf.space ✔\n" ] } ], @@ -38,15 +37,15 @@ "import numpy as np\n", "import pandas as pd\n", "import torch\n", - "# load the Advanced Optimization from AC huggingface\n", - "from gradio_client import Client\n", - "client = Client(\"AccelerationConsortium/crabnet-hyperparameter\")\n", - "\n", "from baybe.utils.random import set_random_seed\n", - "#set_random_seed(17) \n", "\n", - "# seed = 104 for x19 < x20 constraint error\n", - "# seed = 188 for x6+x15 <= 1.0 constraint error" + "# we duplicate the Advanced Optimization from AC huggingface for private use, to avoid rate limit\n", + "# need to pass your HF token, get your HF token (write access) from https://huggingface.co/settings/tokens\n", + "\n", + "# load the Advanced Optimization from AC huggingface\n", + "from my_secret import get_my_hf_token\n", + "from gradio_client import Client\n", + "client = Client.duplicate(\"AccelerationConsortium/crabnet-hyperparameter\", hf_token=get_my_hf_token())" ] }, { @@ -558,20 +557,15 @@ } ], "source": [ - "# # save results to csv\n", - "# results.to_csv('yesterday_BayBE.csv', index=False)\n", + "# save results to csv\n", + "results.to_csv('yesterday_BayBE.csv', index=False)\n", + "\n", + "# if seperate to multiple runs, combine the results with the previous results\n", "yesterday = pd.read_csv('yesterday_BayBE.csv')\n", "full_result = pd.concat([yesterday, results])\n", "full_result" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 11, @@ -610,8 +604,8 @@ ], "source": [ "import matplotlib.pyplot as plt\n", - "ax_data = np.loadtxt('AdvOpt-BayBE.csv')\n", - "data = [ax_data] \n", + "baybe_data = np.loadtxt('AdvOpt-BayBE.csv')\n", + "data = [baybe_data] \n", "means = {}\n", "stds = {}\n", "for m, d in enumerate(data):\n", @@ -636,12 +630,66 @@ "ax.legend()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plot BayBE and Ax together" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "(0.18, 0.61)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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GThwIB6Ph7vvvpvIyEheffVVwsPDg+oaMWIEo0ePLnf+tm3b+PXXX4OGwb388st069aN8847D5vNxn//+19uvPFGfD4fN910U1C9Gzdu5JJLLuGaa67hqquu4o033mDMmDH07NmTbt26Af4hPKeddhpr1qzh6quv5qSTTiIjI4PPPvuMnTt3kpCQgM/n47zzzmPBggVcd911dOnShZUrV/LMM8+wfv16Pvnkk8A1x40bx9tvv83IkSM55ZRT+O677zj33HOr9Jr+97//BQgMuzpQbGws559/PjNnziw3rOzRRx/FMAzuuusu0tLSePbZZxk8eDDLly8nPDyce++9l9zcXHbu3MkzzzwDQFRU1EHb4/V6Ofvsszn99NP597//zaxZs7j55puJjIzk3nvvZdSoUVx00UVMnTqV0aNH069fP9q0aVNhXaeffjpvvfVW0L5t27Zx3333kZSUFNhXlff32Wef5ZZbbiEqKop7770XgCZNmlR6HzNmzGDs2LH07t2bxx9/nL179/Lcc8/x888/8/vvvxMXFxd0z0OGDKFv37489dRTfPvttzz99NO0a9eOG2644aCv18FU5fNy33338d///pdrrrmGlStXEh0dzVdffcW0adN4+OGHOeGEEyqtf8SIETz44IOkpqYGAg6ABQsWsHv3bi6//HIAvvnmG6644goGDRrEE088AcCaNWv4+eefufXWWw95HyUlJYE/OhQWFvLzzz8zc+ZMRo4cGRTgfPDBBxQVFXHDDTcQHx/PokWLeP7559m5c2dg+OAll1zCTTfdxKxZszjxxBPLvV4DBgygefPmQfvLru31etm8eTN33XUX8fHxDBs2rFxb8/Pzg/5AUiY+Ph7DMA55rzXh8/n4448/Kgwa+vTpw9dff01+fj7R0dEHree7777j/fff5+abbyYhIYHWrVuzd+9eTj755EDwlZiYyJdffsk111xDXl5eueG+h/o3oew6Z599Nj179gwE92V/4Pjpp5/o06cPAIsXL+aXX37h8ssvp0WLFmzdupWXX36ZAQMGsHr1aiIiIjj99NP5xz/+wX/+8x/uueceunTpAkCXLl1IS0vjrLPOIjExkbvvvpu4uDi2bt3KnDlzQvCqixwlTBE5Zi1ZssQEzG+++cY0TdP0+XxmixYtzFtvvTWo3G233WYC5m+//RbYl5aWZsbGxpqAuWXLFtM0TTM3N9d0Op3mHXfcEXT+v//9b9MwDHPbtm2BfUVFReXaM2TIELNt27ZB+1q1amUC5o8//hh07QOvM2nSJBMw58yZU65en89nmqZpvvXWW6bFYjF/+umnoONTp041AfPnn382TdM0ly9fbgLmjTfeGFRu5MiRJmA+8MAD5a6xvx49epixsbEHLTNlyhQTMD/77DPTNE3z+++/NwGzefPmZl5eXqDc+++/bwLmc889F9h37rnnmq1atSpX55YtW0zAnD59emDfVVddZQLmY489FtiXnZ1thoeHm4ZhmO+9915g/9q1a8vdX1m7vv/++wrvo7i42OzZs6fZrFkzc8+ePYH9VX1/u3XrZvbv379c2QOv63a7zaSkJPO4444zi4uLA+U+//xzEzAnTZpU7p4feuihoDpPPPFEs2fPnhXeR1VU9fNimqa5cuVK0+FwmOPGjTOzs7PN5s2bm7169TJLS0sPeo1169aZgPn8888H7b/xxhvNqKiowOt66623mjExMabH46n2fQAVbhdccIFZUlISVLai9/Hxxx8v93m+4oorzGbNmplerzewb9myZZX+Ph64NW/e3Fy6dGnQdcp+Byrb9v99q4n09PRKP89lxw78HTJN03zxxRdNwFy7du1B6wdMi8Virlq1Kmj/NddcYzZt2tTMyMgI2n/55ZebsbGxgde8qv8m+Hw+s0OHDuaQIUMC/9aZpv+9a9OmjXnmmWcG7TvQwoULTcB88803A/s++OCDCj/3H3/8sQmYixcvPui9ixzLNCxQ5Bg2a9YsmjRpEhiGZBgGI0aM4L333gsaPvW///2Pk08+OfDXT4DExERGjRoVVF9MTAxnn30277//PqZpBvbPnj2bk08+mZYtWwb27d/rlZubS0ZGBv3792fz5s3k5uYG1du1a1dOO+20oGt36tQpKGvXRx99xAknnMCFF15Y7j7L/rr9wQcf0KVLFzp37kxGRkZgO+OMMwD4/vvvA/cL/on0+zvwL8qVqcpftMuO5+XlBe0fPXp00LmXXHIJTZs2DbSppsaNGxd4HBcXR6dOnYiMjOSyyy4L7O/UqRNxcXHVyoZ24403snLlSj766KOgnpbqvL9VsWTJEtLS0rjxxhuD5qyce+65dO7cmS+++KLcOX//+9+Dnp922mmHlemtqp8X8A/vmzx5Mq+99hpDhgwhIyODmTNnHnLYW8eOHenRowezZ88O7PN6vXz44YcMHz488LrGxcVRWFjIN998U6N7Of/88/nmm2/45ptv+PTTT5k4cSJz585l5MiRQZ/d/d/HwsJCMjIyOOWUUzBNM2gY4OjRo9m9e3fgMwT+1ys8PJyLL7446NphYWGBa3/11Ve88sorREVFcc4557B+/fpybZ00aVKg/P5b48aNa3TvVVE27NHpdJY7Vvb7t//QyMr079+frl27Bp6bpslHH33E8OHDMU0z6N+hIUOGkJuby7Jly4LqONS/CcuXL2fDhg2MHDmSzMzMQH2FhYUMGjSIH3/8MTCEe//3s7S0lMzMTNq3b09cXFy561akrHf4888/p7S09JDlRY5FGhYocozyer289957DBw4kC1btgT29+3bl6effpp58+Zx1llnAf5hXxWlne7UqVO5fSNGjOCTTz5h4cKFnHLKKWzatImlS5eWSx3+888/88ADD7Bw4cJy6Z9zc3OJjY0NPN8/KCvTqFEjsrOzA883bdpU7kvcgTZs2MCaNWsqncSelpYG+O/XYrHQrl27Q95vRaKjoyscxrS//Pz8QNn9dejQIei5YRi0b9/+sFIih4WFlbvn2NhYWrRoUW5YVWxsbNDrejCvvPIK06dP55VXXuHkk08OOlad97cqtm3bBlT8HnTu3JkFCxYE7avong/8namO6nxeyvzzn//kvffeY9GiRTz22GNBX7IPZsSIEdxzzz3s2rWL5s2bM3/+fNLS0oKSn9x44428//77nH322TRv3pyzzjqLyy67jKFDh1bpGi1atGDw4MGB5+eddx7x8fFMmDCBzz//nOHDhwOwfft2Jk2axGeffVbutds/SD7zzDNp2rQps2bNYtCgQfh8Pt59913OP//8cr/jVqs16NoA55xzDh06dGDixIl89NFHQce6d+9ernxtKwtCDpyLCf4hlfuXOZgDh9emp6eTk5PDq6++yquvvlrhOWX/DpU51L8JGzZsAOCqq66qtB25ubk0atSI4uJiHn/8caZPn86uXbuCAumq/NGjf//+XHzxxUyePJlnnnmGAQMGcMEFFzBy5MgKA1GRY5GCK5Fj1HfffceePXt47733KlwvZtasWeW+LFbF8OHDiYiI4P333+eUU07h/fffx2KxBCZIgz8QGjRoEJ07d2bKlCmkpKTgcDj43//+xzPPPFMuUYbVaq3wWvt/MagKn89H9+7dmTJlSoXHU1JSqlVfZbp06cLy5cvZvn17hYEhwB9//AFQ5S/ch6Oy1+9wXtdFixZx6623Mm7cOK677rqgY9V9f2tDZfdWUzX5vGzevDnwxXflypVVvtaIESOYOHEiH3zwAbfddhvvv/8+sbGxQYFTUlISy5cv56uvvuLLL7/kyy+/ZPr06YwePZqZM2fW6B4HDRoEwI8//sjw4cPxer2ceeaZZGVlcdddd9G5c2ciIyPZtWsXY8aMCXofrVYrI0eOZNq0abz00kv8/PPP7N69u1xWwMq0aNGCTp068eOPP9ao7aHWuHFjnE4ne/bsKXesbN+BKeMrcmAAVvaaXXnllZUGQ8cff3y12lpW55NPPkmPHj0qLFM2L/OWW25h+vTp3HbbbfTr14/Y2FgMw+Dyyy+v0ufSMAw+/PBDfv31V/773//y1VdfcfXVV/P000/z66+/HnL+p8ixQMGVyDFq1qxZJCUlBbLG7W/OnDl8/PHHTJ06lfDwcFq1ahX4kri/devWldsXGRnJsGHD+OCDD5gyZQqzZ8/mtNNOC/oi8t///heXy8Vnn30WFHzsP6Soutq1a8eff/55yDIrVqxg0KBBB50I36pVK3w+H5s2bQrqKanofisybNgw3n33Xd58803uu+++csfz8vL49NNP6dy5c7k1kg58nU3TZOPGjUFfuGprEn9Vpaenc8kll9CjR48Kf3+q8/5W9V5atWoF+N+DsmGcZdatWxc4Xluq83kB/xfeMWPGEBMTw2233cZjjz3GJZdcwkUXXXTIa7Vp04Y+ffowe/Zsbr75ZubMmcMFF1xQrmfA4XAwfPhwhg8fjs/n48Ybb+SVV17h/vvvr9HaWx6PB/AnhwF/QLh+/XpmzpwZlJylsqGIo0eP5umnn+a///0vX375JYmJiQwZMqRa1y+7dl2zWCx0796dJUuWlDv222+/0bZt20MO/a1IWfZRr9db5d64Q/2bUNbDHhMTc8g6P/zwQ6666iqefvrpwL6SkhJycnKCyh3qc3nyySdz8skn8+ijj/LOO+8watQo3nvvvaDhxyLHKs25EjkGFRcXM2fOHIYNG8Yll1xSbrv55pvJz8/ns88+A/xDdn799VcWLVoUqCM9Pb3StO0jRoxg9+7dvPbaa6xYsaLcWk5lvQoHDkmZPn16je/p4osvZsWKFXz88cfljpVd57LLLmPXrl1MmzatXJni4mIKCwsB/1o2AP/5z3+Cyhw4tLEyl1xyCV27duVf//pXuS9nPp+PG264gezs7ArXR3rzzTcDQwbB/2Voz549gTaBP4CtybylUPB6vVx++eW43W4++uijChf5rc77GxkZWe6LXUV69epFUlISU6dODRqq9eWXX7JmzZoqZ3Ksiep+XgCmTJnCL7/8wquvvsrDDz/MKaecwg033HDI4aJlRowYwa+//sobb7xBRkZGuc9QZmZm0HOLxRL4sl3RULaqKMtyWZbNsKL30TTNStO9H3/88Rx//PG89tprfPTRR1x++eVVTq2+fv161q1bd9BMikfaJZdcwuLFi4M+w+vWreO7774L6omvDqvVysUXXxxYruFA6enp5fYd6t+Enj170q5dO5566qkKg9P967RareV6pp9//vlycwYjIyMByn02s7Ozy51f1ltW0987kaONeq5EjkGfffYZ+fn5nHfeeRUeP/nkk0lMTGTWrFmMGDGCO++8k7feeouhQ4dy6623BlKxt2rVKjC8bX/nnHMO0dHRTJgwIfBlYn9nnXVW4K/u119/PQUFBUybNo2kpKQKh+FUxT//+U8+/PBDLr30Uq6++mp69uxJVlYWn332GVOnTuWEE07gb3/7G++//z5///vf+f777zn11FPxer2sXbuW999/n6+++opevXrRo0cPrrjiCl566SVyc3M55ZRTmDdvHhs3bqxSWxwOBx9++CGDBg3i//7v/xg7diy9evUiJyeHd955h2XLlnHHHXcE0mrvr3HjxoFz9u7dy7PPPkv79u2DFlbt2bMns2fPZvz48fTu3ZuoqKjAHJnaNnXqVL777rvAa7i/Jk2acOaZZ1br/e3Zsycvv/wyjzzyCO3btycpKalczxSA3W7niSeeYOzYsfTv358rrrgikIq9devW3H777TW6nzFjxjBz5szAwrIVqe7nZc2aNdx///2MGTMm8L7MmDGDHj16BOZKHcpll13GhAkTmDBhAo0bNy7XIzFu3DiysrI444wzaNGiBdu2beP555+nR48egdTZB7N+/XrefvttAIqKivj111+ZOXMm7du3529/+xvgn8vWrl07JkyYwK5du4iJieGjjz466Ly10aNHM2HCBIBKhwR6PJ7AtX0+H1u3bmXq1Kn4fL4K/+Dw008/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0P4mTZqQmppa4TmbN2/mww8/xOv18r///Y/777+fp59+mkceeaTGdQJMnDiR3NzcwLZjx47DvDsRERERETnW1HlCi+rw+XwkJSXx6quvYrVa6dmzJ7t27eLJJ5/kgQceqHG9TqcTp9MZwpaKiIiIiMixps56rhISErBarezduzdo/969e0lOTq7wnKZNm9KxY0esVmtgX5cuXUhNTcXtdteoThERERGRhmrAgAHcdtttdd0M2afOgiuHw0HPnj2ZN29eYJ/P52PevHn069evwnNOPfVUNm7ciM/nC+xbv359IG1iTeoUEREREalNY8aMwTAMDMPA4XDQvn17HnroITweT103TUKszoIrgPHjxzNt2jRmzpzJmjVruOGGGygsLGTs2LEAjB49mokTJwbK33DDDWRlZXHrrbeyfv16vvjiCx577DFuuummKtcpIiIiInKkDR06lD179rBhwwbuuOMOHnzwQZ588sm6bpaEWJ0GVyNGjOCpp55i0qRJ9OjRg+XLlzN37txAQort27ezZ8+eQPmUlBS++uorFi9ezPHHH88//vEPbr311qAU64eqU0RERETkSHM6nSQnJ9OqVStuuOEGBg8ezGeffcaUKVPo3r07kZGRpKSkcOONN1JQUBB07s8//8yAAQOIiIigUaNGDBkyhOzs7Aqv88UXXxAbG8usWbMAeOutt+jVqxfR0dEkJyczcuRI0tLSgs757LPP6NChA2FhYQwcOJCZM2diGAY5OTmBMgsWLOC0004jPDyclJQU/vGPf1BYWBjaF+koUKfBFcDNN9/Mtm3bcLlc/Pbbb/Tt2zdwbP78+cyYMSOofL9+/fj1118pKSlh06ZN3HPPPUFzsA5Vp4iIiIhIXQsPD8ftdmOxWPjPf/7DqlWrmDlzJt999x133nlnoNzy5csZNGgQXbt2ZeHChSxYsIDhw4cHliLa3zvvvMMVV1zBrFmzGDVqFAClpaU8/PDDrFixgk8++YStW7cyZsyYwDlbtmzhkksu4YILLmDFihVcf/313HvvvUH1btq0iaFDh3LxxRfzxx9/MHv2bBYsWMDNN99cOy9OA1aniwjXV9VZKExEREREQq9sEeGKFnVtaMaMGUNOTg6ffPIJpmkyb948hg0bxi233FJuaOCHH37I3//+dzIyMgAYOXIk27dvZ8GCBRXWPWDAAHr06EGHDh249957+fTTT+nfv3+lbVmyZAm9e/cmPz+fqKgo7r77br744gtWrlwZKHPffffx6KOPkp2dTVxcHOPGjcNqtfLKK68EyixYsID+/ftTWFjY4N8fOPjvW3VigwaVil1EREREpCH6/PPPiYqKorS0FJ/Px8iRI3nwwQf59ttvefzxx1m7di15eXl4PB5KSkooKioiIiKC5cuXc+mllx607g8//JC0tDR+/vlnevfuHXRs6dKlPPjgg6xYsYLs7OxAYrjt27fTtWtX1q1bV+6cPn36BD1fsWIFf/zxR2CoIYBpmvh8PrZs2UKXLl0O56U5qtT5sEARERERkaPdwIEDWb58ORs2bKC4uJiZM2eSnp7OsGHDOP744/noo49YunQpL774IgButxvwDx88lBNPPJHExETeeOMN9h+UVlhYyJAhQ4iJiWHWrFksXryYjz/+OKj+qigoKOD6669n+fLlgW3FihVs2LCBdu3aVedlOOqp50pEREREpJZFRkbSvn37oH1Lly7F5/Px9NNPY7H4+zzef//9oDLHH3888+bNY/LkyZXW3a5dO55++mkGDBiA1WrlhRdeAGDt2rVkZmbyr3/9i5SUFMA/LHB/nTp14n//+1/QvsWLFwc9P+mkk1i9enW59kt56rkSEREREakD7du3p7S0lOeff57Nmzfz1ltvMXXq1KAyEydOZPHixdx444388ccfrF27lpdffjkwJ6tMx44d+f777/noo48Ciwq3bNkSh8MRqP+zzz7j4YcfDjrv+uuvZ+3atdx1112sX7+e999/P5BQzjAMAO666y5++eUXbr755kDv26effqqEFhVQcCUiIiIiUgdOOOEEpkyZwhNPPMFxxx3HrFmzePzxx4PKdOzYka+//poVK1bQp08f+vXrx6efforNVn4AWqdOnfjuu+949913ueOOO0hMTGTGjBl88MEHdO3alX/961889dRTQee0adOGDz/8kDlz5nD88cfz8ssvB7IFOp1OwN979sMPP7B+/XpOO+00TjzxRCZNmkSzZs1q6ZVpuJQtsALKFigiIiJSt46mbIENzaOPPsrUqVPZsWNHXTfliFG2QBEREREROWwvvfQSvXv3Jj4+np9//pknn3xSQ/5qSMGViIiIiMgxbMOGDTzyyCNkZWXRsmVL7rjjDiZOnFjXzWqQFFyJiIiIiBzDnnnmGZ555pm6bsZRQQktREREREREQkDBlYiIiIiISAgouBIREREREQkBBVciIiIiIiIhoOBKREREREQkBBRciYiIiIiIhICCKxERERERkRBQcCUiIiIiEmILFy7EarVy7rnn1nVT5AhScCUiIiIiEmKvv/46t9xyCz/++CO7d++u6+bIEWKr6waIiIiIiByKaZoUl3rr5NrhdiuGYVS5fEFBAbNnz2bJkiWkpqYyY8YM7rnnHgAeeughpk6dysqVK4mPjwfg3HPPpaioiHnz5mGxqO+jIVNwJSIiIiL1XnGpl66TvqqTa69+aAgRjqp/bX7//ffp3LkznTp14sorr+S2225j4sSJGIbBvffey9y5cxk3bhwff/wxL774Ir/88gsrVqxQYHUU0DsoIiIiIhJCr7/+OldeeSUAQ4cOJTc3lx9++AEAq9XK22+/zbx587j77rv55z//yYsvvkjLli3rsskSIuq5EhEREZF6L9xuZfVDQ+rs2lW1bt06Fi1axMcffwyAzWZjxIgRvP766wwYMACAtm3b8tRTT3H99dczYsQIRo4cWRvNljqg4EpERERE6j3DMKo1NK+uvP7663g8Hpo1axbYZ5omTqeTF154gdjYWAB+/PFHrFYrW7duxePxYLPV/3uTQ9OwQBERERGREPB4PLz55ps8/fTTLF++PLCtWLGCZs2a8e677wIwe/Zs5syZw/z589m+fTsPP/xwHbdcQkUhsoiIiIhICHz++edkZ2dzzTXXBHqoylx88cW8/vrrDBs2jBtuuIEnnniC//u//2P69OkMGzaMs88+m5NPPrmOWi6hop4rEREREZEQeP311xk8eHC5wAr8wdWSJUsYPXo0ffr04eabbwZgyJAh3HDDDVx55ZUUFBQc6SZLiBmmaZp13Yj6Ji8vj9jYWHJzc4mJianr5oiIiIgcc0pKStiyZQtt2rQhLCysrpsjR7mD/b5VJzZQz5WIiIiIiEgIKLgSEREREREJAQVXIiIiIiIiIaDgSkREREREJAQUXImIiIiIiISAgisREREREZEQUHAlIiIiIiISAgquREREREREQkDBlYiIiIiISAgouBIREREREQkBBVciIiIiIiE0ZswYDMMIbPHx8QwdOpQ//vgjZNfYunVr0DUcDgft27fnkUcewTTNQLkHH3wwqFzZ1rlz55C1Rf5iq+sGiIiIiIgcbYYOHcr06dMBSE1N5b777mPYsGFs3749pNf59ttv6datGy6XiwULFjBu3DiaNm3KNddcEyjTrVs3vv3226DzbDaFAbVBPVciIiIiUv+ZJrgL62bbryeoqpxOJ8nJySQnJ9OjRw/uvvtuduzYQXp6OgB33XUXHTt2JCIigrZt23L//fdTWloK+HulLBYLS5YsCarz2WefpVWrVvh8vsC++Ph4kpOTadWqFaNGjeLUU09l2bJlQefZbLZAW8q2hISEat+THJpCVhERERGp/0qL4LFmdXPte3aDI7LGpxcUFPD222/Tvn174uPjAYiOjmbGjBk0a9aMlStXcu211xIdHc2dd95J69atGTx4MNOnT6dXr16BeqZPn86YMWOwWCruH1myZAlLly5l9OjRNW6rHJ560XP14osv0rp1a8LCwujbty+LFi2qtOyMGTPKjRkNCwsLKnPgOFfDMBg6dGht34aIiIiICACff/45UVFRREVFER0dzWeffcbs2bMDgdF9993HKaecQuvWrRk+fDgTJkzg/fffD5w/btw43n33XVwuFwDLli1j5cqVjB07Nug6p5xyClFRUTgcDnr37s1ll11WLrhauXJloC1l29///vdafgWOTXXeczV79mzGjx/P1KlT6du3L88++yxDhgxh3bp1JCUlVXhOTEwM69atCzw3DKNcmf3HuYK/a1ZEREREGih7hL8Hqa6uXU0DBw7k5ZdfBiA7O5uXXnqJs88+m0WLFtGqVStmz57Nf/7zHzZt2kRBQQEej4eYmJjA+RdccAE33XQTH3/8MZdffjkzZsxg4MCBtG7dOug6s2fPpkuXLpSWlvLnn39yyy230KhRI/71r38FynTq1InPPvss6Lz9ryWhU+fB1ZQpU7j22msDUfjUqVP54osveOONN7j77rsrPMcwDJKTkw9ab9k4VxERERE5ChjGYQ3NO9IiIyNp37594Plrr71GbGws06ZN49xzz2XUqFFMnjyZIUOGEBsby3vvvcfTTz8dKO9wOBg9ejTTp0/noosu4p133uG5554rd52UlJTAdbp06cKmTZu4//77efDBBwOju8oyCUrtq9NhgW63m6VLlzJ48ODAPovFwuDBg1m4cGGl5xUUFNCqVStSUlI4//zzWbVqVbky8+fPJykpiU6dOnHDDTeQmZlZaX0ul4u8vLygTUREREQkVAzDwGKxUFxczC+//EKrVq2499576dWrFx06dGDbtm3lzhk3bhzffvstL730Eh6Ph4suuuiQ17FarXg8Htxud23chhxCnfZcZWRk4PV6adKkSdD+Jk2asHbt2grP6dSpE2+88QbHH388ubm5PPXUU5xyyimsWrWKFi1aAP4hgRdddBFt2rRh06ZN3HPPPZx99tksXLgQq9Vars7HH3+cyZMnh/4GRUREROSY5HK5SE1NBfzDAl944QUKCgoYPnw4eXl5bN++nffee4/evXvzxRdf8PHHH5ero0uXLpx88sncddddXH311YSHh5crk5mZSWpqKh6Ph5UrV/Lcc88xcODAoGF/Ho8n0JYyhmGU+w4uh6/OhwVWV79+/ejXr1/g+SmnnEKXLl145ZVXePjhhwG4/PLLA8e7d+/O8ccfT7t27Zg/fz6DBg0qV+fEiRMZP3584HleXh4pKSm1eBciIiIicjSbO3cuTZs2BfyZATt37swHH3zAgAEDALj99tu5+eabcblcnHvuuYGhfAe65ppr+OWXX7j66qsrvE7ZCDCr1UrTpk0555xzePTRR4PKrFq1KtCWMk6nk5KSksO8SzlQnQZXCQkJWK1W9u7dG7R/7969VZ4vZbfbOfHEE9m4cWOlZdq2bUtCQgIbN26sMLhyOp1KeCEiIiIiITFjxgxmzJhx0DL//ve/+fe//x2077bbbitXbteuXXTv3p3evXsH7W/dujVmFdbfevDBBysM2qR21OmcK4fDQc+ePZk3b15gn8/nY968eUG9Uwfj9XpZuXJluWh8fzt37iQzM/OgZURERERE6ouCggL+/PNPXnjhBW655Za6bo5UUZ2vczV+/HimTZvGzJkzWbNmDTfccAOFhYWB7IGjR49m4sSJgfIPPfQQX3/9NZs3b2bZsmVceeWVbNu2jXHjxgH+X8R//vOf/Prrr2zdupV58+Zx/vnn0759e4YMGVIn9ygiIiIiUh0333wzPXv2ZMCAAZUOCZT6p87nXI0YMYL09HQmTZpEamoqPXr0YO7cuYEJdtu3bw9ahTo7O5trr72W1NRUGjVqRM+ePfnll1/o2rUr4B9v+scffzBz5kxycnJo1qwZZ511Fg8//LCG/omIiIhIg1CVoYVS/xhmVQZrHmPy8vKIjY0lNzdXC6yJiIiI1IGSkhK2bNlCmzZtAus1idSWg/2+VSc2qPNhgSIiIiIiIkcDBVciIiIiIiIhoOBKREREREQkBBRciYiIiIiIhICCKxERERERkRBQcCUiIiIichQxDINPPvmkWufMnz8fwzDIycmplTZVZsaMGcTFxR1WHVu3bsUwDJYvX15pmSN1fwquRERERERCKDU1lVtvvZX27dsTFhZGkyZNOPXUU3n55ZcpKiqq6+YxYMAAbrvttrpuxlGpzhcRFhERERE5WmzevJlTTz2VuLg4HnvsMbp3747T6WTlypW8+uqrNG/enPPOO6+umxkSbrcbh8NR182oV9RzJSIiIiINR2Fh5VtJSdXLFhdXrWw13XjjjdhsNpYsWcJll11Gly5daNu2Leeffz5ffPEFw4cPD5Tdvn07559/PlFRUcTExHDZZZexd+/eoPpefvll2rVrh8PhoFOnTrz11ltBxzds2MDpp59OWFgYXbt25Ztvvjlo+8aMGcMPP/zAc889h2EYGIbB1q1bA8eXLl1Kr169iIiI4JRTTmHdunWBYw8++CA9evTgtddeC1psNycnh3HjxpGYmEhMTAxnnHEGK1asCJy3YsUKBg4cSHR0NDExMfTs2ZMlS5YEteurr76iS5cuREVFMXToUPbs2RM45vP5eOihh2jRogVOp5MePXowd+7cg97n//73Pzp27Eh4eDgDBw4MusfapOBKRERERBqOqKjKt4svDi6blFR52bPPDi7bunXF5aohMzOTr7/+mptuuonIyMgKyxiGAfgDhvPPP5+srCx++OEHvvnmGzZv3syIESMCZT/++GNuvfVW7rjjDv7880+uv/56xo4dy/fffx+o46KLLsLhcPDbb78xdepU7rrrroO28bnnnqNfv35ce+217Nmzhz179pCSkhI4fu+99/L000+zZMkSbDYbV199ddD5Gzdu5KOPPmLOnDmBOU6XXnopaWlpfPnllyxdupSTTjqJQYMGkZWVBcCoUaNo0aIFixcvZunSpdx9993Y7fZAnUVFRTz11FO89dZb/Pjjj2zfvp0JEyYEtfnpp5/mqaee4o8//mDIkCGcd955bNiwocJ73LFjBxdddBHDhw9n+fLljBs3jrvvvvugr0vImFJObm6uCZi5ubl13RTTNE3T5/PVdRNEREREjqji4mJz9erVZnFxcfABqHw755zgshERlZft3z+4bEJCxeWq4ddffzUBc86cOUH74+PjzcjISDMyMtK88847TdM0za+//tq0Wq3m9u3bA+VWrVplAuaiRYtM0zTNU045xbz22muD6rr00kvNc/bd51dffWXabDZz165dgeNffvmlCZgff/xxpe3s37+/eeuttwbt+/77703A/PbbbwP7vvjiCxMIvAcPPPCAabfbzbS0tECZn376yYyJiTFLSkqC6mvXrp35yiuvmKZpmtHR0eaMGTMqbMv06dNNwNy4cWNg34svvmg2adIk8LxZs2bmo48+GnRe7969zRtvvNE0TdPcsmWLCZi///67aZqmOXHiRLNr165B5e+66y4TMLOzsytsR6W/b2b1YgPNuWoACt1eopx6q0REREQoKKj8mNUa/DwtrfKylgMGcNXisLFFixbh8/kYNWoULpcLgDVr1pCSkhLUa9S1a1fi4uJYs2YNvXv3Zs2aNVx33XVBdZ166qk899xzQXU0a9YscLxfv36H1dbjjz8+8Lhp06YApKWl0bJlSwBatWpFYmJioMyKFSsoKCggPj4+qJ7i4mI2bdoEwPjx4xk3bhxvvfUWgwcP5tJLL6Vdu3aBshEREUHPmzZtStq+9y4vL4/du3dz6qmnBtV/6qmnBg093N+aNWvo27dv0L7DfV2qSt/YG4CCEo+CKxERERGASobbHdGylWjfvj2GYQTNUwJo27YtAOHh4Yd9jdq2/3C9/YcwljlwuGNBQQFNmzZl/vz55eoqS7H+4IMPMnLkSL744gu+/PJLHnjgAd577z0uvPDCctcsu65pmqG4nSNOc64agPyS0rpugoiIiIgcQnx8PGeeeSYvvPAChYdIhtGlSxd27NjBjh07AvtWr15NTk4OXbt2DZT5+eefg877+eefg47v2LEjKPnDr7/+esh2OhwOvF5vle/rYE466SRSU1Ox2Wy0b98+aEtISAiU69ixI7fffjtff/01F110EdOnT69S/TExMTRr1uygr8OBunTpwqJFi4L2VeV1CQUFVw1AgcvTYKN3ERERkWPJSy+9hMfjoVevXsyePZs1a9awbt063n77bdauXYt139DFwYMH0717d0aNGsWyZctYtGgRo0ePpn///vTq1QuAf/7zn8yYMYOXX36ZDRs2MGXKFObMmRNI9jB48GA6duzIVVddxYoVK/jpp5+49957D9nG1q1b89tvv7F161YyMjKCeqaqa/DgwfTr148LLriAr7/+mq1bt/LLL79w7733smTJEoqLi7n55puZP38+27Zt4+eff2bx4sV06dKlytf45z//yRNPPMHs2bNZt24dd999N8uXL+fWW2+tsPzf//53NmzYwD//+U/WrVvHO++8w4wZM2p8j9Wh4KoB8Jkmhe7Q/HVBRERERGpPu3bt+P333xk8eDATJ07khBNOoFevXjz//PNMmDCBhx9+GPAPffv0009p1KgRp59+OoMHD6Zt27bMnj07UNcFF1zAc889x1NPPUW3bt145ZVXmD59OgMGDADAYrHw8ccfU1xcTJ8+fRg3bhyPPvroIds4YcIErFYrXbt2JTExke3bt9f4fg3D4H//+x+nn346Y8eOpWPHjlx++eVs27aNJk2aYLVayczMZPTo0XTs2JHLLruMs88+m8mTJ1f5Gv/4xz8YP348d9xxB927d2fu3Ll89tlndOjQocLyLVu25KOPPuKTTz7hhBNOYOrUqTz22GM1vsfqMEx1iZSTl5dHbGwsubm5xMTE1HVzWLoti+ZxESTHhtV1U0RERESOiJKSErZs2RK0npJIbTnY71t1YgP1XDUQBS7NuxIRERERqc8UXDUQeSWeum6CiIiIiIgchIKrBqJAwZWIiIiISL2m4KqBcHt8lJQqqYWIiIiISH2l4KoBKXCp90pERESOLcq9JkdCqH7PFFw1IBoaKCIiIseKsvWg3G53HbdEjgVFRUUA2O32w6rHForGyJGRr+BKREREjhE2m42IiAjS09Ox2+1YLOoTkNAzTZOioiLS0tKIi4sLBPU1peCqAclXOnYRERE5RhiGQdOmTdmyZQvbtm2r6+bIUS4uLo7k5OTDrkfBVQNS7Pbi9ZlYLUZdN0VERESk1jkcDjp06KChgVKr7Hb7YfdYlVFw1YCYpn/eVWzE4Y0FFREREWkoLBYLYWFhdd0MkSrR4NUGRkMDRURERETqJwVXDYzSsYuIiIiI1E8KrhoYZQwUEREREamfFFw1MAUujxbTExERERGphxRcNTBer0lxqbeumyEiIiIiIgdQcNUAaWigiIiIiEj9o+CqAVJwJSIiIiJS/yi4aoDyS5SOXURERESkvlFw1QApHbuIiIiISP2j4KoBcpX6cHt8dd0MERERERHZj4KrBkpDA0VERERE6hcFVw2UhgaKiIiIiNQvCq4aKGUMFBERERGpXxRcNVAKrkRERERE6hcF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coo070pEREREpKaqHVxdeOGFjB07ljlz5rBz50527tzJRx99xDXXXMNFF11UG22Uitic0Okc/+PVn4LpA8rSsjsxTA9hxRWnZT+uWSxOm4XMQjfbMosC+90eH4Va70pEREREpEaqHVxNnTqVs88+m5EjR9KqVStatWrFyJEjGTp0KC+99FJttFEq0+EssEdA3k7YuSSwOzHaAUBk7gZisv7AWZQatLiww2ahe/NYAJYcMDQwq1BDA0VEREREaqLawVVERAQvvfQSmZmZ/P777/z+++9kZWXx0ksvERkZWRttFIu14v2OCOg4xP949Sewb4if0+ZPy25g4ijJIDpnNY33LiA6ayWO4jTwefdbUFhDA0VEREREQqHGiwjv2bOHPXv20KFDByIjI4O+oEuIxbWq/Fins8HqhKzNkPpHYHditDOomGH6cJakE5P9J/F7F3BK5G7sFoO0fBc7s4sD5ZTUQkRERESkZqodXGVmZjJo0CA6duzIOeecw549/nk911xzDXfccUfIGyhAVCJExFd8zBkD7c/wP171SWB3IC17BQzTS2xpGj3j/YHUH+vWYy/JBNPE7fFR5Na8KxERERGR6qp2cHX77bdjt9vZvn07ERF/raM0YsQI5s6dG9LGyX4SO1V+rPNw/9DB9DWQvjawuywte2X6NfEPAVy0y0VM5goa711AVM5acjIqToQhIiIiIiKVq3Zw9fXXX/PEE0/QokWLoP0dOnRg27ZtIWuYHCAsFqKbVnwsojG06e9/vF/vVXykA5vFqLTK3gkebIbJriIrOwotWHylhBXtpnTrb5C3O4SNFxERERE5+lU7uCosLAzqsSqTlZWF03nwnhI5TAkdwajkLetyHhgG7FkOWVsAsFgMkmIqf08ibHBivH8I4C9ptsD+ApfH3wNWyTpZIiIiIiJSXrWDq9NOO40333wz8NwwDHw+H//+978ZOHBgSBsnB3BEQFzLio9FJ0PLU/2PV38S2B0f6Txo79UpSfuCq732wL5Sr8naHRns2bKKUq/vsJstIiIiInIssB26SLB///vfDBo0iCVLluB2u7nzzjtZtWoVWVlZ/Pzzz7XRRtlf43aQuwt8FaRM73o+bFsAOxZB3i6IaY7VYpAQ7SQ1t6TC6nonlmIzwtheaGVXoYXmkf5gqsTjpXjrGtYXx5HQOJbmceHERThq885ERERE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VlxcbP7jP/6DYwd90tjYaKZOnWqef/55c/nll5tvfOMbxhjOPejd6tWrzYwZM7rdNlKPHXquhlAsFtPu3btVWVmZWmfbtiorK7V9+/YMtgwjzYEDB1RTU5N2LBUWFmru3LkcS+hWfX29JGnUqFGSpN27dysej6cdQ+eff74mTpzIMYQ0juPoySefVHNzs+bNm8exgz5ZtmyZrr766rTjROLcg5N78803VVZWprPPPluf//zndfDgQUkj99gJZroBp7Njx47JcRyVlJSkrS8pKdEbb7yRoVZhJKqpqZGkbo+l9m1AO9d1tXz5cl166aW66KKLJHnHUDgcVlFRUVotxxDavfrqq5o3b57a2tqUl5enp556ShdccIH27t3LsYNePfnkk9qzZ4927dp1wjbOPejN3Llz9eijj+q8885TdXW1vvvd7+rjH/+4XnvttRF77BCuAOA0s2zZMr322mtp160DJ3Peeedp7969qq+v169+9SstWbJE27Zty3SzMMwdOnRI3/jGN/T8888rKysr083BCLNw4cLU8vTp0zV37lxNmjRJv/jFL5SdnZ3Blg0clwUOoTFjxigQCJwwqkltba1KS0sz1CqMRO3HC8cSTuZrX/uannnmGW3ZskUTJkxIrS8tLVUsFlNdXV1aPccQ2oXDYU2ZMkWzZs3SmjVrNGPGDN17770cO+jV7t27deTIEX3kIx9RMBhUMBjUtm3bdN999ykYDKqkpITjB31WVFSkc889V2+99daIPfcQroZQOBzWrFmzVFVVlVrnuq6qqqo0b968DLYMI83kyZNVWlqadiw1NDRox44dHEuQ5A3V/7WvfU1PPfWU/vCHP2jy5Mlp22fNmqVQKJR2DO3fv18HDx7kGEK3XNdVNBrl2EGv5s+fr1dffVV79+5NTbNnz9bnP//51DLHD/qqqalJb7/9tsaNGzdizz1cFjjEVqxYoSVLlmj27Nm6+OKLtWHDBjU3N2vp0qWZbhqGmaamJr311lup1wcOHNDevXs1atQoTZw4UcuXL9fdd9+tqVOnavLkybrjjjtUVlam6667LnONxrCxbNkyPfHEE/rNb36j/Pz81PXohYWFys7OVmFhob70pS9pxYoVGjVqlAoKCnTLLbdo3rx5uuSSSzLcemTa7bffroULF2rixIlqbGzUE088oa1bt+rZZ5/l2EGv8vPzU/d2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "ax_data = np.loadtxt('AdvOpt-Ax.csv')\n", + "baybe_data = np.loadtxt('AdvOpt-BayBE.csv')\n", + "\n", + "data = [ax_data, baybe_data]\n", + "labels = ['Ax', 'BayBE']\n", + "\n", + "fig = plt.figure(figsize=(10, 6))\n", + "ax = fig.add_subplot(111)\n", + "\n", + "for i, data in enumerate(data):\n", + " cumulative_min = np.minimum.accumulate(data, axis=1)\n", + " mean = np.mean(cumulative_min, axis=0)\n", + " std = np.std(cumulative_min, axis=0) / np.sqrt(data.shape[0])\n", + "\n", + " plt.plot(range(1, len(mean) + 1), mean, label=labels[i]) \n", + " plt.fill_between(range(1, len(mean) + 1), mean - std, mean + std, alpha=0.3)\n", + "\n", + "ax.axhline(y = 0.2, c = 'r', ls = '--', label = \"Good threshold\")\n", + "plt.xlabel('# of Iterations')\n", + "plt.ylabel('Best Observed Value')\n", + "plt.title('Advanced Optimization, Ax vs BayBE, 10 repeats')\n", + "plt.legend(title=\"Package\")\n", + "plt.ylim(0.18, 0.61)" + ] }, { "cell_type": "code", @@ -729,43 +777,6 @@ "# get y1 only\n", "result['data'][0][0]" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Wrap the API into a function" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "adv_opt() got an unexpected keyword argument 'x1'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[9], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m paras \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc1_1\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc2_0\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mc3_2\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx1\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.6118901958577212\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx2\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.4111829149245071\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx3\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.9669932071676511\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx4\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.4011947349568585\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx5\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.5327450665659677\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx6\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.21291356632372327\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx7\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.13115749846280078\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx8\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.3032873297687223\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx9\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.37433820950967467\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx10\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.6643725999349213\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx11\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.9719434718766504\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx12\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.20871047682655874\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx13\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.4884984758589027\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx14\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.5908026063989489\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx15\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.1366531028890536\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx16\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.7450997611208788\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx17\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.7656059548378924\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx18\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.8665776018638673\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx19\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.2905417268369886\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mx20\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;241m0.8706679030815925\u001b[39m}\n\u001b[1;32m----> 2\u001b[0m adv_opt(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mparas)\n\u001b[0;32m 3\u001b[0m \u001b[38;5;66;03m# WRAPPED_FUNCTION(**paras)\u001b[39;00m\n", - "\u001b[1;31mTypeError\u001b[0m: adv_opt() got an unexpected keyword argument 'x1'" - ] - } - ], - "source": [ - "paras = {'c1': 'c1_1', 'c2': 'c2_0', 'c3': 'c3_2', 'x1': 0.6118901958577212, 'x2': 0.4111829149245071, 'x3': 0.9669932071676511, 'x4': 0.4011947349568585, 'x5': 0.5327450665659677, 'x6': 0.21291356632372327, 'x7': 0.13115749846280078, 'x8': 0.3032873297687223, 'x9': 0.37433820950967467, 'x10': 0.6643725999349213, 'x11': 0.9719434718766504, 'x12': 0.20871047682655874, 'x13': 0.4884984758589027, 'x14': 0.5908026063989489, 'x15': 0.1366531028890536, 'x16': 0.7450997611208788, 'x17': 0.7656059548378924, 'x18': 0.8665776018638673, 'x19': 0.2905417268369886, 'x20': 0.8706679030815925}\n", - "adv_opt(**paras)\n", - "# WRAPPED_FUNCTION(**paras)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": {