<img src="https://github.com/navindu-ds/elpee/assets/114894532/81c9a74a-435d-4dd7-bef4-e9d88708cffb">
# Elpee
[](https://pypi.org/project/elpee/)  [](https://pypistats.org/packages/elpee) [](https://github.com/navindu-ds/elpee/blob/main/LICENSE) [](https://elpee.readthedocs.io/) 
*Solving linear programming problems one step at a time.*
Elpee (short for **L** inear **P** rogramming) is a Python library for students and academics to viusalize the steps and iterations required to solve constrained linear optimization problems using linear programming methods.
## Demo
[](https://elpee-calc.streamlit.app/)
View how linear programming problems can be solved using the [elpee-calc.streamlit.app](https://elpee-calc.streamlit.app) powered by the elpee library.
## Documentation
[](https://elpee.readthedocs.io/)
Follow the documentation to get the best use of [elpee](https://elpee.readthedocs.io/).
## Install
To use elpee Python library, install it using [pip](https://pypi.org/project/elpee/):
```
(.venv) $ pip install elpee
```
## Example Problem
Define the Linear Programming Problem to be solved using the All Stack Starting Method by defining the Objective Function and the Constraint Expressions.
```
from elpee import LinearProblem
# set up a maximization problem
problem = LinearProblem(is_maximization=True)
# define the objective function
problem.add_objective('x + y')
# add the constraints to the problem
problem.add_constraint('-x + y <= 2')
problem.add_constraint('6*x + 4*y >= 24')
problem.add_constraint('y >= 1')
```
Add additional configurations to apply Big-M or Dual Simplex Method
```
problem.use_dual_simplex() # use to configure problem to use dual simplex method
problem.use_bigM() # use to configure problem to use big M method
```
Apply the Solver to solve the Linear Problem. The iterations to produce the results will be printed on the command line.
```
from elpee import ElpeeSolver
solution = ElpeeSolver.solve(problem)
```
Sample Output will be as follows (using dual_simplex).
```
...Generating Initial Feasible Solution for
MIN x y S1 S2 S3 Sol
P -1.0 -1.0 0 0 0 0
S1 -1.0 1.0 1 0 0 2.0
S2 -6.0 -4.0 0 1 0 -24.0
S3 0 -1.0 0 0 1 -1.0
===========================================================================================
Taking S2 = 0; Entering x as a new basic variable;
...Generating Initial Feasible Solution for
MIN x y S1 S2 S3 Sol
P 0.0 -0.333 0.0 -0.167 0.0 4.0
S1 0.0 1.667 1.0 -0.167 0.0 6.0
x 1.0 0.667 -0.0 -0.167 -0.0 4.0
S3 0 -1.0 0 0 1 -1.0
===========================================================================================
Taking S3 = 0; Entering y as a new basic variable;
Feasible Solution # 1
MIN x y S1 S2 S3 Sol
P 0.0 0.0 0.0 -0.167 -0.333 4.333
S1 0.0 0.0 1.0 -0.167 1.667 4.333
x 1.0 0.0 0.0 -0.167 0.667 3.333
y -0.0 1.0 -0.0 -0.0 -1.0 1.0
===========================================================================================
Optimized Solution Received!
```
And obtain an interpretation to the solution
```
Minimum Value for Objective Function = 4.333
Values for Decision Variables :
x = 3.333
y = 1.0
Surplus & Slack variables
Constraint #1 Surplus = 4.333 units
Constraint #2 Surplus : Satisfied at Boundary
Constraint #3 Surplus : Satisfied at Boundary
```
Raw data
{
"_id": null,
"home_page": "https://github.com/navindu-ds/elpee",
"name": "elpee",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "optimization, linear programming, operational research",
"author": "Navindu De Silva",
"author_email": "navinduydds@gmail.com ",
"download_url": "https://files.pythonhosted.org/packages/38/fb/4811edb0885b5a2940cf7345a12b94d7a524df780fb87dda57c15a1e9416/elpee-1.0.3.tar.gz",
"platform": null,
"description": "<img src=\"https://github.com/navindu-ds/elpee/assets/114894532/81c9a74a-435d-4dd7-bef4-e9d88708cffb\">\n\n# Elpee\n\n[](https://pypi.org/project/elpee/)  [](https://pypistats.org/packages/elpee) [](https://github.com/navindu-ds/elpee/blob/main/LICENSE) [](https://elpee.readthedocs.io/) \n\n\n*Solving linear programming problems one step at a time.*\n\nElpee (short for **L** inear **P** rogramming) is a Python library for students and academics to viusalize the steps and iterations required to solve constrained linear optimization problems using linear programming methods.\n\n## Demo\n\n[](https://elpee-calc.streamlit.app/)\n\nView how linear programming problems can be solved using the [elpee-calc.streamlit.app](https://elpee-calc.streamlit.app) powered by the elpee library. \n\n## Documentation\n\n[](https://elpee.readthedocs.io/)\n\nFollow the documentation to get the best use of [elpee](https://elpee.readthedocs.io/).\n\n## Install\nTo use elpee Python library, install it using [pip](https://pypi.org/project/elpee/):\n```\n(.venv) $ pip install elpee\n```\n\n## Example Problem\nDefine the Linear Programming Problem to be solved using the All Stack Starting Method by defining the Objective Function and the Constraint Expressions.\n```\nfrom elpee import LinearProblem\n\n# set up a maximization problem\nproblem = LinearProblem(is_maximization=True)\n\n# define the objective function\nproblem.add_objective('x + y')\n\n# add the constraints to the problem\nproblem.add_constraint('-x + y <= 2')\nproblem.add_constraint('6*x + 4*y >= 24')\nproblem.add_constraint('y >= 1')\n```\n\nAdd additional configurations to apply Big-M or Dual Simplex Method\n```\nproblem.use_dual_simplex() # use to configure problem to use dual simplex method\nproblem.use_bigM() # use to configure problem to use big M method\n```\n\nApply the Solver to solve the Linear Problem. The iterations to produce the results will be printed on the command line.\n```\nfrom elpee import ElpeeSolver\n\nsolution = ElpeeSolver.solve(problem)\n```\nSample Output will be as follows (using dual_simplex).\n```\n...Generating Initial Feasible Solution for\n MIN x y S1 S2 S3 Sol\n P -1.0 -1.0 0 0 0 0\n S1 -1.0 1.0 1 0 0 2.0\n S2 -6.0 -4.0 0 1 0 -24.0\n S3 0 -1.0 0 0 1 -1.0\n===========================================================================================\n\nTaking S2 = 0; Entering x as a new basic variable;\n\n...Generating Initial Feasible Solution for\n MIN x y S1 S2 S3 Sol\n P 0.0 -0.333 0.0 -0.167 0.0 4.0\n S1 0.0 1.667 1.0 -0.167 0.0 6.0\n x 1.0 0.667 -0.0 -0.167 -0.0 4.0\n S3 0 -1.0 0 0 1 -1.0\n===========================================================================================\n\nTaking S3 = 0; Entering y as a new basic variable;\n\nFeasible Solution # 1\n MIN x y S1 S2 S3 Sol\n P 0.0 0.0 0.0 -0.167 -0.333 4.333\n S1 0.0 0.0 1.0 -0.167 1.667 4.333\n x 1.0 0.0 0.0 -0.167 0.667 3.333\n y -0.0 1.0 -0.0 -0.0 -1.0 1.0\n===========================================================================================\n\nOptimized Solution Received!\n```\nAnd obtain an interpretation to the solution\n```\nMinimum Value for Objective Function = 4.333\n\nValues for Decision Variables :\n x = 3.333\n y = 1.0\n\nSurplus & Slack variables\n Constraint #1 Surplus = 4.333 units\n Constraint #2 Surplus : Satisfied at Boundary\n Constraint #3 Surplus : Satisfied at Boundary\n```\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Solving linear programming problems step-by-step",
"version": "1.0.3",
"project_urls": {
"Documentation": "https://elpee.readthedocs.io/",
"Homepage": "https://github.com/navindu-ds/elpee",
"Repository": "https://github.com/navindu-ds/elpee"
},
"split_keywords": [
"optimization",
" linear programming",
" operational research"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "76d1a38ef81d24bbe2b0ea4e3414fad8fbe588e8bc8919440ff1db21632638a2",
"md5": "9168b2dbef467b519d8a9baa140cc4ee",
"sha256": "c951e6c03285fde91cf02b0cecc71edd8daeba32d4b8d925e3c909f18d7bd005"
},
"downloads": -1,
"filename": "elpee-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9168b2dbef467b519d8a9baa140cc4ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 37448,
"upload_time": "2025-01-01T18:21:58",
"upload_time_iso_8601": "2025-01-01T18:21:58.023430Z",
"url": "https://files.pythonhosted.org/packages/76/d1/a38ef81d24bbe2b0ea4e3414fad8fbe588e8bc8919440ff1db21632638a2/elpee-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "38fb4811edb0885b5a2940cf7345a12b94d7a524df780fb87dda57c15a1e9416",
"md5": "d4b7120150b06786069b5250fc8c11a4",
"sha256": "fe4cf8bdef1293c889861e62a40211c4b0a298e151f9a0c135552b8543d14421"
},
"downloads": -1,
"filename": "elpee-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "d4b7120150b06786069b5250fc8c11a4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 82258,
"upload_time": "2025-01-01T18:21:59",
"upload_time_iso_8601": "2025-01-01T18:21:59.884535Z",
"url": "https://files.pythonhosted.org/packages/38/fb/4811edb0885b5a2940cf7345a12b94d7a524df780fb87dda57c15a1e9416/elpee-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-01 18:21:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "navindu-ds",
"github_project": "elpee",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "pyyaml",
"specs": [
[
"==",
"6.0.1"
]
]
},
{
"name": "sympy",
"specs": [
[
"==",
"1.12.1"
]
]
}
],
"lcname": "elpee"
}