flowty


Nameflowty JSON
Version 1.5.1 PyPI version JSON
download
home_pagehttps://flowty.ai
SummaryFlowty Network Optimization Solver
upload_time2023-08-03 08:47:11
maintainer
docs_urlNone
authorFlowty
requires_python>=3.8
license
keywords optimization nework optimization combinatorial optimization linear programming integer programming operations research mathematical programming
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Flowty

Install with

```sh
pip install flowty
```

## Windows

Install the [64-bit version of python](https://docs.python.org/3/using/windows.html).

## Linux

Install [Fortran](https://gcc.gnu.org/fortran/) to work with the [BLAS](https://www.netlib.org/blas/) and [LAPACK](https://www.netlib.org/lapack/).

On `apt-get` compatible distributions do

```sh
apt-get update
apt-get install libgfortran5
```

## Quick Start

Let's solve [the vehicle routing problem with time windows](https://docs.flowty.ai/examples/vrptw/). 

The objective is to minimize the total cost of routing vehicles from a central depot to a set of customers. Each customer must be visited exactly once within a specified time window to deliver their required demand, each customer has a service time it takes to unload the vehicle (modeled within the out-going travel time), and each vehicle has a maximum capacity of goods to deliver. If a vehicle arrives early it is allowed to wait for the customer's time window to start.

```python
# Vehicle Routing Problem with Time Windows

from flowty import Model, xsum
from flowty.datasets import vrp_rep

bunch = vrp_rep.fetch_vrp_rep("solomon-1987-r1", instance="R102_025")
name, n, es, c, d, Q, t, a, b, x, y = bunch["instance"]

m = Model()

# one graph, it is identical for all vehicles
g = m.addGraph(obj=c, edges=es, source=0, sink=n - 1, L=1, U=n - 2, type="B")

# adds resources variables to the graph.
# demand and capacity
m.addResourceDisposable(
    graph=g, consumptionType="V", weight=d, boundsType="V", lb=0, ub=Q, name="d"
)

# travel time and customer time windows
m.addResourceDisposable(
    graph=g, consumptionType="E", weight=t, boundsType="V", lb=a, ub=b, name="t"
)

# set partition constriants ensure customers are only visited once
for i in range(n)[1:-1]:
    m += xsum(x * 1 for x in g.vars if i == x.source) == 1

# packing set - at most one of these variables can be set. Helps the algorithm
for i in range(n)[1:-1]:
    m.addPackingSet([x for x in g.vars if i == x.source])

status = m.optimize()
print(f"ObjectiveValue {m.objectiveValue}")

# get the variable values
for var in m.vars:
    if var.x > 0:
        print(f"{var.name} = {var.x}")
```

Visit [docs.flowy.ai](https://docs.flowty.ai) to get to know more.

## License

The community license is a license to the general community which may have limited
features and additional restrictions. For an unlimited commercial, academic or trial
license contact Flowty at [info@flowty.ai](mailto:info@flowty.ai).

            

Raw data

            {
    "_id": null,
    "home_page": "https://flowty.ai",
    "name": "flowty",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "Optimization,Nework Optimization,Combinatorial Optimization,Linear Programming,Integer Programming,Operations Research,Mathematical Programming",
    "author": "Flowty",
    "author_email": "info@flowty.ai",
    "download_url": "",
    "platform": null,
    "description": "# Flowty\n\nInstall with\n\n```sh\npip install flowty\n```\n\n## Windows\n\nInstall the [64-bit version of python](https://docs.python.org/3/using/windows.html).\n\n## Linux\n\nInstall [Fortran](https://gcc.gnu.org/fortran/) to work with the [BLAS](https://www.netlib.org/blas/) and [LAPACK](https://www.netlib.org/lapack/).\n\nOn `apt-get` compatible distributions do\n\n```sh\napt-get update\napt-get install libgfortran5\n```\n\n## Quick Start\n\nLet's solve [the vehicle routing problem with time windows](https://docs.flowty.ai/examples/vrptw/). \n\nThe objective is to minimize the total cost of routing vehicles from a central depot to a set of customers. Each customer must be visited exactly once within a specified time window to deliver their required demand, each customer has a service time it takes to unload the vehicle (modeled within the out-going travel time), and each vehicle has a maximum capacity of goods to deliver. If a vehicle arrives early it is allowed to wait for the customer's time window to start.\n\n```python\n# Vehicle Routing Problem with Time Windows\n\nfrom flowty import Model, xsum\nfrom flowty.datasets import vrp_rep\n\nbunch = vrp_rep.fetch_vrp_rep(\"solomon-1987-r1\", instance=\"R102_025\")\nname, n, es, c, d, Q, t, a, b, x, y = bunch[\"instance\"]\n\nm = Model()\n\n# one graph, it is identical for all vehicles\ng = m.addGraph(obj=c, edges=es, source=0, sink=n - 1, L=1, U=n - 2, type=\"B\")\n\n# adds resources variables to the graph.\n# demand and capacity\nm.addResourceDisposable(\n    graph=g, consumptionType=\"V\", weight=d, boundsType=\"V\", lb=0, ub=Q, name=\"d\"\n)\n\n# travel time and customer time windows\nm.addResourceDisposable(\n    graph=g, consumptionType=\"E\", weight=t, boundsType=\"V\", lb=a, ub=b, name=\"t\"\n)\n\n# set partition constriants ensure customers are only visited once\nfor i in range(n)[1:-1]:\n    m += xsum(x * 1 for x in g.vars if i == x.source) == 1\n\n# packing set - at most one of these variables can be set. Helps the algorithm\nfor i in range(n)[1:-1]:\n    m.addPackingSet([x for x in g.vars if i == x.source])\n\nstatus = m.optimize()\nprint(f\"ObjectiveValue {m.objectiveValue}\")\n\n# get the variable values\nfor var in m.vars:\n    if var.x > 0:\n        print(f\"{var.name} = {var.x}\")\n```\n\nVisit [docs.flowy.ai](https://docs.flowty.ai) to get to know more.\n\n## License\n\nThe community license is a license to the general community which may have limited\nfeatures and additional restrictions. For an unlimited commercial, academic or trial\nlicense contact Flowty at [info@flowty.ai](mailto:info@flowty.ai).\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Flowty Network Optimization Solver",
    "version": "1.5.1",
    "project_urls": {
        "Homepage": "https://flowty.ai"
    },
    "split_keywords": [
        "optimization",
        "nework optimization",
        "combinatorial optimization",
        "linear programming",
        "integer programming",
        "operations research",
        "mathematical programming"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9cf65c36f741cc6868a06eb37a9e836242358c91cded6624a4343b39f7c1f2ea",
                "md5": "61a8a14b7bcb7672faf7fb617fc98e2b",
                "sha256": "474dcfd718e34ccff7fcc699043df3110108b35c015569849fc267f0f728081b"
            },
            "downloads": -1,
            "filename": "flowty-1.5.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "61a8a14b7bcb7672faf7fb617fc98e2b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 6406791,
            "upload_time": "2023-08-03T08:47:11",
            "upload_time_iso_8601": "2023-08-03T08:47:11.945080Z",
            "url": "https://files.pythonhosted.org/packages/9c/f6/5c36f741cc6868a06eb37a9e836242358c91cded6624a4343b39f7c1f2ea/flowty-1.5.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-08-03 08:47:11",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "flowty"
}
        
Elapsed time: 0.24378s