{ "cells": [ { "cell_type": "code", "execution_count": 55, "id": "b516ab92", "metadata": {}, "outputs": [], "source": [ "from negmas.preferences.ops import (\n", " pareto_frontier_numpy,\n", " pareto_frontier_numpy_faster,\n", " pareto_frontier_convex_hull,\n", " pareto_frontier_of,\n", " pareto_frontier_chatgpt,\n", " pareto_frontier_bf,\n", ")\n", "import numpy as np\n", "from collections import defaultdict\n", "from rich import print\n", "from time import perf_counter\n", "from negmas.helpers import humanize_time\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 56, "id": "8024e31a", "metadata": {}, "outputs": [], "source": [ "n_outcomes = [10, 100, 1000, 10_000, 100_000, 1000_000]\n", "n_negotiators = [2, 3]\n", "n_trials = [max(3, max(n_outcomes)) // _ for _ in n_outcomes]\n", "eps, presort = 1e-12, True\n", "BFLIMIT = 100_1001\n", "\n", "utillist = [\n", " [[np.random.rand(n, m) for _ in range(n_trials[i])] for m in n_negotiators]\n", " for i, n in enumerate(n_outcomes)\n", "]\n", "data = []\n", "\n", "\n", "def tryonce(alg, i, j, t, eps=eps, utillist=utillist):\n", " utils = utillist[i][j][t]\n", " start = perf_counter()\n", " pareto = alg(utils, sort_by_welfare=False, eps=eps)\n", " data.append(\n", " dict(\n", " method=alg.__name__.replace(\"pareto_frontier_\", \"\"),\n", " n_outcomes=n_outcomes[i],\n", " n_negotiators=n_negotiators[j],\n", " trial=t,\n", " time=perf_counter() - start,\n", " )\n", " )\n", " return list(pareto)" ] }, { "cell_type": "code", "execution_count": 57, "id": "b515cc75", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/yasser/code/projects/negmas/negmas/preferences/ops.py:295: NegmasSlowOperation: Pareto's Quadratic Operation is too Slow: n.ops=100,000,000 (n=10,000), limit=100,000,000\n", " warn_if_slow(\n", "/Users/yasser/code/projects/negmas/negmas/preferences/ops.py:295: NegmasSlowOperation: Pareto's Quadratic Operation is too Slow: n.ops=10,000,000,000 (n=100,000), limit=100,000,000\n", " warn_if_slow(\n", "/Users/yasser/code/projects/negmas/negmas/preferences/ops.py:295: NegmasSlowOperation: Pareto's Quadratic Operation is too Slow: n.ops=1,000,000,000,000 (n=1,000,000), limit=100,000,000\n", " warn_if_slow(\n" ] }, { "data": { "text/html": [ "
18m 8s893ms477u\n",
       "
\n" ], "text/plain": [ "18m 8s893ms477u\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = perf_counter()\n", "bf = [\n", " [\n", " [\n", " tryonce(pareto_frontier_bf, n, m, t) if n_outcomes[n] < BFLIMIT else []\n", " for t in range(n_trials[n])\n", " ]\n", " for m in range(len(n_negotiators))\n", " ]\n", " for n in range(len(n_outcomes))\n", "]\n", "print(humanize_time(perf_counter() - t, show_us=True))" ] }, { "cell_type": "code", "execution_count": 58, "id": "6d6ac798", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
 8s772ms336u\n",
       "
\n" ], "text/plain": [ " 8s772ms336u\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = perf_counter()\n", "numpy = [\n", " [\n", " [tryonce(pareto_frontier_numpy, n, m, t) for t in range(n_trials[n])]\n", " for m in range(len(n_negotiators))\n", " ]\n", " for n in range(len(n_outcomes))\n", "]\n", "print(humanize_time(perf_counter() - t, show_us=True))" ] }, { "cell_type": "code", "execution_count": 59, "id": "9b1c370f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
14u\n",
       "
\n" ], "text/plain": [ "14u\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = perf_counter()\n", "# numpy_faster = [[[tryonce(pareto_frontier_numpy_faster, n, m, t) for t in range(n_trials[n])] for m in range(len(n_negotiators))] for n in range(len(n_outcomes))]\n", "print(humanize_time(perf_counter() - t, show_us=True))" ] }, { "cell_type": "code", "execution_count": 60, "id": "af838732", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
19u\n",
       "
\n" ], "text/plain": [ "19u\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = perf_counter()\n", "# convex_hull = [[[tryonce(pareto_frontier_convex_hull, n, m, t) for t in range(n_trials[n])] for m in range(len(n_negotiators))] for n in range(len(n_outcomes))]\n", "print(humanize_time(perf_counter() - t, show_us=True))" ] }, { "cell_type": "code", "execution_count": 61, "id": "281f1c2a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
17u\n",
       "
\n" ], "text/plain": [ "17u\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "t = perf_counter()\n", "# chatgpt = [[[tryonce(pareto_frontier_chatgpt, n, m, t) for t in range(n_trials[n])] for m in range(len(n_negotiators))] for n in range(len(n_outcomes))]\n", "print(humanize_time(perf_counter() - t, show_us=True))" ] }, { "cell_type": "code", "execution_count": 62, "id": "0320dbad", "metadata": {}, "outputs": [], "source": [ "# print(chatgpt)" ] }, { "cell_type": "code", "execution_count": 63, "id": "da850c7d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
defaultdict(<class 'list'>, {})\n",
       "
\n" ], "text/plain": [ "\u001b[1;35mdefaultdict\u001b[0m\u001b[1m(\u001b[0m\u001b[1m<\u001b[0m\u001b[1;95mclass\u001b[0m\u001b[39m \u001b[0m\u001b[32m'list'\u001b[0m\u001b[1m>\u001b[0m, \u001b[1m{\u001b[0m\u001b[1m}\u001b[0m\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "algs = dict(\n", " numpy=numpy,\n", " brute_force=bf,\n", " # numpy_faster=numpy_faster,\n", " # convex_hull=convex_hull,\n", " # chatgpt=chatgpt\n", ")\n", "alg_differences = defaultdict(list)\n", "for alg_name, alg_results in algs.items():\n", " for i, n in enumerate(n_outcomes):\n", " if n >= BFLIMIT:\n", " continue\n", " for j, m in enumerate(n_negotiators):\n", " for t in range(n_trials[i]):\n", " a, b = tuple(sorted(bf[i][j][t])), tuple(sorted(alg_results[i][j][t]))\n", " if a[0] == b[0]:\n", " continue\n", " alg_differences[alg_name].extend((a, b))\n", "\n", "print(alg_differences)" ] }, { "cell_type": "code", "execution_count": 64, "id": "ebde3753", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAG1CAYAAAAV2Js8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB87ElEQVR4nO3deXxU5dn/8c9kkplksi9kIwlh3yHIEhEVUJRipS6t2toqosVW0WrjUmmr1j6t/p7WWqzG+lTrUqsWteJS64ogiCACBmTfAgQIWck2SWY9vz8OBCOEBEgySeb7fr146ZxzZubOgWSu3Pd1X5fFMAwDERERkSAUEugBiIiIiASKAiEREREJWgqEREREJGgpEBIREZGgpUBIREREgpYCIREREQlaCoREREQkaCkQEhERkaAVGugBdHV+v58DBw4QHR2NxWIJ9HBERESkDQzDoLa2lvT0dEJCWp73USDUgvz8fPLz83G73ezcuTPQwxEREZFTUFRUREZGRovnLWqxcWLV1dXExcVRVFRETExMoIcjIiIibVBTU0NmZiZVVVXExsa2eJ1mhFpxZDksJiZGgZCIiEg301pai5KlW5Cfn8+wYcMYP358oIciIiIiHURLY62oqakhNjaW6upqzQiJiIh0E239/NbSWAuOJEv7fL5Wr/X7/bjd7k4YlXxTWFgYVqs10MMQEZFuSjNCrWgtonS73RQWFuL3+wMwOgGIi4sjNTVV5Q1ERKSJZoQ6gWEYFBcXY7VayczMPGGdAml/hmFQX19PaWkpAGlpaQEekYiIdDcKhE6D1+ulvr6e9PR0HA5HoIcTlCIiIgAoLS0lOTlZy2QiInJSNIXRgrbsGjuSP2Sz2TprWHIcR4JQj8cT4JGIiEh3o0CoBXPnzmXTpk188cUXrV6r3JTA0v0XEZFTpUBIREREgpYCoRaooKKIiEjPp0CoBSezNNbdLVmyBIvFQlVVVbu/tsVi4Y033mj31xUREWkPCoSCzJQpU7j99tsDPQwREZEuQYGQiIiIBC0FQl3YlClTuPXWW7n99tuJj48nJSWFp556CqfTyezZs4mOjmbAgAG8++67Tc/ZsGEDM2bMICoqipSUFK655hrKy8sBuO666/jkk0949NFHsVgsWCwWdu/e3fTcNWvWMG7cOBwOB2eddRZbt25tNp6//vWv9O/fH5vNxuDBg3nhhReand++fTvnnnsu4eHhDBs2jA8//LDjbo6IiHR7DW4fu8rqqHd7AzYGBUIt6CrJ0s8//zxJSUmsWrWKW2+9lZtuuokrrriCs846i7Vr13LhhRdyzTXXUF9fT1VVFeeddx5jxoxh9erVvPfee5SUlHDllVcC8OijjzJx4kTmzJlDcXExxcXFZGZmNr3Xr371K/70pz+xevVqQkNDuf7665vOLVy4kNtuu4077riDDRs28JOf/ITZs2ezePFiwOy3dvnll2Oz2fj888958skn+cUvftG5N0tERLoFwzAorWlkXVEVu8qc1Ltb7+vZkYORE6iurjYAo7q6+phzDQ0NxqZNm4yGhoYOee/JkycbZ599dtNjr9drREZGGtdcc03TseLiYgMwVqxYYfzP//yPceGFFzZ7jaKiIgMwtm7d2vSat912W7NrFi9ebADGRx991HTsnXfeMYCmr+2ss84y5syZ0+x5V1xxhXHRRRcZhmEY77//vhEaGmrs37+/6fy7775rAMbChQtP/Sa0QUf/PYiISPtpcHuNLcU1xocbDxqLN5cY720oNspqG9v9fU70+f11mhHq4kaNGtX0/1arlcTEREaOHNl0LCUlBTBbTKxbt47FixcTFRXV9GfIkCEA7Ny586Te60jfriN9vDZv3sykSZOaXT9p0iQ2b97cdD4zM5P09PSm8xMnTjypr1VERHq28joX6/dVUVheR2xEGIlRdgJdEle9xrq4sLCwZo8tFkuzY0eqKvv9furq6pg5cyb/+7//e8zrtKUhaUuvKyIicjrcXj97K53sqazHYlhIi40gpIt0BVAg1IOcccYZ/Pvf/yY7O5vQ0OP/1dpstqYeaSdj6NChLF++nFmzZjUdW758OcOGDWs6X1RURHFxcVPQtXLlylP4KkREpCc55HSzs6yO8jo38Y4wHLauFXpoaawHmTt3LpWVlfzgBz/giy++YOfOnbz//vvMnj27KfjJzs7m888/Z/fu3ZSXl7d5xueuu+7iueee469//Svbt2/nkUce4fXXX+fOO+8EYNq0aQwaNIhZs2axbt06li1bxq9+9asO+1pFRKRr8/r87C6vY11RFVX1HlJjwrtcEAQKhFrUVXaNnYz09HSWL1+Oz+fjwgsvZOTIkdx+++3ExcUREmL+Vd95551YrVaGDRtGr1692Lt3b5te+9JLL+XRRx/l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J55gxYoVfPjhh3z44YftP1BDOhRgLFy4sNmxCRMmGHPnzm167PP5jPT0dOOhhx5qdt3ixYuN7373u50xzG7vVO9zY2Ojcc455xj/+Mc/Omuo3drp/Hs+4qabbjJeffXVjhxmt3cq9/mee+4xMjIyjD59+hiJiYlGTEyM8cADD3TmsLud9vj3fOeddxrPPvtsB46yZziVe/3ZZ58ZF154YdP5P/zhD8Yf/vCHdh+bZoQ6mdvtZs2aNUybNq3pWEhICNOmTWPFihUBHFnP0pb7bBgG1113Heeddx7XXHNNoIbarbXlPpeUlFBbWwtAdXU1S5cuZfDgwQEZb3fVlvv80EMPUVRUxO7du3n44YeZM2cO9913X6CG3C215T47nc6mf891dXV8/PHHDB8+PCDj7c7acq/Hjx9PaWkphw4dwu/3s3TpUoYOHdruY2n/rCM5ofLycnw+HykpKc2Op6SksGXLlqbH06ZNY926dTidTjIyMnj11VeZOHFiZw+322rLfV6+fDkLFixg1KhRTWvXL7zwAiNHjuzs4XZbbbnPe/bs4cYbb2xKkr711lt1j09SW39uyOlpy30uKSnhsssuA8wdkXPmzGH8+PGdPtburi33OjQ0lAcffJBzzz0XwzC48MILufjii9t9LAqEuqiPPvoo0EPo8c4++2z8fn+gh9HjTZgwgYKCgkAPI6hcd911gR5Cj9WvXz/WrVsX6GEEjRkzZnT4LkgtjXWypKQkrFbrMcmiJSUlpKamBmhUPY/uc+fQfe4cus+dQ/e583Sle61AqJPZbDbGjh3LokWLmo75/X4WLVqkpa92pPvcOXSfO4fuc+fQfe48Xelea2msA9TV1bFjx46mx4WFhRQUFJCQkEBWVhZ5eXnMmjWLcePGMWHCBObPn4/T6WT27NkBHHX3o/vcOXSfO4fuc+fQfe483eZet/s+NDEWL15sAMf8mTVrVtM1jz32mJGVlWXYbDZjwoQJxsqVKwM34G5K97lz6D53Dt3nzqH73Hm6y71WrzEREREJWsoREhERkaClQEhERESClgIhERERCVoKhERERCRoKRASERGRoKVASERERIKWAiEREREJWgqEREREJGgpEBIREZGgpUBIRHqsKVOmcPvttwd6GCLShSkQEhERkaClQEhEOsyUKVP42c9+xt13301CQgKpqan85je/adNz9+7dyyWXXEJUVBQxMTFceeWVlJSUNJ2/7rrruPTSS5s95/bbb2fKlClN5z/55BMeffRRLBYLFouF3bt3A7Bx40YuvvhiYmJiiI6O5pxzzmHnzp0A+P1+fvvb35KRkYHdbicnJ4f33nuv6T12796NxWLhlVde4ZxzziEiIoLx48ezbds2vvjiC8aNG0dUVBQzZsygrKys2fiefvpphg4dSnh4OEOGDOGJJ55oOud2u7nllltIS0sjPDycPn368NBDD7XxTovIqVIgJCId6vnnnycyMpLPP/+cP/zhD/z2t7/lww8/POFz/H4/l1xyCZWVlXzyySd8+OGH7Nq1i6uuuqrN7/voo48yceJE5syZQ3FxMcXFxWRmZrJ//37OPfdc7HY7H3/8MWvWrOH666/H6/U2Pe9Pf/oTDz/8MOvXr2f69Ol85zvfYfv27c1e//777+fXv/41a9euJTQ0lKuvvpq7776bRx99lGXLlrFjxw7uu+++putffPFF7rvvPn7/+9+zefNmHnzwQe69916ef/55AP7yl7/w1ltv8corr7B161ZefPFFsrOz2/z1isgp6vR+9yISNCZPnmycffbZzY6NHz/e+MUvfnHC533wwQeG1Wo19u7d23Rs48aNBmCsWrXKMAzDmDVrlnHJJZc0e95tt91mTJ48udn733bbbc2umTdvntG3b1/D7XYf973T09ON3//+98eM+eabbzYMwzAKCwsNwHj66aebzr/88ssGYCxatKjp2EMPPWQMHjy46XH//v2Nl156qdnr/s///I8xceJEwzAM49ZbbzXOO+88w+/3H3dcItIxNCMkIh1q1KhRzR6npaVRWlp6wuds3ryZzMxMMjMzm44NGzaMuLg4Nm/efFrjKSgo4JxzziEsLOyYczU1NRw4cIBJkyY1Oz5p0qRj3vfrX1dKSgoAI0eObHbsyNfpdDrZuXMnN9xwA1FRUU1/fve73zUtyV133XUUFBQwePBgfvazn/HBBx+c1tcpIm0TGugBiEjP9s2Aw2Kx4Pf7T/t1Q0JCMAyj2TGPx9Pq8yIiIk77vaH512WxWI577MjXWVdXB8BTTz1Fbm5us9exWq0AnHHGGRQWFvLuu+/y0UcfceWVVzJt2jRee+21dhmviByfZoREpMsZOnQoRUVFFBUVNR3btGkTVVVVDBs2DIBevXpRXFzc7HkFBQXNHttsNnw+X7Njo0aNYtmyZccNmmJiYkhPT2f58uXNji9fvrzpfU9FSkoK6enp7Nq1iwEDBjT707dv32bvf9VVV/HUU0+xYMEC/v3vf1NZWXnK7ysirdOMkIh0OdOmTWPkyJH88Ic/ZP78+Xi9Xm6++WYmT57MuHHjADjvvPP44x//yD/+8Q8mTpzIP//5TzZs2MCYMWOaXic7O5vPP/+c3bt3ExUVRUJCArfccguPPfYY3//+95k3bx6xsbGsXLmSCRMmMHjwYO666y7uv/9++vfvT05ODs8++ywFBQW8+OKLp/U1PfDAA/zsZz8jNjaWb33rW7hcLlavXs2hQ4fIy8vjkUceIS0tjTFjxhASEsKrr75KamoqcXFxp/W+InJimhESkS7HYrHw5ptvEh8fz7nnnsu0adPo168fCxYsaLpm+vTp3Hvvvdx9992MHz+e2tparr322mavc+edd2K1Whk2bBi9evVi7969JCYm8vHHH1NXV8fkyZMZO3YsTz31VNOy1s9+9jPy8vK44447GDlyJO+99x5vvfUWAwcOPK2v6cc//jFPP/00zz77LCNHjmTy5Mk899xzTTNC0dHR/OEPf2DcuHGMHz+e3bt389///peQEP2YFulIFuObi+wiIiIiQUK/aoiIiEjQUiAkIp3uxRdfbLaN/Ot/hg8fHujhiUgQ0dKYiHS62traZu0yvi4sLIw+ffp08ohEJFgpEBIREZGgpaUxERERCVoKhERERCRoKRASERGRoKVASERERIKWAiEREREJWgqEREREJGgpEBIREZGgpUBIREREgtb/B/RhvOi4EKdbAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data = pd.DataFrame(data)\n", "sns.lineplot(data=data, x=\"n_outcomes\", y=\"time\", hue=\"method\")\n", "plt.xscale(\"log\")\n", "plt.yscale(\"log\")" ] }, { "cell_type": "code", "execution_count": null, "id": "f04fada6", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "negmas", "language": "python", "name": "negmas" }, "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.1" } }, "nbformat": 4, "nbformat_minor": 5 }