Skip to main content

Connecting Process Network Synthesis (PNS) to Modern Programming Ecosystems

Project description

Pgraph : Process Graphs for Process Network Synthesis (PNS)

Pgraphlogo DOI

Table of Contents

About The Project

This project aims at enabling the classical P-graph Framework (www.p-graph.org) to interface with modern Python programming ecosystems. The backend solver is the original executable from P-graph, staying true to the original implementation of P-graph. For manual network manipulation, the P-graph studio can be downloaded from this link: https://p-graph.org/downloads/.

Getting Started

Install this library either from the official pypi or from this Github repository:

Install a Stable Version (pypi)

pip install ProcessGraph

Install most updated version from Github

In a environment terminal or CMD:

pip install git+https://github.com/tsyet12/Pgraph

Usage Examples

See examples for all code examples.

Simple Example

from Pgraph.Pgraph import Pgraph #This is our Pgraph library
import networkx as nx
import matplotlib.pyplot as plt
##### STEP 1 : Problem Specification ######
G = nx.DiGraph()
G.add_node("M1",names="Product D",type='product',flow_rate_lower_bound=100, flow_rate_upper_bound=100)
G.add_node("M2",names="Chemical A",type='raw_material',price=200,flow_rate_lower_bound=0)
G.add_node("M3",names="Chemical B", type='raw_material',price=100,flow_rate_lower_bound=0)
G.add_node("M4",names="Chemical C", type='raw_material',price=10,flow_rate_lower_bound=0)
G.add_node("O1",names="Reactor 1",fix_cost=2000, proportional_cost=400)
G.add_node("O2", names="Reactor 2",fix_cost=1000, proportional_cost=400)
G.add_edge("M2","O1", weight = 1)
G.add_edge("M3","O2", weight = 1)
G.add_edge("M4","O2", weight = 2)
G.add_edge("O1","M1", weight = 0.7) 
G.add_edge("O2","M1", weight = 0.9) 
ME=[["O1","O2"]]  #Reactor 1 and Reactor 2 are mutually excluded. Only one can be chosen as solution.

#### Step 2:  Setup Solver ####
P=Pgraph(problem_network=G, mutual_exclusion=ME, solver="INSIDEOUT",max_sol=100)

#### Step 2.1:  Plot Problem #####
ax1=P.plot_problem(figsize=(5,5))
ax1.set_xlim(0,200)
plt.show()
##################################

fullnetwork

#### Step 3: Run ####
P.run()
#### Step 3.1: Plot Solution########
total_sol_num=P.get_sol_num() 
for i in range(total_sol_num): # Here we loop through all the solutions to plot everything
    ax=P.plot_solution(sol_num=i) #Plot Solution Function
    ax.set_xlim(0,200)
    plt.show()

example sol2

#### Step 3.2: Export to P-graph Studio ####
from google.colab import files #This is only for google colab
string = P.to_studio(path='./',verbose=False) #export to p-graph studio
files.download("./studio_file.pgsx") #download for google colab
#Note: Please be reminded to press "Generate Layout" button in P-graph Studio after opening

Press "Generate Layout" Button:

layout

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b testbranch/prep)
  3. Commit your Changes (git commit -m 'Improve testbranch/prep')
  4. Push to the Branch (git push origin testbranch/prep)
  5. Open a Pull Request

License

Distributed under the Open Sourced BSD-2-Clause License. See LICENSE for more information.

Contact

Main Developer:

Sin Yong Teng sinyong.teng@ru.nl or tsyet12@gmail.com Radboud University Nijmegen

References

Friedler, F., Tarjan, K., Huang, Y.W. and Fan, L.T., 1992. Graph-theoretic approach to process synthesis: axioms and theorems. Chemical Engineering Science, 47(8), pp.1973-1988.

Friedler, F., Tarjan, K., Huang, Y.W. and Fan, L.T., 1992. Combinatorial algorithms for process synthesis. Computers & chemical engineering, 16, pp.S313-S320.

Friedler, F., Tarjan, K., Huang, Y.W. and Fan, L.T., 1993. Graph-theoretic approach to process synthesis: polynomial algorithm for maximal structure generation. Computers & Chemical Engineering, 17(9), pp.929-942.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ProcessGraph-1.1.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

ProcessGraph-1.1-py3.8.egg (2.1 MB view details)

Uploaded Source

File details

Details for the file ProcessGraph-1.1.tar.gz.

File metadata

  • Download URL: ProcessGraph-1.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.7

File hashes

Hashes for ProcessGraph-1.1.tar.gz
Algorithm Hash digest
SHA256 a4864c7363d93b342d3de6932014ba5aa832fb3f12828cf83e836d1f35a4fd40
MD5 a0625132e2d500397fb1ac12bb8e111f
BLAKE2b-256 5db53289199ecbf0e09ea59362c5a332b83f269cd78fc5f6c69c429bbd307dc1

See more details on using hashes here.

File details

Details for the file ProcessGraph-1.1-py3.8.egg.

File metadata

  • Download URL: ProcessGraph-1.1-py3.8.egg
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.7

File hashes

Hashes for ProcessGraph-1.1-py3.8.egg
Algorithm Hash digest
SHA256 56ee52f66e016187d83f009de72ce2c27f046e46ce0a04b0f0602394193f5162
MD5 4356ae1bafea85f7404a48b43218bbfc
BLAKE2b-256 868de6a81b7d3b4acffa3e6d73b4f96525c16529d4a57e8f95bfb4a582c2dce8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page