dorplan


Namedorplan JSON
Version 0.9.1 PyPI version JSON
download
home_pageNone
SummaryDesktop OR planner
upload_time2025-07-09 06:52:07
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords mathematical optimization solver gui desktop cross-platform
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # d-OR-plan

Desktop OR Planner. A desktop wrapper for applications based on the Cornflow-client format. Check out the [Cornflow project](https://github.com/baobabsoluciones/cornflow).
[Here is a guide](https://baobabsoluciones.github.io/cornflow/guides/deploy_solver_new.html) on how to configure an app in the right format.

Another option is just to check the tests/data/graph_coloring example that comes inside this project. 

## Installation

Running uv or pip should work:

Using uv:

```
uv install dorplan[example]
```

If reports are required, install the reports dependencies:

```
uv install dorplan[example, reports]
```

In the case of Windows, you will also need to install quarto separately. You can find the instructions [here](https://quarto.org/docs/download/).

This is until the quarto team fixes this issue: https://github.com/quarto-dev/quarto-cli/issues/12314

Using pip

```
python -m pip install dorplan[example]
```

## Testing

If you want to test the example app, run:

```
uv run dorplan/example/example.py
```

The example shows a graph-coloring problem, which is a simple optimization problem where the goal is to color the nodes using the least number of colors in a graph such that no two adjacent nodes have the same color.

Many engines are available to solve this problem, such as [CP-SAT](https://developers.google.com/optimization/cp), and [HiGHS](https://github.com/ERGO-Code/HiGHS) [via PuLP](https://github.com/coin-or/pulp/), [networkX](https://networkx.org/), and [timefold](https://timefold.ai/). For those that take a time limit (all but networkx), you can set it in the GUI. You can also stop the execution if the solver is configured to do it (all but networkx).

## Functionality

* Import and export data (in json format and Excel).
* Load example data.
* Solve an instance.
* Show interactive logs in the GUI.
* Stop a running solver, if the correct callback is implemented.
* Kill a running solver, if the correct worker is selected.
* Generate a report, if a quarto report is available.
* Open the report in a new browser tab.

## How to run it

In its simplest form, you can just pass it the Cornflow `ApplicationCore` class and the initialized options for the solver. More information on how to create a Cornflow-compatible Application [here](https://baobabsoluciones.github.io/cornflow/guides/deploy_solver_new.html#application-class). Alternatively, check the example in `dorplan/tests/data/graph_coloring/__init__.py`

The app will be opened in a new window, and you can interact with it.

```python
from dorplan.app import DorPlan
from dorplan.tests.data.graph_coloring import GraphColoring

app = DorPlan(GraphColoring, {})

```

## Functionality

It's possible to load one of the test cases from the app

![](dorplan/example/img/test_cases.png)

After setting a time limit, you can solve the instance by clicking on "Generate plan" and look at the progress in the GUI. 
You can also stop the execution (if the solver is configured to do it).

![](dorplan/example/img/output_log.png)

You can generate a report if the solver has a Quarto report available and you installed the `reports` dependencies.

![](dorplan/example/img/report_log.png)

The report will then appear on the screen (with terrible format).

![report](dorplan/example/img/report.png)

But you can always open it in a new browser tab by clicking the "Open report" button.

![report](dorplan/example/img/report_html.png)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dorplan",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Franco Peschiera <pchtsp@gmail.com>",
    "keywords": "Mathematical, Optimization, solver, GUI, desktop, cross-platform",
    "author": null,
    "author_email": "Franco Peschiera <pchtsp@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/01/1e/2b29565b9e987aeb74e9b73d6596e57eb92d9e78e7b2d746ef007ff6fe4c/dorplan-0.9.1.tar.gz",
    "platform": null,
    "description": "# d-OR-plan\n\nDesktop OR Planner. A desktop wrapper for applications based on the Cornflow-client format. Check out the [Cornflow project](https://github.com/baobabsoluciones/cornflow).\n[Here is a guide](https://baobabsoluciones.github.io/cornflow/guides/deploy_solver_new.html) on how to configure an app in the right format.\n\nAnother option is just to check the tests/data/graph_coloring example that comes inside this project. \n\n## Installation\n\nRunning uv or pip should work:\n\nUsing uv:\n\n```\nuv install dorplan[example]\n```\n\nIf reports are required, install the reports dependencies:\n\n```\nuv install dorplan[example, reports]\n```\n\nIn the case of Windows, you will also need to install quarto separately. You can find the instructions [here](https://quarto.org/docs/download/).\n\nThis is until the quarto team fixes this issue: https://github.com/quarto-dev/quarto-cli/issues/12314\n\nUsing pip\n\n```\npython -m pip install dorplan[example]\n```\n\n## Testing\n\nIf you want to test the example app, run:\n\n```\nuv run dorplan/example/example.py\n```\n\nThe example shows a graph-coloring problem, which is a simple optimization problem where the goal is to color the nodes using the least number of colors in a graph such that no two adjacent nodes have the same color.\n\nMany engines are available to solve this problem, such as [CP-SAT](https://developers.google.com/optimization/cp), and [HiGHS](https://github.com/ERGO-Code/HiGHS) [via PuLP](https://github.com/coin-or/pulp/), [networkX](https://networkx.org/), and [timefold](https://timefold.ai/). For those that take a time limit (all but networkx), you can set it in the GUI. You can also stop the execution if the solver is configured to do it (all but networkx).\n\n## Functionality\n\n* Import and export data (in json format and Excel).\n* Load example data.\n* Solve an instance.\n* Show interactive logs in the GUI.\n* Stop a running solver, if the correct callback is implemented.\n* Kill a running solver, if the correct worker is selected.\n* Generate a report, if a quarto report is available.\n* Open the report in a new browser tab.\n\n## How to run it\n\nIn its simplest form, you can just pass it the Cornflow `ApplicationCore` class and the initialized options for the solver. More information on how to create a Cornflow-compatible Application [here](https://baobabsoluciones.github.io/cornflow/guides/deploy_solver_new.html#application-class). Alternatively, check the example in `dorplan/tests/data/graph_coloring/__init__.py`\n\nThe app will be opened in a new window, and you can interact with it.\n\n```python\nfrom dorplan.app import DorPlan\nfrom dorplan.tests.data.graph_coloring import GraphColoring\n\napp = DorPlan(GraphColoring, {})\n\n```\n\n## Functionality\n\nIt's possible to load one of the test cases from the app\n\n![](dorplan/example/img/test_cases.png)\n\nAfter setting a time limit, you can solve the instance by clicking on \"Generate plan\" and look at the progress in the GUI. \nYou can also stop the execution (if the solver is configured to do it).\n\n![](dorplan/example/img/output_log.png)\n\nYou can generate a report if the solver has a Quarto report available and you installed the `reports` dependencies.\n\n![](dorplan/example/img/report_log.png)\n\nThe report will then appear on the screen (with terrible format).\n\n![report](dorplan/example/img/report.png)\n\nBut you can always open it in a new browser tab by clicking the \"Open report\" button.\n\n![report](dorplan/example/img/report_html.png)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Desktop OR planner",
    "version": "0.9.1",
    "project_urls": null,
    "split_keywords": [
        "mathematical",
        " optimization",
        " solver",
        " gui",
        " desktop",
        " cross-platform"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "89c90b40cc5eb8fe74f1d440bb684ce518fedfe30d110cec97e3b864a2ebe1d1",
                "md5": "895a1ba5dbfd9b28adfc7a9dc01b0de8",
                "sha256": "7a883456db1e57b52cdefa6e01d0562f4cc8667aa1ae6e644a20e04d3e8b76ce"
            },
            "downloads": -1,
            "filename": "dorplan-0.9.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "895a1ba5dbfd9b28adfc7a9dc01b0de8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 39766,
            "upload_time": "2025-07-09T06:52:06",
            "upload_time_iso_8601": "2025-07-09T06:52:06.699827Z",
            "url": "https://files.pythonhosted.org/packages/89/c9/0b40cc5eb8fe74f1d440bb684ce518fedfe30d110cec97e3b864a2ebe1d1/dorplan-0.9.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "011e2b29565b9e987aeb74e9b73d6596e57eb92d9e78e7b2d746ef007ff6fe4c",
                "md5": "d1f17f909ddc86798b1f8c5967e15ab5",
                "sha256": "ca563d9b07110fd667455637271bea31b024cf431c1ccfde1b77a46767bdee04"
            },
            "downloads": -1,
            "filename": "dorplan-0.9.1.tar.gz",
            "has_sig": false,
            "md5_digest": "d1f17f909ddc86798b1f8c5967e15ab5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 31066,
            "upload_time": "2025-07-09T06:52:07",
            "upload_time_iso_8601": "2025-07-09T06:52:07.914459Z",
            "url": "https://files.pythonhosted.org/packages/01/1e/2b29565b9e987aeb74e9b73d6596e57eb92d9e78e7b2d746ef007ff6fe4c/dorplan-0.9.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-09 06:52:07",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "dorplan"
}
        
Elapsed time: 0.42749s