Giter VIP home page Giter VIP logo

opyrability's Introduction

Opyrability - Process Operability Analysis in Python.

PyPI - Downloads

PyPI - Version Conda Version

GitHub forks GitHub Repo stars

GitHub top language

GitHub Actions Workflow Status GitHub Actions Workflow Status

Website GitHub License DOI

Welcome to opyrability, a Python-based package for performing Process Operability analysis.

opyrability is developed by the Control, Optimization and Design for Energy and Sustainability (CODES) Group at West Virginia University.

Authors:

Documentation and Process Operability Principles

Full documentation and discussion regarding process operability principles are available in opyrability's online portal.

Citing Us

To cite us, please use the following BibTeX entry below:

@article{Alves2024, 
doi = {10.21105/joss.05966}, 
url = {https://doi.org/10.21105/joss.05966}, 
year = {2024}, 
publisher = {The Open Journal}, 
volume = {9}, 
number = {94}, 
pages = {5966}, 
author = {Victor Alves and San Dinh and John R. Kitchin and Vitor Gazzaneo and Juan C. Carrasco and Fernando V. Lima}, 
title = {Opyrability: A Python package for process operability analysis}, journal = {Journal of Open Source Software} 
}

A paper describing opyrability's main functionalities is available in the Journal of Open Source Software (JOSS):

DOI

Installation

The Anaconda distribution is needed to have some of opyrability's dependencies.

From PyPI/conda (Windows, Linux and macOS):

The following commands will install opyrability and all dependencies on any OS (Windows, Linux and macOS):

pip install opyrability

Then install Cyipopt from conda:

conda install -c conda-forge cyipopt

From conda (Linux and macOS only):

The single command below will install opyrability and all requirements/dependencies on Linux/macOS operating systems automatically:

conda install -c codes-group -c conda-forge opyrability

opyrability's People

Contributors

hunterbarber avatar kyleniemeyer avatar sanqdinh avatar victoraalves avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

opyrability's Issues

Suggestion -NSGA-II

NSGA-II (Non-dominated Sorting Genetic Algorithm II) can be effectively combined with process operability analysis to optimize the design and control of chemical processes by Including the operability set and its defining criteria (achievable inputs/outputs, desired operating regions, disturbances) as constraints in the NSGA-II optimization. NSGA-II will generate a set of Pareto optimal solutions that represent different trade-offs between design and operability objectives at specific variables. I believe that combining NSGA-II with process operability analysis, you can design and control chemical processes that are not only optimal in terms of desired objectives but also robust and operable under practical conditions. This integrated approach helps to avoid the pitfalls of sequential design and control and leads to more sustainable and efficient chemical production.

Error with Polytrope Package

Hello,

When I try to run the jupyter notebook for the shower example, I get the following error. I'm not sure why this is or what to do about it. Any help would be greatly appreciated! Specifically, this is from operability_index_shower.ipynb and from the following line of code:

AOS_region = multimodel_rep(model, AIS_bounds, AIS_resolution)

Thanks!

See below for the error.

TypeError Traceback (most recent call last)
Cell In[9], line 1
----> 1 AOS_region = multimodel_rep(model, AIS_bounds, AIS_resolution)

File ~\Anaconda3\envs\opyr2\lib\site-packages\opyrability.py:205, in multimodel_rep(model, bounds, resolution, polytopic_trace, perspective, plot, EDS_bound, EDS_resolution)
202 AS_coords = np.concatenate(Vertices_list, axis=0)
203 for i in range(len(mapped_region)):
--> 205 polyplot = _get_patch(mapped_region[i], linestyle="solid",
206 edgecolor=EDGES_COLORS, linewidth=EDGES_WIDTH,
207 facecolor=AS_COLOR)
208 ax.add_patch(polyplot)
211 lower_xaxis = mapped_region.bounding_box[0][0]

File ~\Anaconda3\envs\opyr2\lib\site-packages\polytope\polytope.py:2319, in _get_patch(poly1, **kwargs)
2317 ind = np.argsort(angle)
2318 # create patch
-> 2319 patch = mpl.patches.Polygon(V[ind, :], True, **kwargs)
2320 patch.set_zorder(0)
2321 return patch

TypeError: init() takes 2 positional arguments but 3 were given

Installation on macOS systems - please check

@jkitchin and @sanqdinh,

I have tested opyrability's installation, importing and usage on win64/linux64 sucessfully. Unfortunately, I don't have a macOS system. Does any of you do? If yes, do you mind testing the installation methods from https://github.com/CODES-group/opyrability#installation?

The pip one is a two-step procedure due to cyipopt's availability only on conda-forge. The conda "method" installs everything that is needed in a single terminal command (all is described in the link above).

Thanks in advance!

`OI_eval` breaks for 1D data due to `qhull` requirements

When space is 1D, OI_eval breaks due to

  File "...\shower_operability.py", line 24, in main
    OI = opy.OI_eval(TDS_region, EDS_bounds, perspective='inputs')
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\opyrability.py", line 423, in OI_eval 
    volumes_i.append(sp.spatial.ConvexHull(v_intersect).volume)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "_qhull.pyx", line 2431, in scipy.spatial._qhull.ConvexHull.__init__
  File "_qhull.pyx", line 279, in scipy.spatial._qhull._Qhull.__init__
ValueError: Need at least 2-D data

Clarify plot warning when non-2-dimensional

Either

  • Correct plot warning when dimension is not 2 to display non-2-dimensional instead of 3 or greater
  • Add verbosity to give different warnings when when dimensions are either 1 or >=3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.