{ "cells": [ { "cell_type": "markdown", "id": "36d350db", "metadata": {}, "source": [ "# Constraint *Cumulative*" ] }, { "cell_type": "markdown", "id": "d80c1135", "metadata": {}, "source": [ "The constraint *Cumulative* is useful when a resource of limited quantity must be shared for achieving several tasks. For example, in a scheduling context where several tasks require some specific quantities of a single resource, the cumulative constraint imposes that a strict limit on the total consumption of the resource is never exceeded at each point of a time line. The tasks may overlap but their cumulative resource consumption must never exceed the limit." ] }, { "attachments": { "cumulative.png": { "image/png": "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" } }, "cell_type": "markdown", "id": "c8f0aae5", "metadata": {}, "source": [ "In the following figure, five tasks (some of them overlapping) are scheduled while never exceeding the capacity (5) of the resource. The interested reader can check that there is no better scheduling scenario, that is to say, a way of scheduling the five tasks in less than 7 time units.\n", "\"Cumulative\"" ] }, { "cell_type": "markdown", "id": "d540d55d", "metadata": {}, "source": [ "Below, we give some illustrations of the constraint *Cumulative*. " ] }, { "cell_type": "markdown", "id": "86cf1335", "metadata": {}, "source": [ "To see how this constraint works, we need first to import the library PyCSP$^3$:" ] }, { "cell_type": "code", "execution_count": 1, "id": "dd5a817e", "metadata": {}, "outputs": [], "source": [ "from pycsp3 import *" ] }, { "cell_type": "markdown", "id": "19b380c8", "metadata": {}, "source": [ "For our illustration, we introduce an array $x$ of 5 variables, each one with 0..7 as domain. These variables will correspond to the starting times of 5 tasks." ] }, { "cell_type": "code", "execution_count": 2, "id": "c66232a3", "metadata": {}, "outputs": [], "source": [ "# x[i] is the starting time of the ith task\n", "x = VarArray(size=5, dom=range(8))" ] }, { "cell_type": "markdown", "id": "7ac30761", "metadata": {}, "source": [ "We can display (the structure of) the array as well as the domains of the variables." ] }, { "cell_type": "code", "execution_count": 3, "id": "0ba53c6a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Array of variable x: [x[0], x[1], x[2], x[3], x[4]]\n", "Domain of any variable: 0..7\n" ] } ], "source": [ "print(\"Array of variable x: \", x)\n", "print(\"Domain of any variable: \", x[0].dom)" ] }, { "cell_type": "markdown", "id": "15f020fa", "metadata": {}, "source": [ "A first way of posting a constraint *Cumulative* is to call the function *Cumulative()* with three named parameters *origins*, *lengths* and *heights* (and possibly, *ends*). For our illustration, this gives:" ] }, { "cell_type": "code", "execution_count": 4, "id": "7651def0", "metadata": {}, "outputs": [], "source": [ "satisfy(\n", " Cumulative(origins=x, lengths=[3,2,2,4,2], heights=[3,2,2,2,3]) <= 5\n", ");" ] }, { "cell_type": "markdown", "id": "f9104a63", "metadata": {}, "source": [ "We can display the internal representation of the posted constraint; this way, although a little bit technical, we can see that the arguments to the constraint are correct (note that 'le' stands for (less than or equal to')." ] }, { "cell_type": "code", "execution_count": 5, "id": "509f6a3e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cumulative(origins:[x[0], x[1], x[2], x[3], x[4]], lengths:[3, 2, 2, 4, 2], heights:[3, 2, 2, 2, 3], condition:(le,5))\n" ] } ], "source": [ "print(posted())" ] }, { "cell_type": "markdown", "id": "7edd7a29", "metadata": {}, "source": [ "By calling the function *solve()*, we can check that the problem (actually, the single constraint) is satisfiable (SAT). We can also print the values assigned to the variables in the found solution; we can call the function *values()*." ] }, { "cell_type": "code", "execution_count": 6, "id": "3d30660c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Solution: [0, 0, 2, 3, 4]\n" ] } ], "source": [ "if solve() is SAT:\n", " print(\"Solution: \", values(x))" ] }, { "cell_type": "markdown", "id": "fde6d48a", "metadata": {}, "source": [ "We can count the number of solutions (supports) to this constraint." ] }, { "cell_type": "code", "execution_count": 7, "id": "d8dcfda7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of solutions: 5748\n" ] } ], "source": [ "if solve(sols=ALL) is SAT:\n", " print(\"Number of solutions: \", n_solutions())" ] }, { "cell_type": "markdown", "id": "5c3c71e4", "metadata": {}, "source": [ "### Using the named Parameter *tasks*" ] }, { "cell_type": "markdown", "id": "0c41a6f5", "metadata": {}, "source": [ "Instead of using the named parameters *origins*, *lengths* and *heights* (and possibly, *ends*), one can use a unique named parameter called *tasks*. Its value must be a list of 3-tuple or 4-tuple, indicating for each task, the origin, the length, and the height of the task. " ] }, { "cell_type": "markdown", "id": "4d347541", "metadata": {}, "source": [ "To illustrate it, we need first to discard the last posted constraint." ] }, { "cell_type": "code", "execution_count": 8, "id": "c5853779", "metadata": {}, "outputs": [], "source": [ "unpost()" ] }, { "cell_type": "markdown", "id": "65831905", "metadata": {}, "source": [ "We can check that there are no more constraints:" ] }, { "cell_type": "code", "execution_count": 9, "id": "bcf4dc63", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[]\n" ] } ], "source": [ "print(posted())" ] }, { "cell_type": "markdown", "id": "ecf80a0e", "metadata": {}, "source": [ "We post the same constraint as above, by using *tasks*:" ] }, { "cell_type": "code", "execution_count": 10, "id": "f3744d9b", "metadata": {}, "outputs": [], "source": [ "lengths = [3,2,2,4,2]\n", "heights = [3,2,2,2,3]\n", "\n", "satisfy(\n", " Cumulative(tasks=[(x[i],lengths[i],heights[i]) for i in range(5)]) <= 5\n", ");" ] }, { "cell_type": "markdown", "id": "92d8ade9", "metadata": {}, "source": [ "We can observe that the very same constraint has been posted." ] }, { "cell_type": "code", "execution_count": 11, "id": "6c897b0b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cumulative(origins:[x[0], x[1], x[2], x[3], x[4]], lengths:[3, 2, 2, 4, 2], heights:[3, 2, 2, 2, 3], condition:(le,5))\n" ] } ], "source": [ "print(posted())" ] } ], "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.7.12" } }, "nbformat": 4, "nbformat_minor": 5 }