{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## How Solutions are Represented\n", "A solution to the JSSP can be defined as a sequence of operations for each machine. The `Schedule` class maintains a list of `ScheduledOperations` for each machine, which stores the operation, the time it starts to be processed and the machine in which it is going to be processed.\n", "\n", "The `Schedule` class is initialized with a `JobShopInstance`, which describes the JSSP you're working with. You can optionally pass a predefined schedule, a list of lists where each sublist represents the operations scheduled on a particular machine. In order to create a posible solution for this instance we can do it manually as follows:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, the operations from the previous example are organized by their respective machines." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from job_shop_lib import JobShopInstance, Operation\n", "\n", "CPU = 0\n", "GPU = 1\n", "DATA_CENTER = 2\n", "\n", "job_1 = [Operation(CPU, 1), Operation(GPU, 1), Operation(DATA_CENTER, 7)]\n", "job_2 = [Operation(GPU, 5), Operation(DATA_CENTER, 1), Operation(CPU, 1)]\n", "job_3 = [Operation(DATA_CENTER, 1), Operation(CPU, 3), Operation(GPU, 2)]\n", "\n", "jobs = [job_1, job_2, job_3]\n", "\n", "instance = JobShopInstance(\n", " jobs,\n", " name=\"Example\",\n", " # Any extra parameters are stored inside the\n", " # metadata attribute as a dictionary:\n", " lower_bound=7,\n", ")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from job_shop_lib import ScheduledOperation, Schedule\n", "\n", "cpu_operations = []\n", "gpu_operations = []\n", "data_center_operations = []\n", "\n", "# Split the operations into three lists, one for each machine\n", "for job in instance.jobs:\n", " for operation in job:\n", " if operation.machine_id == CPU:\n", " cpu_operations.append(operation)\n", " elif operation.machine_id == GPU:\n", " gpu_operations.append(operation)\n", " elif operation.machine_id == DATA_CENTER:\n", " data_center_operations.append(operation)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, that since each job does not have more than one operation for the same machine, we don't have to worry about the order of the operations in the list. However, we have to take into account the start time of each operation. In this case, we add to the last start time of the previous machine the maximum job duration of the instance. Of course, the solution will not be optimal, but it is a valid solution for the instance." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Schedule the operations as they are ordered in the instance\n", "def schedule_operations(operations, machine_id, start_time=0):\n", " machine_schedule = []\n", " for operation in operations:\n", " machine_schedule.append(\n", " ScheduledOperation(operation, start_time, machine_id)\n", " )\n", " start_time += 7\n", "\n", " return machine_schedule\n", "\n", "\n", "cpu_schedule = schedule_operations(cpu_operations, CPU)\n", "gpu_schedule = schedule_operations(gpu_operations, GPU, start_time=5)\n", "data_center_schedule = schedule_operations(\n", " data_center_operations, DATA_CENTER, start_time=10\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can create a `Schedule` object with the instance and the solution." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "instance_schedule = [cpu_schedule, gpu_schedule, data_center_schedule]\n", "schedule = Schedule(instance, instance_schedule)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Is the schedule complete? True\n", "Makespan: 25\n" ] } ], "source": [ "print(f\"Is the schedule complete? {schedule.is_complete()}\")\n", "print(\"Makespan:\", schedule.makespan())" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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fP369TXy6NjBIyYmBj///DNycnIqXVXcv39/xfcvB7t27cKzzz6LcePGISEhAffeey92796NgIAAAM4bJxfD2q2UwqFDhy5avDRp0gQ///wzevbs6dSi+kJERkbiwQcfxIMPPoj09HR06tQJL7zwQkWheKExs3r1ajRu3BhffvllpefMmTPHrhzlVzFt/dFYTmhoKPz9/VFaWlqtq86EEL3IuPxATMdjjz0GHx8fjB8/HqdOnaryfesrDuVXJqwfd3T3CF9fX5u7r5SvP1jdnVmeeeYZnD17Fvfeey9KSkqqfP+nn37C2rVra5TNVpuVUnjttddq5PH19bV5y7Um3HjjjSgtLcUbb7xR6fHFixfDYrFc8kqUDoqLizF27FhERUXhtddewwcffIBTp05V2jnGWePkYvznP/+pNO1g9erVOHny5EWPyciRI1FaWornnnuuyvdKSkpqvCNQdSktLa0yFsLCwhAVFYXCwsKKxy40Zmwd361bt+L333+3K09oaCh69+6N999/HykpKZW+V/4zXF1dceutt+KLL76wWVCePn3arp9NCKkevKJIaoVmzZph5cqVGDVqFFq0aFGxM4tSCsnJyVi5ciVcXFwq5tzVqVMHvXv3xsKFC1FcXIx69erhp59+QnJyskM5OnfujJ9//hmvvPIKoqKi0KhRI3Tv3h2dO3cGADz55JO444474O7ujiFDhlxwAevbb78du3fvxgsvvICdO3dW2pnlxx9/xIYNG7By5coaZWvZsiWaNGmCRx99FCdOnECdOnXwxRdfVJmrWJ02fvbZZ5gxYwa6du0KPz+/Gu92MmTIEFx33XV48sknceTIEbRv3x4//fQTvv76a0yfPr3SByjsISsrCx999JHN75XPVX3++eeRkJCADRs2wN/fH+3atcPs2bPx1FNPYcSIEbjxxhudNk4uRlBQEHr16oVx48bh1KlTePXVV9G0aVPcd999F3zNtddei/vvvx/z5s1DQkIC+vfvD3d3dyQmJmLVqlV47bXXnLJrT05ODurXr48RI0agffv28PPzw88//4y4uDgsWrSo4nkXGjM33XQTvvzySwwfPhyDBw9GcnIy3n77bcTGxtqcc1wdlixZgl69eqFTp06YOHEiGjVqhCNHjuC7775DQkICgL+Xktq4cSO6d++O++67D7GxsTh37hzi4+Px888/49y5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+b5anffghx9+GN9++y1WrVqFzZs3IzU1FbfccovNbNXx5efnY+DAgfjXv/5l01ETX2pqKlJTU/Hyyy9jz549+OCDD/Djjz9iwoQJdufr3Lkzli9fjn379mHdunVQSqF///4oLS21y1fOq6++CovFYndby7nvvvsqjb+FCxde8jiSy4gyKN26dVOTJ0+u+H9paamKiopS8+bNc8gLQK1Zs8bBdP9Henq6AqA2b96szVm3bl3173//2yFHTk6OatasmVq/fr269tpr1bRp0+zyzJkzR7Vv396hLP/k8ccfV7169dLms2batGmqSZMmqqysrMavHTx4sBo/fnylx2655RY1evRou7Lk5+crV1dXtXbt2kqPd+rUST355JM1clmP27KyMhUREaFeeumliscyMzOVp6en+uSTT2rs+yfJyckKgNq5c6fd+Wyxbds2BUAdPXpUiy8rK0sBUD///LPdvuPHj6t69eqpPXv2qJiYGLV48eJLui7kGzNmjBo6dGi1Xn8p1+23367uuuuuGrsu5LNm6NCh6vrrr7fb17p1a/Xss89Weqy649rad+DAAQVA7dmzp+Kx0tJSFRoaqt59991L+qzfgzMzM5W7u7tatWpVxXP27dunAKjff/+9xr5/snHjRgVAZWRkXNJTHV85n3/+ufLw8FDFxcVafH/++acCoA4dOmS3b+fOnapevXrq5MmT1f69acvlyO8fcnkw5BXFoqIi7NixA3379q14zMXFBX379sXvv/9ei8mqUn67QMfG56Wlpfj000+Rl5eHHj16OOSaPHkyBg8eXOkY2ktiYiKioqLQuHFjjB49+oK3v6rDN998gy5duuC2225DWFgYOnbsiHfffdfhjMDf4+ajjz7C+PHjL/pX8IW4+uqrsWHDBhw8eBAA8Oeff+K3337DoEGD7MpTUlKC0tLSKleBvL29HboqCwDJyclIS0ur1L8BAQHo3r27uHOknKysLFgsFgQGBjrsKioqwrJlyxAQEID27dvb5SgrK8Pdd9+NmTNnonXr1g5nAoBNmzYhLCwMLVq0wKRJk3D27Fm7cn333Xdo3rw5BgwYgLCwMHTv3t2hKTP/5NSpU/juu+8ueAWrOlx99dX45ptvcOLECSilsHHjRhw8eBD9+/evsauwsBAAKp0nLi4u8PT0rNZ5Yv0evGPHDhQXF1c6N1q2bIno6Ohq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from job_shop_lib.visualization import plot_gantt_chart\n", "\n", "_ = plot_gantt_chart(schedule, job_labels=[\"Job 1\", \"Job 2\", \"Job 3\"])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[[0, 1, 2], [0, 1, 2], [0, 1, 2]]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job_sequences = [list(range(3)), list(range(3)), list(range(3))]\n", "job_sequences" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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Tuyu24RYCQdKxF1Dkm19tZs2bco222wr2fZP0GWbtKFBE8Uff/wR//3vf9GrVy9bj0dTKsurhLVNAo/Esq2vtr29uCW+2GZbF207Mee6i26TNjToHEUfHx/4+vraeiya03ZAC2Htnu5ebLOtirNnz7LNNttKtrN76LJN2tCgieLLL7+MefPmobRUzJXkiYiIiEh5db48TseOHWuci3jq1ClIkoTIyEg4OjrWuG9CgjrnPIi+PM7wgAkoyREzWb78di8UVIl56dvL3p5tHbWPPvwYXFxchLSvXLnCNtuNvl1ytitcnAqEtK+Uewlp8/I42lHncxSvtwazXrUd0AL7PjsspH2Luxd+LMhlm23FnTlzBq1bt2abbbYVcja7B2LCtuiuTdpQ54ni/PnzlRyHJvlHilt/N9QobilDtvXVLiwU945rttnWRbs0RJdt0oYGnaMYHx+Pffv21bp93759OHDggOxBaUVRTomwdn6VuCXd2NZX29nZmW222VaQi1HMy86i26QNDZooTp8+HefOnat1+4ULFzB9+nTZg9KK39eKu/7Ud3ni1udkW1/tNm3asM022wpqHb5Zl23ShgZNFI8dO4ZOnTrVur1jx444duyY7EFpxcCnbhXWftA/mG22VXHw4EG22WZbQQmnxumyTdrQoImik5MTsrKyat1+8eJFODg06BreRERERHSTadBEccCAAZg7dy4KCv53bkN+fj7+9a9/oX///jYb3M0u5XdxF2hNLC1im21VhIaGss0220q2/Y7osk3a0KDDf6+//jr69OmDiIgIdOzYEQCQmJiIoKAgfPzxxzYd4M2sNPeKsHahoGvqsa2/tl7fYMA222pxchT3jmuRbdKGBh1RbNKkCY4cOYKlS5ciNjYWnTt3xvLly5GUlISwsDBbj/GmFXd3jLB2Hw9vttlWxenTp9lmm20FpWX21mWbtKHBJxS6ublh6tSpthwLEREREd1E6ryEnzXHjh1Deno6Kioqatx+zz33yB5YXYhewu++0EkozCxWvQsA+e/0Rk5lpZC2n4MD2zpqJ015FG5ubkLaJSUlbLPd6NtFZ3rCzVnMJbBKyvyEtLmEn3Y06KXn06dPIy4uDm3btsWQIUMwfPhwDB8+HCNGjMCIESNsPcabVsvekcLandw82GZbFefPn2ebbbYVdCGngy7bpA0NmijOmjULzZo1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ux7Q3XbOy+Noh/CXnrVM5OoxbLPNduNtt3J2Fda+VNCSbZXpdTsnbeBEUYacnBy22WabbZuLcnYR1s4pbM622m2dbuekDZwoymBvb88222yzbXPlkllY28Fe3Duu9drW63ZO2sBzFGXgEn5EpAQu4acvXMKP5yjezHhEUYb4+Hi22WabbZub4F97wQG1HEh5gG2V6XU7J23gRFEGs1ncy0Nss8124207GAzC2mazuKum6betz+2ctIETRRkCAgLYZptttm3uZFmpsHaAl7gLMOu2rdPtnLSBE0UZfH192WabbbZtLq28TFjbx+MM2yrT63ZO2sCJogx//vkn22yzzbbNDfQS9+R98nx/tlWm1+2ctIETRSIiIiKyihNFGVq2FHclf7bZZrvxtrcW5Aprt2yynW212zrdzkkbOFGUIS8vj2222Wbb5sKNzsLaecXhbKvd1ul2TtrAiaIMly5dYpttttm2uRgXrvWsq7ZOt3PSBk4UZTAIvNYZ22yz3XjbZohbMMtgEHddPf229bmdkzZwCT8ZuIQfESmBS/jpC5fw4xJ+NzMeUZTh4MGDbLPNNts2N84vSFg74dRYtlWm1+2ctIETRRkqKyvZZptttm3O2U7crrmyyolttds63c5JGzhRlEGvV9Nnm222lXW6/Iqwtq9HGttqt3W6nZM2cKIoQ1CQuJeH2Gab7cbbPnalRFg7yPs422q3dbqdkzZwoijD8ePidixss812423f7e0vrH383F1sq93W6XZO2sCJIhERERFZxYmiDNHR0WyzzTbbNvdzobjVMqJCd7GtMr1u56QNnCjKUFxczDbbbLNtc4GO6l8XtlrJlQC2VabX7Zy0gRNFGTIzM9lmm222ba6ti7uwdmZeG7bVbut0Oydt4ESRiIiIiKziEn4ybK36Utg6mZIksc022420HbXiDWGrPaeMWgWDQUxdkgy6bBuC/tTdds4l/LSDRxRlSExMZJttttm2udG+4s6XO5J2H9sq0+t2TtrAiaIMFRUVbLPNNts2527vIKxdbhJ3fqRe23rdzkkbOFGUwdvbm2222Wbb5tIryoS1vd3Psa12W6fbOWkDJ4oyNG3alG222Wbb5hJKioS1m/glsq0yvW7npA2cKMqQnJzMNttss21zw33EnaN49OxQtlWm1+2ctIETRSIiIiKyihNFGZo3b84222yzbXO/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "optimized_schedule = Schedule.from_job_sequences(instance, job_sequences)\n", "_ = plot_gantt_chart(\n", " optimized_schedule, job_labels=[\"Job 1\", \"Job 2\", \"Job 3\"]\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "job-shop-lib-gOF0HMZJ-py3.11", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }