{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Generate orthogonal arrays with high D-efficiency" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook contains example code from the article [Two-level designs to estimate all main effects and two-factor interactions](https://doi.org/10.1080/00401706.2016.1142903) by Eendebak, P. T. and Schoen, E. D.\n", "This example shows how to generate orthogonal arrays with a high $D$-efficiency in a reasonable amount of time (< 1 minute). For more results and details, see the paper.\n", "\n", "Generate a D-optimal orthogonal array of strength 2 with 32 runs and 7 factors." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "import oapackage\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "In this example we generate orthogonal arrays in the class: arrayclass: N 32, k 7, strength 2, s {2,2,2,2,2,2,2}, order 0\n" ] } ], "source": [ "run_size = 32\n", "number_of_factors = 7\n", "factor_levels = 2\n", "strength = 2\n", "nkeep = 24 # Number of designs to keep at each stage\n", "\n", "arrayclass = oapackage.arraydata_t(factor_levels, run_size, strength, number_of_factors)\n", "print(\"In this example we generate orthogonal arrays in the class: %s\" % arrayclass)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, generate orthogonal arrays with the function `extend_arraylist`. Next, keep the arrays with the best $D$-efficiency." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "extend 1 arrays with 2 columns with a single column\n", " generated 5 arrays, selected 5 arrays with D-efficiency 0.0000 to 1.0000\n", "extend 5 arrays with 3 columns with a single column\n", " generated 19 arrays, selected 19 arrays with D-efficiency 0.0000 to 1.0000\n", "extend 19 arrays with 4 columns with a single column\n", " generated 491 arrays, selected 24 arrays with D-efficiency 0.9183 to 1.0000\n", "extend 24 arrays with 5 columns with a single column\n", " generated 2475 arrays, selected 24 arrays with D-efficiency 0.9196 to 1.0000\n", "extend 24 arrays with 6 columns with a single column\n", " generated 94 arrays, selected 24 arrays with D-efficiency 0.7844 to 0.8360\n" ] } ], "source": [ "arraylist = [arrayclass.create_root()]\n", "\n", "# %% Extend arrays and filter based on D-efficiency\n", "options = oapackage.OAextend()\n", "options.setAlgorithmAuto(arrayclass)\n", "\n", "for extension_column in range(strength + 1, number_of_factors + 1):\n", " print(\"extend %d arrays with %d columns with a single column\" % (len(arraylist), arraylist[0].n_columns))\n", " arraylist_extensions = oapackage.extend_arraylist(arraylist, arrayclass, options)\n", "\n", " # Select the best arrays based on the D-efficiency\n", " dd = np.array([a.Defficiency() for a in arraylist_extensions])\n", " ind = np.argsort(dd)[::-1][0:nkeep]\n", " selection = [arraylist_extensions[ii] for ii in ind]\n", " dd = dd[ind]\n", " print(\n", " \" generated %d arrays, selected %d arrays with D-efficiency %.4f to %.4f\"\n", " % (len(arraylist_extensions), len(ind), dd.min(), dd.max())\n", " )\n", "\n", " arraylist = selection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Show the best array from the list of D-optimal orthogonal arrays." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Generated a design in OA(32, 2, 2^7) with D-efficiency 0.8360\n", "The array is (in transposed form):\n", "\n", "00000000000000001111111111111111\n", "00000000111111110000000011111111\n", "00000111000111110001111100000111\n", "00011001011001110110011100011001\n", "00101010101010111010101100101010\n", "01001011010110011101000101101001\n", "01110010001101010111001010100011\n" ] } ], "source": [ "selected_array = selection[0]\n", "print(\n", " \"Generated a design in OA(%d, %d, 2^%d) with D-efficiency %.4f\"\n", " % (selected_array.n_rows, arrayclass.strength, selected_array.n_columns, dd[0])\n", ")\n", "print(\"The array is (in transposed form):\\n\")\n", "selected_array.transposed().showarraycompact()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We calculate the $D$-, $D_s$- and $D_1$-efficiencies." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.8360354 0.72763273 1. ]\n", " [0.83481532 0.78995185 1. ]\n", " [0.82829522 0.70849985 1. ]\n", " [0.82829522 0.65037401 1. ]\n", " [0.82545286 0.75411444 1. ]\n", " [0.8185915 0.65157148 1. ]\n", " [0.81676643 0.68965719 1. ]\n", " [0.81559279 0.72218391 1. ]\n", " [0.81557799 0.66966068 1. ]\n", " [0.81302642 0.74299714 1. ]\n", " [0.80973102 0.73354611 1. ]\n", " [0.80286424 0.67455544 1. ]\n", " [0.79907785 0.72697978 1. ]\n", " [0.79762174 0.58515515 1. ]\n", " [0.79514152 0.65199837 1. ]\n", " [0.79348419 0.74167976 1. ]\n", " [0.7928208 0.70038649 1. ]\n", " [0.79225237 0.71961467 1. ]\n", " [0.79171981 0.62994172 1. ]\n", " [0.79160277 0.66978711 1. ]\n", " [0.7883109 0.62733236 1. ]\n", " [0.78683679 0.60799604 1. ]\n", " [0.78477264 0.69310129 1. ]\n", " [0.7843891 0.7533355 1. ]]\n" ] } ], "source": [ "efficiencies = np.array([array.Defficiencies() for array in arraylist])\n", "print(efficiencies)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Visualize the $D$-efficiencies using a scatter plot." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5wcVZ338c+XgSQIqJFEBEJC0IAiKuoAm8VdgwgCq+L6eElEBVdlcRdc8bIrqysIKujzeF15VFDEK4iobNbLAoLjBQNmIjcJBmMCJgQlQMJNJBd++8c5DZVOzXTN9FTPTM/3/Xr1q7vu51RX1a/q1KlTigjMzMyabTPaCTAzs7HJAcLMzEo5QJiZWSkHCDMzK+UAYWZmpRwgzMyslANEl5J0q6QXd2hZH5J0l6Q/DmPafSRdK+l+SW+XtL2k/5Z0r6RvSzpG0mV1pLuQhn+X9MU6l1GyzLdJ+pOkByTtXGH8tv9PST+SdGw786hLXg97DTK8Y9tzFZL2lBSSth3ttNTJAaJA0gsk/TIfnO6RdJWkA9qc53GSftHU73xJH2ovtSND0jxJq9uYfg/gXcC+EfGUYcziX4G+iNgpIj4DvArYBdg5Il4dEd+IiMOHm74qIuIjEfGWOpdRJGk74BPA4RGxY0Tc3YnlRsSREfGVTixrqPJ6WAHt7x854D9Q+Dwk6RFJ00YuxRODA0Qm6fHA94H/BJ4E7A58EHh4NNNVZoydtcwC7o6IO9uY/qam7lsiYlPbKRu7dgGmsGW+bYTkgL9j4wN8lHQSctdop23ciQh/0tPkvcD6FuO8FbgZuB9YCjwv938v8PtC/7/P/Z8B/AXYDDwArAeOBzYCG3K//87j7gZ8B1gLrATeXljuacDFwNeB+4C3FPp9Ky/318BzCtPcCrw4/54MfApYkz+fyv12AB4CHslpeQDYrSTfTwC+mtN2G/B+0snFi5umP3+A9fZS4Lqc/18Cz879r8zr5i95+gvyetmYu98MHAf8ojCvpwOXA/cAy4DXFIadD5wN/CCvk2uApxaGP7Mw7Z+Afy+s368XxvurnM71wPXAvMKw44AVef4rgWMGyPNA63xv4EEgch6vHGD6N+R1fTfwvqb/cxse2+buBi4CnpSHTcnbyd05/YuBXfKwPuAt+XcP8HHgrpyPE3Oati2MewZwVc7rZcC0VstoysObyNt37l4OXFToXgXsn38H8DQG3j9uBd4N3ADcS9rup1TYr5XX07GDjLMH8F3S9n038NnCen5//h/uJO0DT8jD9mxaX4/+P83bVGHcN+U8rwNOAA7I+VnfWGZhG/sF8P/yuCuBI4e6DY7IcbGuGY+3D/D4vHF8BTgSmNo0/NXA7flPVd6YZxWG7ZY3qNeSDgC7Fv/spnmdD3yo0L0NsAT4ADAJ2CtvAC8pbGwbgVfkcbcv9HsVsF3eeVYC2zVvsMDpwNXAk4HppIPfGXnYPGB1i3XzVeC/gJ3yxn4L8OYq0wPPyzvXQaSD0rE5bZPz8D7yQat5x2pef6SAtirvaNvmed8FPLOwXu8BDszDvwFcmIftBNxBKg6bkrsPal4m6crxbuCovK4Py93T8/LvA/bJ4+7aWHZJvgdb53tSOLiUTLsv6eD4t6Sg8glgU+H/fEee94w8/AvABXnYPwL/DTwur+/nA49vXtekA9TSPI+pwI/ZOkD8nhTQts/dZ7VaRlM+9iId/LbJ6+o24PbCsHXANrk7gKeV7R+F7flXpP3sSaQTtRMq7Nd/m9fljgMM7yGdBHwy/79TgBfkYf9ACmp7ATuSgsjXyv5DqgWIz+f5H046Kbokbx+7k/aRFxa2+Y2kE9Ie4G2kkwwxhG1wJD4uYsoi4j7gBaQ/8lxgraSFknbJo7wF+FhELI5keUTclqf9dkSsiYhHIuJbwO9IB6mqDgCmR8TpEbEhUlnsucD8wjiLIuKSvIyHcr8lEXFxRGwkHUSmkM5+mx0DnB4Rd0bEWlLR2RuqJExSDynonRIR90fEraQzz0rTkzbyL0TENRGxOVIZ+MMDpLOVlwK3RsSXI2JTRPyadNX1qsI4342IX0UqovoGsH9h2j9GxMcj4i85L9eULOP1wA8j4od5XV8O9JMCBqSrpf0kbR8Rd0TEQMVEw17nOT/fj4ifRcTDwH/k5Tb8I/C+iFidh58GvCoXPW4EdiYdbDdHxJK8bTd7DfDpPI91wFkl43w5Im7J29tFPLYuKy0jb8f35+leCFwK3C7p6bn75xHxSPN0g/hM3s/uIQWo/VtNQDohuTgiHhhg+IGkoPOeiHgwbxuNe4bHAJ+IiBV5+lOA+W0U8Z6R538Z6STygrx93A78HHhuYdzbIuLciNhMOmndlVQ0CdW3wbY5QBRExM0RcVxEzAD2I204n8qD9yCdUW1F0hslXSdpvaT1edqh3BCbBezWmD7P4995bIOAdObc7NF+eUdbndPcbDfS2VvDbQOMV2Ya6aqmefrdK04/C3hXU972GMLym+d1UNO8jgGKN8eLNan+TDrzg0H+v5JlvLppGS8gXRE+SAqWJwB3SPpBPtiVaWed78aW/+2DpKuYYhq/V0jfzaSiul2Ar5EOxBdKWiPpY/mm+KDLoHz7GmhdVl0GwE9JV5l/m3/3kYLDC3P3UAyUnlKStidd3Q92Y34P0sG47J5X2X+4LVvul0Pxp8Lvh0q6i/l5NK8R8ef8c8chboNtc4AYQET8lnSpu1/utQp4avN4kmaRzvZPJNW8eSLwG9LlIKQrkq1m39S9ClgZEU8sfHaKiKMGmQbSxt1Ixzak4oI1JeOtIR1UGmYWxmvVnO9dpDPG5ulvbzFdwyrgw015e1xEXFBx+uZ5/bRpXjtGxNsqTrvV/zfAeF9rWsYOEXEWQERcGhGHkc7ofkv678sMts5buYMt/9vHkc7Yi2k8simNUyLi9ojYGBEfjIh9gb8mXTm9cYBlzCh071EyTqkhLAMeCxB/k3//lNYBYqSamH4lqcixb5BxVgEzB7gqKPsPN7Hlgb3hQVKRW8NwavRVMoRtsG0OEJmkp0t6l6QZuXsPYAGprBfgi8C7JT1fydNycNiBtEGvzdO9iceCCqSNaYakSU39inW+fwXcJ+nf8nMAPZL2q1DF9vmSXpk37neQim6uLhnvAuD9kqbnqn4fIN1kbKRlZ0lPKFtAvsS9CPiwpJ1ynt9ZmL6Vc4ETJB2U19sOkv5O0k4Vpy/6PrC3pDdI2i5/DpD0jIrTPkXSOyRNznk5qGS8rwMvk/SS/D9MyVWBZ0jaRdLLJe1AWtcPkM7cywy2zlu5GHhprnY9iXQ/o7ivfp70f8wCyMs4Ov8+RNKzctHgfaTgXpbGi4B/kbS7pCcC/1YxbUNZBqQgcAiwfUSsJhWlHEEKeNcOME3z/jFcxwJfjYjBAs6vSMHyrLxtTpF0cB52AXCypNmSdgQ+AnxrgKuN60jFT9tJ6mXLYs8RM8RtsG0OEI+5n3Qj9RpJD5IOtL8h3dQkIr4NfBj4Zh73ElLNkaWkMvlFpA37WaSaHw1Xkqoz/lFSo5rdl4B9cxHBJfkg/DJSmepK0ln7F0m1hwbzX6TLzXWk8u1X5vsRzT5EKke/AbiRVOPpQzlfvyXtCCtyesqKQU4inSGtINWu+CZwXou0keffT7oP8dmczuWkm3BDFhH3k27wzSed3f2RVIVxcsVpDyOt5z+S7hMdUjLeKuBoUhHfWtIZ5ntI+8o2pO1hDenM9IXAPw2wyAHXeYW03gT8M2k930Fab8VnVT4NLAQuk3Q/aVttBLunkALMfaSip59SHpjOJdVMuoF0oP4h6ey4ysGm6jKIiFtIB7Gf5+77SNvRVXm7L7PF/lEhPVuRtDvwIlIFiwEV9r2nAX8grefX5sHnkYrTfkbaL/9C2hfK/AfpCnUd6X7TN4eT7gqGsg22TYMHVxurJJ1Gukn4+tFOi41/ko4EPh8Rs1qObBOGryDMJqBclHmUpG3z2fapwPdGO102ttQaICQdIWmZpOWS3lsyfKaknyi1xXODpKMKw07J0y2T9JI602k2AYlUFLKOVMR0M+k+idmjaitiyjewbiGV+64mPW25IJfZN8Y5B7g2Ij4naV9S/fM98+8LeKyO8o+BvQcpszQzsxFW5xXEgcDy/JDJBuBC0s2/oiA9wQzphmyjGuDRpCdgH46IlaQbm0N58MzMzNpUZ6Nvu7PlwzereaymRcNppJoYJ5Gqizaa892dLatrrqbFg1nTpk2LPffcs43kmplNPEuWLLkrIqaXDaszQKikX3N51gJSA28flzQX+Jqk/SpOi6TjSY17MXPmTPr7+9tMspnZxCLptoGG1VnEtJotn84se8r3zaQHdoiIRaS2hKZVnJaIOCcieiOid/r00gBoZmbDVGeAWAzMyU8hTiI93LSwaZw/AIcC5Kdhp5AeTlpIeipxsqTZwBzSE49mZtYhtRUxRcQmSSeSGvXqAc6LiJsknQ70R8RC0hOB50o6mVSEdFx+LP4mSReRmiPeBPyzazCZmXVW1zxJ3dvbG74HYWY2NJKWRERv2TA/SW1mZqUcIMzMrJQDhJnZGLdoEZx5ZvrupDqfgzAzszYtWgSHHgobNsCkSXDFFTB3bmeW7SsIM7MxrK8vBYfNm9N3X1/nlu0AYWY2hs2bl64cenrS97x5nVu2i5jMzMawuXNTsVJfXwoOnSpeAgcIM7Mxb+7czgaGBhcxmZlZKQcIMzMr5QBhZmalHCDMzKyUA4SZmZVygDAzs1IOEGZmVsoBwszMSjlAmJlZKQcIMzMr5QBhZmalHCDMzKyUA4SZmZVygDAzs1IOEGZmVsoBwszMSjlAmJlZKQcIMzMr5QBhZmalHCDMzKyUA4SZmZVygDAzs1IOEGZmVsoBwszMSjlAmJlZKQcIMzMr5QBhZmalHCDMzKyUA4SZmZVygDCzrrBoEZx5Zvq2kbHtaCdgLFi0CPr6YN48mDt3tFNjZkO1aBEceihs2ACTJsEVV3hfHgkTPkB4wzIb//r60j68eXP67uvzfjwSai1iknSEpGWSlkt6b8nwT0q6Ln9ukbS+MGxzYdjCutJYtmGZ2fgyb146wevpSd/z5o12irpDbVcQknqAs4HDgNXAYkkLI2JpY5yIOLkw/knAcwuzeCgi9q8rfQ2NDatxBeENy2z8mTs3Xf27qHhk1VnEdCCwPCJWAEi6EDgaWDrA+AuAU2tMTylvWGbdYe5c778jrc4AsTuwqtC9GjiobERJs4DZwJWF3lMk9QObgLMi4pKS6Y4HjgeYOXPmsBPqDcvMbGt13oNQSb8YYNz5wMURsbnQb2ZE9AKvAz4l6albzSzinIjojYje6dOnt59iMzN7VJ0BYjWwR6F7BrBmgHHnAxcUe0TEmvy9Auhjy/sTZmZWszoDxGJgjqTZkiaRgsBWtZEk7QNMBRYV+k2VNDn/ngYczMD3LszMrAa13YOIiE2STgQuBXqA8yLiJkmnA/0R0QgWC4ALI6JY/PQM4AuSHiEFsbOKtZ/MzKx+2vK4PH719vZGf3//aCfDbMT5SX+rk6Ql+X7vVib8k9TdygeV7uAn/W00OUB0IR9UuoebkLDR5NZcu5CbD+kebkLCRpOvILqQmw/pHn7S30aTA0QX8kGlu/hJfxstDhBdygcVM2uX70GYmVkpBwgzMyvlAGFWA78f2bqB70GYjTA/h2LdwlcQZiPMz6FYt3CAMBthfrjNuoWLmMxGmJ9DsW7hAGFWAz+HYp1SZ8OcDhBWG7coa1avuitEOEBYLVyTx6x+dbf265vUVgvX5DGrX90VInwFYbVwi7Jm9au7QoQDhNXCNXnMOqPOChEOEFYb1+QZG1xZwIbLAcKsi7mygLXDN6nHMTcIZ624soC1w1cQ45TPDK0KVxawdjhAjFN113+27uDKAtaOSgFC0neA84AfRcQj9SbJqvCZoVXlygI2XFXvQXwOeB3wO0lnSXp6jWmyChpnhmec4eIlM6tHpSuIiPgx8GNJTwAWAJdLWgWcC3w9IjbWmEYbgM8MzaxOlWsxSdoZOA54C3At8GngecDltaTMzMxGVdV7EN8Fng58DXhZRNyRB31LUn9diTMzs9FTtRbTZyPiyrIBEdE7gukxM7MxomoR0zMkPbHRIWmqpH+qKU1mZjYGVA0Qb42I9Y2OiFgHvLWeJJmZ2VhQNUBsI0mNDkk9wKR6kmRm1nluumZrVe9BXApcJOnzQAAnAP9TW6rMzDrITdeUq3oF8W/AlcDbgH8GrgD+ta5EmZl1khs1LFf1QblHSE9Tf67e5JiZdZ6brilX9TmIg4HTgFl5GgEREXvVlzQzs85wo4blqt6D+BJwMrAE2FxfcszMRoebrtla1QBxb0T8qNaUmJnZmFL1JvVPJP1fSXMlPa/xaTWRpCMkLZO0XNJ7S4Z/UtJ1+XOLpPWFYcdK+l3+HDuEPJmZ2QioegVxUP4uNqsRwIsGmiA/K3E2cBiwGlgsaWFELH10BhEnF8Y/CXhu/v0k4NS8vACW5GnXVUzvhOMX05vZSKtai+mQYcz7QGB5RKwAkHQhcDSwdIDxF5CCAsBLgMsj4p487eXAEcAFw0hH13MdbjOrQ6UiJkm7SPqSpB/l7n0lvbnFZLsDqwrdq3O/svnPAmaTnrWoPK2k4yX1S+pfu3Ztlax0JdfhNrM6VL0HcT7paerdcvctwDtaTKOSfjHAuPOBiyOiUUOq0rQRcU5E9EZE7/Tp01skp3s16nD39LgOt5mNnKoBYlpEXAQ8AhARm2hd3XU1sEehewawZoBx57Nl8dFQpp3w/PpRM6tD1ZvUD+Y3ygWApL8C7m0xzWJgjqTZwO2kIPC65pEk7QNMBYpNZF0KfETS1Nx9OHBKxbROSK7DbWYjrWqAeCewEHiqpKuA6cCrBpsgIjZJOpF0sO8BzouImySdDvRHxMI86gLgwoiIwrT3SDqDFGQATm/csDYzs85Q4bg8+IjStsA+pPsDyyJiY50JG6re3t7o72/v7aeuKmpmE42kJQO9GXTQKwhJL4qIKyW9smnQ3pKIiO+OWCpHmauKmpltqVUR0wtJVU9fVjIsgK4JEGVVRR0gzGwiGzRARMSp+ftNnUnO6HFzvzbRuEjVWqna3PdHgI813kudaxe9KyLeX2fiOsnN/dpE4iJVq6LqcxBHNoIDQG4T6ah6kjR65s6FU07xjmLdz0/fWxVVA0SPpMmNDknbA5MHGd/MxjA/fW9VVH0O4uvAFZK+TLo5/Q/AV2pLlZnVykWqVkXV1lw/JulG4FDScxBnRMSltabMzGrlp++tlapXEOQ3yvmtcmZmE0SrB+V+EREvkHQ/W7amKiAi4vG1ps7MzEZNqyuINwJExE4dSIuZmY0hrWoxfRtA0hUdSIuZmY0hra4gtpF0KqntpXc2D4yIT9STLDMzG22triDmA38hBZKdSj5mZtalWl1BHBERH5U0OSJO70iKzMxsTGh1BdFopO8VdSfEzMzGllZXEDdLuhWYLumGQv9GNddn15YyMzMbVa2a+14g6Smk14a+vDNJMmvNTVWb1a/lk9QR8UfgObmBvpkRsaz+ZJkNzE1Vm3VGpdZcJb0MuA74n9y9v6SFdSbMbCBuqtqsM6o2930acCCwHiAirgP2rCdJZoNzU9VmnVG1sb5NEXGvpFoTY4NzuXvipqqr8zZj7agaIH4j6XWkFwfNAd4O/LK+ZFkzl7tvyU1Vt+ZtxtpVtYjpJOCZwMPAN4F7gXfUlSjbmsvdbai8zVi7qr4w6M/A+4D3Sdo1Iu6oN1nWrFHu3jgbdLm7teJtxtpV+YVBBT8AnjfSCbHBudzdhsrbjLVrOAHCd6pHicvdbai8zVg7qt6DKDp3xFNhZmZjTtUH5Z4qaXLuXCrp7ZKeWGO6zMxslFW9gvgOsFnS04AvAbNJtZnMzKxLVQ0Qj0TEJuDvgU9FxMnArvUly8zMRlvVALFR0gLgWOD7ud929STJzMzGgqoB4k3AXODDEbFS0mzg6/Uly8zMRlvVB+WWSjqj0L0SOKu2VJmZ2agb9ApCyWmS7gJ+C9wiaa2kD3QmeWZmNlpaFTG9AzgYOCAido6IqcBBwMGSTq49dWZmNmpaBYg3AgtykRIAEbECeH0eZmZmXapVgNguIu5q7hkRa3EtJjOzrtYqQGwY5jAbJxYtgjPPTN9mZkWtajE9R9J9Jf0FTGk1c0lHAJ8GeoAvRsRWNZ8kvYb0StMAro+I1+X+m4Eb82h/iIiXt1qeDY1fKGNV+c10E9OgASIieoY7Y0k9wNnAYcBqYLGkhRGxtDDOHOAU4OCIWCfpyYVZPBQR+w93+dZa2QtlvPNbs4lyIuEguLXhNPdd1YHA8nxTG0kXAkcDSwvjvBU4OyLWAUTEnTWmx5r4hTJWxUQ4kZgoQXCohtPcd1W7A6sK3atzv6K9gb0lXSXp6lwk1TBFUn/u/4qyBUg6Po/Tv3bt2pFN/QTQeKHMGWd4h7CBNU4kenq690TCr2ctV+cVRNmLhaJk+XOAecAM4OeS9ouI9cDMiFgjaS/gSkk3RsTvt5hZxDnAOQC9vb3N87YK/EIZa2UivJnOV9Pl6gwQq4E9Ct0zgDUl41wdERuBlZKWkQLG4ohYA+m5C0l9wHOB32NmHdftJxITIQgOR50BYjEwJzfsdzswH3hd0ziXAAuA8yVNIxU5rZA0FfhzRDyc+x8MfKzGtJrZBNftQXA4agsQEbFJ0onApaRqrudFxE2STgf6I2JhHna4pKXAZuA9EXG3pL8GviDpEdJ9krOKtZ/MzKx+iuiOovve3t7o7+8f7WSYmY0rkpZERG/ZsDprMZmZ2TjmAGFmZqUcIMzMrJQDhJmZlXKAMDOzUg4QZmZWygHCzMxKOUCYmVkpBwgzMyvlAGFmZqUcIMzMrJQDhJmZlXKAGGcWLYIzz0zfZmZ1qvN9EDbC/N5cM+skX0HUbCTP+P3eXDPrJF9B1Gikz/j93lwz6yQHiBqVnfG3EyD83lwz6yQHiBrVccbv9+aaWac4QNTIZ/xmNp45QNTMZ/xmNl65FpOZmZVygDAzs1IOEGZmVsoBwszMSjlAmJlZKQcIMzMr5QBhZmalHCDMzKyUA4SZmZVygDAzs1IOEGZmVsoBwszMSjlAmJlZKQeINozk60TNzMYaN/c9TCP9OlEzs7HGVxDDVPY6UTOzbuIAMUyN14n29Izc60TNzMYSFzENk18nambdzgGiDX6dqJl1s1qLmCQdIWmZpOWS3jvAOK+RtFTSTZK+Weh/rKTf5c+xdabTzMy2VtsVhKQe4GzgMGA1sFjSwohYWhhnDnAKcHBErJP05Nz/ScCpQC8QwJI87bq60mtmZluq8wriQGB5RKyIiA3AhcDRTeO8FTi7ceCPiDtz/5cAl0fEPXnY5cARNabVzMya1BkgdgdWFbpX535FewN7S7pK0tWSjhjCtGZmVqM6b1KrpF+ULH8OMA+YAfxc0n4Vp0XS8cDxADNnzmwnrWZm1qTOK4jVwB6F7hnAmpJx/isiNkbESmAZKWBUmZaIOCcieiOid/r06SOaeDOzia7OALEYmCNptqRJwHxgYdM4lwCHAEiaRipyWgFcChwuaaqkqcDhuZ+ZmXVIbUVMEbFJ0omkA3sPcF5E3CTpdKA/IhbyWCBYCmwG3hMRdwNIOoMUZABOj4h76kqrmZltTRFbFe2PS729vdHf3z/ayTAzG1ckLYmI3rJhbovJzMxKOUCYmVkpBwgzMyvlAGFmZqUcIMzMrJQDhJmZlXKAMDOzUg4QNmyLFsGZZ6ZvM+s+fqOcDcuiRXDoobBhQ3on9xVX+O16Zt3GVxA2LH19KThs3py++/pGO0VmNtIcIGxY5s1LVw49Pel73rzRTpGZjTQXMdmwzJ2bipX6+lJwcPGSWfdxgLBhmzvXgcGsm7mIyczMSjlAmJlZKQcIMzMr5QBhZmalHCDMzKyUA4SZmZXqmndSS1oL3Dba6WjTNOCu0U5Ehziv3Wmi5LWb8jkrIqaXDeiaANENJPUP9PLwbuO8dqeJkteJkk8XMZmZWSkHCDMzK+UAMbacM9oJ6CDntTtNlLxOiHz6HoSZmZXyFYSZmZVygDAzs1IOEB0g6QhJyyQtl/TekuGflHRd/twiaX1h2Ecl/SZ/XtvZlA9dhbzOlPQTSddKukHSUYVhp+Tplkl6SWdTPnTDzauknXP/ByR9tvMpH7o28nqYpCWSbszfL+p86oemjbweWNiPr5f0951P/QiLCH9q/AA9wO+BvYBJwPXAvoOMfxJwXv79d8DlpPd27AD0A48f7Ty1k1fSzb235d/7ArcWfl8PTAZm5/n0jHaeasrrDsALgBOAz452XmrO63OB3fLv/YDbRzs/Neb1ccC2+feuwJ2N7vH68RVE/Q4ElkfEiojYAFwIHD3I+AuAC/LvfYGfRsSmiHiQtLEeUWtq21MlrwE8Pv9+ArAm/z4auDAiHo6IlcDyPL+xath5jYgHI+IXwF86ldg2tZPXayOi8R/fBEyRNLkDaR6udvL654jYlPtPyeONaw4Q9dsdWFXoXp37bUXSLNLZ85W51/XAkZIeJ2kacAiwR41pbVeVvJ4GvF7SauCHpCumqtOOJe3kdbwZqbz+H+DaiHi4jkSOkLbyKukgSTcBNwInFALGuOQAUT+V9BvozGI+cHFEbAaIiMtIG+AvSVcVi4CxvMFVyesC4PyImAEcBXxN0jYVpx1L2snreNN2XiU9E/go8I+1pXJktJXXiLgmIp4JHACcImlKramt2XjcWMeb1Wx51j+Dx4pVms3nseIlACLiwxGxf0QcRtp4f1dLKkdGlby+GbgIICIWkS7Fp1WcdixpJ6/jTVt5lTQD+B7wxoj4fe2pbc+I/K8RcTPwIOm+y7jlAFG/xcAcSbMlTSIFgYXNI0naB5hKukpo9OuRtHP+/Wzg2cBlHUn18FTJ6x+AQwEkPYO0c63N482XNFnSbGAO8KuOpXzo2snreDPsvEp6IvAD4JSIuKqDaR6udvI6W9K2uf8sYB/g1k4lvBajfZd8InxIl6G3kGpHvC/3Ox14eWGc04CzmqabAizNn6uB/Uc7L+3mlXTj/SrS/ZXrgMML074vT7cMOHK088um1QsAAAMVSURBVFJzXm8F7gEeIJ21DlizbSx8hptX4P2kM+nrCp8nj3Z+asrrG0g34q8Dfg28YrTz0u7HTW2YmVkpFzGZmVkpBwgzMyvlAGFmZqUcIMzMrJQDhJmZlXKAsAlH0ubc4uZNudXNdw71CWdJ0yVdk1v0/BtJr5Z0c27ls1fSZ1pM/8P8jIDZmOVqrjbhSHogInbMv58MfBO4KiJOHcI85pOe1Tg2d/8P8NGI+EkdaTYbDQ4QNuEUA0Tu3ov0BO20aNohJD0VOBuYDvwZeCvpAcaFwPbA7aRmJN6Tfy8kPTn87oh4qaQdgf8Eeklt+nwwIr4j6VagNyLukvR64O2k5qWvAf4pIjZLegD4NPBS4CHg6Ij4k6RdgM+TmqQGeBtwJHBXRHw6p/vDwJ8iYtArGbPBuIjJJryIWEHaF55cMvgc4KSIeD7wbuD/R8R1wAeAb0VqJ+uDpHd1HBMR72ma/j+AeyPiWRHxbB5rqRd4tKmG1wIHR8T+wGbgmDx4B+DqiHgO8DNScAL4DKkZ+OcAzyM9vfsloHE1sw2piYhvDGuFmGXbjnYCzMaIrVrxzGf/fw18W3p08FDfZfBi0sEagIhY1zT8UOD5wOK8jO1JL5oB2AB8P/9eAhyWf78IeGOe32bgXuBeSXdLei6wC6lZ7buHmFazLThA2ISXi5g2A3dK+jLpLWhrSAf29fnMftizZ/BmywV8JSJOKRm2sVDktZnW++sXgeOApwDnDTGdZltxEZNNaJKmk8rzPxvJm3Kx0VERcR+wUtKr87iS9JwhLuIy4MTC8qY2Db8CeFW+WY6kJ+WWQAdzBem+Q6PF38bbzb5HeuPgAcClQ0yn2VYcIGwi2r5RzRX4Mekg/sEBxj0GeLOk60ll/YO9LrbMh4Cpkn6T53FIcWBELCW1eHqZpBtI7yDftcU8/wU4RNKNpKKnZ+Z5bQB+AlyUi57M2uJaTGZdIt+c/jXw6ogYyy+WsnHCVxBmXUDSvsBy4AoHBxspvoIwM7NSvoIwM7NSDhBmZlbKAcLMzEo5QJiZWSkHCDMzK/W/ZMIRMDEq6qoAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(efficiencies[:, 0], efficiencies[:, 1], \".b\")\n", "plt.title(\"Scatterplot of effiencies of designs with %d columns\" % arraylist[0].n_columns)\n", "plt.xlabel(\"D-efficiency\")\n", "_ = plt.ylabel(\"Ds-efficiency\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.8" } }, "nbformat": 4, "nbformat_minor": 4 }