From 4cfd7ebb53b8ae770de9e25bea52b4382246ca2b Mon Sep 17 00:00:00 2001 From: JavalVyas2000 Date: Fri, 9 Feb 2024 16:29:02 -0500 Subject: [PATCH] Adding the changes --- .github/workflows/core.yml | 2 +- idaes_examples/notebooks/_toc.yml | 24 +++++++++--------- .../OMLT/keras_surrogate/fingerprint.pb | 1 - .../OMLT/keras_surrogate/idaes_info.json | 1 - .../OMLT/keras_surrogate/keras_metadata.pb | 10 -------- .../OMLT/keras_surrogate/saved_model.pb | Bin 129984 -> 0 bytes .../variables/variables.data-00000-of-00001 | Bin 25335 -> 0 bytes .../keras_surrogate/variables/variables.index | Bin 2668 -> 0 bytes .../PySMO/pysmo_poly_surrogate.json | 1 - .../500_Points_DataSet.csv | 0 .../{SCO2_example => sco2}/CO2_flowsheet.png | Bin .../{SCO2_example/ALAMO => sco2}/__init__.py | 0 .../OMLT => sco2/alamo}/__init__.py | 0 .../ALAMO => sco2/alamo}/alamo_run.trc | 0 .../ALAMO => sco2/alamo}/alamo_surrogate.json | 0 .../alamo/alamo_training.ipynb} | 2 +- .../alamo/alamo_training_doc.ipynb} | 2 +- .../alamo/alamo_training_test.ipynb} | 2 +- .../alamo/alamo_training_usr.ipynb} | 2 +- .../alamo/flowsheet_optimization.ipynb} | 6 ++--- .../alamo/flowsheet_optimization.py} | 2 +- .../alamo/flowsheet_optimization_doc.ipynb} | 6 ++--- .../alamo/flowsheet_optimization_test.ipynb} | 6 ++--- .../alamo/flowsheet_optimization_usr.ipynb} | 6 ++--- .../ALAMO => sco2/alamo}/index.md | 0 .../alamo/properties.py} | 3 --- .../alamo/surrogate_embedding.ipynb} | 9 +++---- .../alamo/surrogate_embedding_doc.ipynb} | 9 +++---- .../alamo/surrogate_embedding_test.ipynb} | 9 +++---- .../alamo/surrogate_embedding_usr.ipynb} | 6 ++--- .../OMLT => sco2/omlt}/.mdl_co2.h5 | Bin .../PySMO => sco2/omlt}/__init__.py | 0 .../omlt/flowsheet_optimization.ipynb} | 6 ++--- .../omlt/flowsheet_optimization.py} | 2 +- .../omlt/flowsheet_optimization_doc.ipynb} | 6 ++--- .../omlt/flowsheet_optimization_test.ipynb} | 6 ++--- .../omlt/flowsheet_optimization_usr.ipynb} | 6 ++--- .../{SCO2_example/OMLT => sco2/omlt}/index.md | 0 .../omlt/keras_training.ipynb} | 2 +- .../omlt/keras_training_doc.ipynb} | 2 +- .../omlt/keras_training_test.ipynb} | 2 +- .../omlt/keras_training_usr.ipynb} | 2 +- .../omlt/properties.py} | 3 --- .../omlt/surrogate_embedding.ipynb} | 9 +++---- .../omlt/surrogate_embedding_doc.ipynb} | 9 +++---- .../omlt/surrogate_embedding_test.ipynb} | 9 +++---- .../omlt/surrogate_embedding_usr.ipynb} | 9 +++---- .../{SCO2_example => sco2/pysmo}/__init__.py | 0 .../pysmo/flowsheet_optimization.ipynb} | 6 ++--- .../pysmo/flowsheet_optimization.py} | 2 +- .../pysmo/flowsheet_optimization_doc.ipynb} | 6 ++--- .../pysmo/flowsheet_optimization_test.ipynb} | 6 ++--- .../pysmo/flowsheet_optimization_usr.ipynb} | 6 ++--- .../PySMO => sco2/pysmo}/index.md | 0 .../pysmo/properties.py} | 3 --- .../pysmo/pysmo_training.ipynb} | 2 +- .../pysmo/pysmo_training_doc.ipynb} | 2 +- .../pysmo/pysmo_training_test.ipynb} | 2 +- .../pysmo/pysmo_training_usr.ipynb} | 2 +- .../pysmo/surrogate_embedding.ipynb} | 9 +++---- .../pysmo/surrogate_embedding_doc.ipynb} | 9 +++---- .../pysmo/surrogate_embedding_test.ipynb} | 9 +++---- .../pysmo/surrogate_embedding_usr.ipynb} | 11 +++----- 63 files changed, 101 insertions(+), 156 deletions(-) delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/fingerprint.pb delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/idaes_info.json delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/keras_metadata.pb delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/saved_model.pb delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/variables/variables.data-00000-of-00001 delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/variables/variables.index delete mode 100644 idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/pysmo_poly_surrogate.json rename idaes_examples/notebooks/docs/surrogates/{SCO2_example => sco2}/500_Points_DataSet.csv (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example => sco2}/CO2_flowsheet.png (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO => sco2}/__init__.py (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT => sco2/alamo}/__init__.py (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO => sco2/alamo}/alamo_run.trc (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO => sco2/alamo}/alamo_surrogate.json (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_alamo_surrogate.ipynb => sco2/alamo/alamo_training.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_alamo_surrogate_doc.ipynb => sco2/alamo/alamo_training_doc.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_alamo_surrogate_test.ipynb => sco2/alamo/alamo_training_test.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_alamo_surrogate_usr.ipynb => sco2/alamo/alamo_training_usr.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate.ipynb => sco2/alamo/flowsheet_optimization.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_flowsheet_alamo.py => sco2/alamo/flowsheet_optimization.py} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_doc.ipynb => sco2/alamo/flowsheet_optimization_doc.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_test.ipynb => sco2/alamo/flowsheet_optimization_test.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_usr.ipynb => sco2/alamo/flowsheet_optimization_usr.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO => sco2/alamo}/index.md (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_properties_alamo_surrogate.py => sco2/alamo/properties.py} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding.ipynb => sco2/alamo/surrogate_embedding.ipynb} (96%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_usr.ipynb => sco2/alamo/surrogate_embedding_doc.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_test.ipynb => sco2/alamo/surrogate_embedding_test.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_doc.ipynb => sco2/alamo/surrogate_embedding_usr.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT => sco2/omlt}/.mdl_co2.h5 (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO => sco2/omlt}/__init__.py (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate.ipynb => sco2/omlt/flowsheet_optimization.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_flowsheet_keras.py => sco2/omlt/flowsheet_optimization.py} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_doc.ipynb => sco2/omlt/flowsheet_optimization_doc.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_test.ipynb => sco2/omlt/flowsheet_optimization_test.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_usr.ipynb => sco2/omlt/flowsheet_optimization_usr.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT => sco2/omlt}/index.md (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_keras_surrogate.ipynb => sco2/omlt/keras_training.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_keras_surrogate_doc.ipynb => sco2/omlt/keras_training_doc.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_keras_surrogate_test.ipynb => sco2/omlt/keras_training_test.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_keras_surrogate_usr.ipynb => sco2/omlt/keras_training_usr.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_properties_keras_surrogate.py => sco2/omlt/properties.py} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb => sco2/omlt/surrogate_embedding.ipynb} (96%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_doc.ipynb => sco2/omlt/surrogate_embedding_doc.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_usr.ipynb => sco2/omlt/surrogate_embedding_test.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_test.ipynb => sco2/omlt/surrogate_embedding_usr.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example => sco2/pysmo}/__init__.py (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate.ipynb => sco2/pysmo/flowsheet_optimization.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_flowsheet_pysmo.py => sco2/pysmo/flowsheet_optimization.py} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_doc.ipynb => sco2/pysmo/flowsheet_optimization_doc.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_test.ipynb => sco2/pysmo/flowsheet_optimization_test.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_usr.ipynb => sco2/pysmo/flowsheet_optimization_usr.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO => sco2/pysmo}/index.md (100%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_properties_pysmo_surrogate.py => sco2/pysmo/properties.py} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_pysmo_surrogate.ipynb => sco2/pysmo/pysmo_training.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_pysmo_surrogate_doc.ipynb => sco2/pysmo/pysmo_training_doc.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_pysmo_surrogate_test.ipynb => sco2/pysmo/pysmo_training_test.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_pysmo_surrogate_usr.ipynb => sco2/pysmo/pysmo_training_usr.ipynb} (99%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding.ipynb => sco2/pysmo/surrogate_embedding.ipynb} (96%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_doc.ipynb => sco2/pysmo/surrogate_embedding_doc.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_usr.ipynb => sco2/pysmo/surrogate_embedding_test.ipynb} (97%) rename idaes_examples/notebooks/docs/surrogates/{SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_test.ipynb => sco2/pysmo/surrogate_embedding_usr.ipynb} (96%) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index 848820b6..1c7213b5 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -78,7 +78,7 @@ jobs: run: | pwd ls idaes_examples - pytest -v idaes_examples --ignore=idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/ + pytest -v idaes_examples --ignore=idaes_examples/notebooks/docs/surrogates/sco2/alamo/ - name: Upload pytest-xdist worker logs if: success() || failure() uses: actions/upload-artifact@v3 diff --git a/idaes_examples/notebooks/_toc.yml b/idaes_examples/notebooks/_toc.yml index 1a2b68d4..33d21253 100644 --- a/idaes_examples/notebooks/_toc.yml +++ b/idaes_examples/notebooks/_toc.yml @@ -81,21 +81,21 @@ parts: - file: docs/surrogates/omlt/index sections: - file: docs/surrogates/omlt/keras_flowsheet_optimization_doc - - file: docs/surrogates/SCO2_example/ALAMO/index + - file: docs/surrogates/sco2/alamo/index sections: - - file: docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_doc - - file: docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_doc - - file: docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_doc - - file: docs/surrogates/SCO2_example/OMLT/index + - file: docs/surrogates/sco2/alamo/alamo_training_doc + - file: docs/surrogates/sco2/alamo/surrogate_embedding_doc + - file: docs/surrogates/sco2/alamo/flowsheet_optimization_doc + - file: docs/surrogates/sco2/omlt/index sections: - - file: docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_doc - - file: docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_doc - - file: docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_doc - - file: docs/surrogates/SCO2_example/PySMO/index + - file: docs/surrogates/sco2/omlt/omlt_training_doc + - file: docs/surrogates/sco2/omlt/surrogate_embedding_doc + - file: docs/surrogates/sco2/omlt/flowsheet_optimization_doc + - file: docs/surrogates/sco2/pysmo/index sections: - - file: docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_doc - - file: docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_doc - - file: docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_doc + - file: docs/surrogates/sco2/pysmo/pysmo_training_doc + - file: docs/surrogates/sco2/pysmo/surrogate_embedding_doc + - file: docs/surrogates/sco2/pysmo/flowsheet_optimization_doc - caption: Power generation chapters: - file: docs/power_gen/supercritical/index diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/fingerprint.pb b/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/fingerprint.pb deleted file mode 100644 index c94ddb92..00000000 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/fingerprint.pb +++ /dev/null @@ -1 +0,0 @@ -™Ù²¡™—ñû®¾¶âŽéدŠ-êô¢ËªºÕû[ ¿˜âãÒû‘Óç(÷úÝ칉¨¢W2 \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/idaes_info.json b/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/idaes_info.json deleted file mode 100644 index f582d087..00000000 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/idaes_info.json +++ /dev/null @@ -1 +0,0 @@ -{"input_scaler": {"expected_columns": ["pressure", "temperature"], "offset": {"pressure": 7.460891, "temperature": 306.215965}, "factor": {"pressure": 27.532923, "temperature": 693.756024}}, "output_scaler": {"expected_columns": ["enth_mol", "entr_mol"], "offset": {"enth_mol": -403924.714779, "entr_mol": -67.269005}, "factor": {"enth_mol": 43668.96112499997, "entr_mol": 88.088999}}, "input_labels": ["pressure", "temperature"], "output_labels": ["enth_mol", "entr_mol"], "input_bounds": {"pressure": [7, 40], "temperature": [306, 1000]}} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/keras_metadata.pb b/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/keras_metadata.pb deleted file mode 100644 index 0429ce74..00000000 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/keras_metadata.pb +++ /dev/null @@ -1,10 +0,0 @@ - -¥5root"_tf_keras_sequential*€5{"name": "sequential", "trainable": true, "expects_training_arg": true, "dtype": "float32", "batch_input_shape": null, "must_restore_from_config": false, "class_name": "Sequential", "config": {"name": "sequential", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": {"class_name": "__tuple__", "items": [null, 2]}, "dtype": "float32", "sparse": false, "ragged": false, "name": "dense_input"}}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "batch_input_shape": {"class_name": "__tuple__", "items": [null, 2]}, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "dtype": "float32", "units": 2, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}]}, "shared_object_id": 16, "input_spec": [{"class_name": "InputSpec", "config": {"dtype": null, "shape": {"class_name": "__tuple__", "items": [null, 2]}, "ndim": 2, "max_ndim": null, "min_ndim": null, "axes": {}}}], "build_input_shape": {"class_name": "TensorShape", "items": [null, 2]}, "is_graph_network": true, "full_save_spec": {"class_name": "__tuple__", "items": [[{"class_name": "TypeSpec", "type_spec": "tf.TensorSpec", "serialized": [{"class_name": "TensorShape", "items": [null, 2]}, "float32", "dense_input"]}], {}]}, "save_spec": {"class_name": "TypeSpec", "type_spec": "tf.TensorSpec", "serialized": [{"class_name": "TensorShape", "items": [null, 2]}, "float32", "dense_input"]}, "keras_version": "2.9.0", "backend": "tensorflow", "model_config": {"class_name": "Sequential", "config": {"name": "sequential", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": {"class_name": "__tuple__", "items": [null, 2]}, "dtype": "float32", "sparse": false, "ragged": false, "name": "dense_input"}, "shared_object_id": 0}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "batch_input_shape": {"class_name": "__tuple__", "items": [null, 2]}, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 1}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 2}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 3}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 4}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 5}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 6}, {"class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 7}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 8}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 9}, {"class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 10}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 11}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 12}, {"class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "dtype": "float32", "units": 2, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 13}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 14}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 15}]}}, "training_config": {"loss": "mse", "metrics": [[{"class_name": "MeanMetricWrapper", "config": {"name": "mae", "dtype": "float32", "fn": "mean_absolute_error"}, "shared_object_id": 18}, {"class_name": "MeanMetricWrapper", "config": {"name": "mse", "dtype": "float32", "fn": "mean_squared_error"}, "shared_object_id": 19}]], "weighted_metrics": null, "loss_weights": null, "optimizer_config": {"class_name": "Adam", "config": {"name": "Adam", "learning_rate": 0.0010000000474974513, "decay": 0.0, "beta_1": 0.8999999761581421, "beta_2": 0.9990000128746033, "epsilon": 1e-07, "amsgrad": false}}}}2 -°root.layer_with_weights-0"_tf_keras_layer*ù{"name": "dense", "trainable": true, "expects_training_arg": false, "dtype": "float32", "batch_input_shape": {"class_name": "__tuple__", "items": [null, 2]}, "stateful": false, "must_restore_from_config": false, "class_name": "Dense", "config": {"name": "dense", "trainable": true, "batch_input_shape": {"class_name": "__tuple__", "items": [null, 2]}, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 1}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 2}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 3, "input_spec": {"class_name": "InputSpec", "config": {"dtype": null, "shape": null, "ndim": null, "max_ndim": null, "min_ndim": 2, "axes": {"-1": 2}}, "shared_object_id": 20}, "build_input_shape": {"class_name": "TensorShape", "items": [null, 2]}}2 -Åroot.layer_with_weights-1"_tf_keras_layer*Ž{"name": "dense_1", "trainable": true, "expects_training_arg": false, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 4}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 5}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 6, "input_spec": {"class_name": "InputSpec", "config": {"dtype": null, "shape": null, "ndim": null, "max_ndim": null, "min_ndim": 2, "axes": {"-1": 20}}, "shared_object_id": 21}, "build_input_shape": {"class_name": "TensorShape", "items": [null, 20]}}2 -Åroot.layer_with_weights-2"_tf_keras_layer*Ž{"name": "dense_2", "trainable": true, "expects_training_arg": false, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 7}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 8}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 9, "input_spec": {"class_name": "InputSpec", "config": {"dtype": null, "shape": null, "ndim": null, "max_ndim": null, "min_ndim": 2, "axes": {"-1": 20}}, "shared_object_id": 22}, "build_input_shape": {"class_name": "TensorShape", "items": [null, 20]}}2 -Èroot.layer_with_weights-3"_tf_keras_layer*‘{"name": "dense_3", "trainable": true, "expects_training_arg": false, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "dtype": "float32", "units": 20, "activation": "tanh", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 10}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 11}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 12, "input_spec": {"class_name": "InputSpec", "config": {"dtype": null, "shape": null, "ndim": null, "max_ndim": null, "min_ndim": 2, "axes": {"-1": 20}}, "shared_object_id": 23}, "build_input_shape": {"class_name": "TensorShape", "items": [null, 20]}}2 -Éroot.layer_with_weights-4"_tf_keras_layer*’{"name": "dense_4", "trainable": true, "expects_training_arg": false, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "dtype": "float32", "units": 2, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}, "shared_object_id": 13}, "bias_initializer": {"class_name": "Zeros", "config": {}, "shared_object_id": 14}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "shared_object_id": 15, "input_spec": {"class_name": "InputSpec", "config": {"dtype": null, "shape": null, "ndim": null, "max_ndim": null, "min_ndim": 2, "axes": {"-1": 20}}, "shared_object_id": 24}, "build_input_shape": {"class_name": "TensorShape", "items": [null, 20]}}2 -¹mroot.keras_api.metrics.0"_tf_keras_metric*‚{"class_name": "Mean", "name": "loss", "dtype": "float32", "config": {"name": "loss", "dtype": "float32"}, "shared_object_id": 25}2 -ánroot.keras_api.metrics.1"_tf_keras_metric*ª{"class_name": "MeanMetricWrapper", "name": "mae", "dtype": "float32", "config": {"name": "mae", "dtype": "float32", "fn": "mean_absolute_error"}, "shared_object_id": 18}2 -àoroot.keras_api.metrics.2"_tf_keras_metric*©{"class_name": "MeanMetricWrapper", "name": "mse", "dtype": "float32", "config": {"name": "mse", "dtype": "float32", "fn": "mean_squared_error"}, "shared_object_id": 19}2 \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/saved_model.pb b/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/saved_model.pb deleted file mode 100644 index 1fdda89558990ac5fe432ee3c0074946255bf961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129984 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 TOtQ`yS;?r*#WKWG*x>&kYl?*= diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/variables/variables.data-00000-of-00001 b/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/variables/variables.data-00000-of-00001 deleted file mode 100644 index 15d19da861528d4c821cd0d59355d85e0f054438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25335 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 E0jh$j!vFvP diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/variables/variables.index b/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/keras_surrogate/variables/variables.index deleted file mode 100644 index 0cd2376b6b7307bb475d5528e117427288e57cac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2668 zcmZQzVB=tvV&Y(AkP(P?_HcFf4)FK%3vqPvagFzP@^W(A(YNw!k3*|lvo^}Sdgion_5zonOv-Ipr4#ynpdK)=NJ+ay4hL=^Z+@=FqP2x)i#($IKys)&#hpCNH}ydl+&7a$D< zkCsRS?Jy$FjxVIz@d4%!1{0y2#LCp7`0~t>jQH}@%=C|9K zoZ&;jr;x<)AsJ|i-UX{RQAKfLV@L#?tUfSm9N;l6$)5F`!bpM`_d*9`T-*DI{lrBQ zMAwFJkS^_)$+LiwWJGi%9gqh4T6=baImMB*!wqN>W29pQv00*_5U63#&c-N`1H6GB ztMydpOhdao)bFNwEND1%@g&zCLaNBt`<0!U9cD zF`T;jnK~6Bfk|OT2*^04px7SbBY{cbK^;g}iB)$ngEk+c(o9M%NsKqdUlB4WTmV(% ze_tQJ&o2XPED&h!TmdQG{r1;QE(N}n)a1lULK<#>G%TwYwBnNI%PaxbWFyQu diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/pysmo_poly_surrogate.json b/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/pysmo_poly_surrogate.json deleted file mode 100644 index 5258094b..00000000 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/pysmo_poly_surrogate.json +++ /dev/null @@ -1 +0,0 @@ -{"model_encoding": {"enth_mol": {"attr": {"regression_data_columns": ["pressure", "temperature"], "multinomials": 1, "additional_term_expressions": ["IndexedParam[pressure]*IndexedParam[temperature]*IndexedParam[temperature]", "IndexedParam[pressure]*IndexedParam[pressure]*IndexedParam[temperature]*IndexedParam[temperature]", "IndexedParam[pressure]*IndexedParam[pressure]*IndexedParam[temperature]", "IndexedParam[pressure]/IndexedParam[temperature]", "IndexedParam[temperature]/IndexedParam[pressure]"], "optimal_weights_array": [[-539145.2641931743], [-1572.9941129612596], [1028.1303702529963], [-41.89265612633253], [-2.854098382160082], [3.1084792045014056], [0.0040249321969904606], [-0.07298691795031877], [-2.7827021177926484e-06], [0.0006559340352560386], [7.62454692622566e-10], [4.50540106476475], [-0.0025967218940188964], [3.27147430041989e-05], [-0.05205092851352775], [149943.17003170087], [-3.5662256522946807]], "final_polynomial_order": 5, "errors": {"MAE": 116.22937611304296, "MSE": 39254.96789837278, "R2": 0.9997117200542968}, "extra_terms_feature_vector": ["IndexedParam[pressure]", "IndexedParam[temperature]"]}, "map": {"regression_data_columns": "list", "multinomials": "str", "additional_term_expressions": "other", "optimal_weights_array": "numpy", "final_polynomial_order": "str", "errors": "str", "extra_terms_feature_vector": "other"}}, "entr_mol": {"attr": {"regression_data_columns": ["pressure", "temperature"], "multinomials": 1, "additional_term_expressions": ["IndexedParam[pressure]*IndexedParam[temperature]*IndexedParam[temperature]", "IndexedParam[pressure]*IndexedParam[pressure]*IndexedParam[temperature]*IndexedParam[temperature]", "IndexedParam[pressure]*IndexedParam[pressure]*IndexedParam[temperature]", "IndexedParam[pressure]/IndexedParam[temperature]", "IndexedParam[temperature]/IndexedParam[pressure]"], "optimal_weights_array": [[-529.9581296941684], [-5.674476891947422], [3.6251620831469844], [-0.012206052330165947], [-0.010121999171951317], [0.0044164987227566545], [1.4212146246171698e-05], [-0.00012049491972756627], [-9.875650167428602e-09], [1.1673348430972035e-06], [2.72031843813476e-12], [0.010605178085763924], [-6.047902870413699e-06], [6.872924493404928e-08], [-0.00011146830780061758], [437.25207041949056], [0.0015391876304710196]], "final_polynomial_order": 5, "errors": {"MAE": 0.34548912239751245, "MSE": 0.3560561890323906, "R2": 0.9991570382929269}, "extra_terms_feature_vector": ["IndexedParam[pressure]", "IndexedParam[temperature]"]}, "map": {"regression_data_columns": "list", "multinomials": "str", "additional_term_expressions": "other", "optimal_weights_array": "numpy", "final_polynomial_order": "str", "errors": "str", "extra_terms_feature_vector": "other"}}}, "input_labels": ["pressure", "temperature"], "output_labels": ["enth_mol", "entr_mol"], "input_bounds": {"pressure": [7, 40], "temperature": [306, 1000]}, "surrogate_type": "poly"} \ No newline at end of file diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/500_Points_DataSet.csv b/idaes_examples/notebooks/docs/surrogates/sco2/500_Points_DataSet.csv similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/500_Points_DataSet.csv rename to idaes_examples/notebooks/docs/surrogates/sco2/500_Points_DataSet.csv diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/CO2_flowsheet.png b/idaes_examples/notebooks/docs/surrogates/sco2/CO2_flowsheet.png similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/CO2_flowsheet.png rename to idaes_examples/notebooks/docs/surrogates/sco2/CO2_flowsheet.png diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/__init__.py b/idaes_examples/notebooks/docs/surrogates/sco2/__init__.py similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/__init__.py rename to idaes_examples/notebooks/docs/surrogates/sco2/__init__.py diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/__init__.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/__init__.py similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/__init__.py rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/__init__.py diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/alamo_run.trc b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_run.trc similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/alamo_run.trc rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_run.trc diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/alamo_surrogate.json b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_surrogate.json similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/alamo_surrogate.json rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_surrogate.json diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb index 89fc9c7b..74963d2b 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training.ipynb @@ -567,7 +567,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_alamo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb index 76fefb3c..6347febe 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_doc.ipynb @@ -567,7 +567,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_alamo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_doc.md) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.md) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb index e54ba5a4..bf1b4b99 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_test.ipynb @@ -567,7 +567,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_alamo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_test.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb index 14b624a2..b9bafbf0 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_alamo_surrogate_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/alamo_training_usr.ipynb @@ -567,7 +567,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_alamo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_usr.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb index 01a0e48b..55b9d0c2 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - SCO2_flowsheet_optimization_alamo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_alamo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.py similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo.py rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.py index 907fa645..7190e06b 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.py @@ -43,7 +43,7 @@ from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption from idaes.core.util.model_statistics import degrees_of_freedom from idaes.core.util.initialization import propagate_state -from SCO2_properties_alamo_surrogate import SCO2ParameterBlock +from properties import SCO2ParameterBlock import idaes.logger as idaeslog def main(): diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb index b53e1d31..7603d3e1 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - SCO2_flowsheet_optimization_alamo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_alamo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb index b53e1d31..7603d3e1 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - SCO2_flowsheet_optimization_alamo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_alamo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb index b53e1d31..7603d3e1 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - SCO2_flowsheet_optimization_alamo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with ALAMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_alamo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/index.md b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/index.md similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/index.md rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/index.md diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate.py b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate.py rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py index 19d12d08..3b2f8bbb 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/properties.py @@ -18,9 +18,6 @@ """ -# Changes the divide behavior to not do integer division -from __future__ import division - # Import Python libraries import logging diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb similarity index 96% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb index db7155b1..430fdbe4 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding.ipynb @@ -36,7 +36,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_alamo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -66,9 +66,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -192,7 +189,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the SCO2_alamo_surrogate.ipynb file) using the Alamopy Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training.ipynb file) using the Alamopy Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -452,7 +449,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_alamo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb index 6203f48f..31b5027b 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_doc.ipynb @@ -36,7 +36,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_alamo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -66,9 +66,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -192,7 +189,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the SCO2_alamo_surrogate_usr.ipynb file) using the Alamopy Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training_doc.md file) using the Alamopy Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -452,7 +449,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_alamo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_usr.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_doc.md). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.md). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb index ec7eb0a4..9640004e 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_test.ipynb @@ -36,7 +36,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_alamo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -66,9 +66,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -192,7 +189,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the SCO2_alamo_surrogate_test.ipynb file) using the Alamopy Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training_test.ipynb file) using the Alamopy Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -452,7 +449,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_alamo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_test.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_test.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb index 001452b8..c70b43e1 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_properties_alamo_surrogate_embedding_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/alamo/surrogate_embedding_usr.ipynb @@ -36,7 +36,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_alamo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -192,7 +192,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the SCO2_alamo_surrogate_doc.md file) using the Alamopy Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called alamo_surrogate (look at the alamo_training_usr.ipynb file) using the Alamopy Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -452,7 +452,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_alamo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/ALAMO/SCO2_flowsheet_alamo_surrogate_doc.md). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.md). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/alamo/flowsheet_optimization_usr.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/.mdl_co2.h5 b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/.mdl_co2.h5 similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/.mdl_co2.h5 rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/.mdl_co2.h5 diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/__init__.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/__init__.py similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/__init__.py rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/__init__.py diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb index 0dca17be..827abb3d 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - SCO2_flowsheet_optimization_keras_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -107,7 +107,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_keras_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -120,7 +120,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.py similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras.py rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.py index 97a43954..f8658c3e 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.py @@ -43,7 +43,7 @@ from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption from idaes.core.util.model_statistics import degrees_of_freedom from idaes.core.util.initialization import propagate_state -from SCO2_properties_keras_surrogate import SCO2ParameterBlock +from properties import SCO2ParameterBlock import idaes.logger as idaeslog def main(): diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb index bc4e9f41..c20d883f 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - SCO2_flowsheet_optimization_keras_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_keras_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb index ceabe341..316819c4 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - SCO2_flowsheet_optimization_keras_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_keras_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb index ceabe341..316819c4 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - SCO2_flowsheet_optimization_keras_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with OMLT Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_keras_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/index.md b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/index.md similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/index.md rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/index.md diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb index 18f11772..ecb167ba 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training.ipynb @@ -1085,7 +1085,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_keras_surrogate_embedding.ipynb](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding.ipynb](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb index 20615f2e..565b6514 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_doc.ipynb @@ -1075,7 +1075,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_keras_surrogate_embedding_doc.md](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb_doc.md) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding_doc.md](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb_doc.md) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb index b1cf32a4..bff0eb63 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_test.ipynb @@ -1075,7 +1075,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_keras_surrogate_embedding_test.ipynb](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb_test.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding_test.ipynb](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb_test.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb index a2caf1f2..2f3ab63c 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_keras_surrogate_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/keras_training_usr.ipynb @@ -1075,7 +1075,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_keras_surrogate_embedding_usr.ipynb](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb_usr.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding_usr.ipynb](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb_usr.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate.py b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate.py rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py index c3a358b2..7ebce138 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/properties.py @@ -23,9 +23,6 @@ Valid Temperature Range = 306.25 K to 1000 K """ -# Changes the divide behavior to not do integer division -from __future__ import division - # Import Python libraries import logging diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb similarity index 96% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb index 5409a830..58726e40 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding.ipynb @@ -36,7 +36,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_keras_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -66,9 +66,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -192,7 +189,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the SCO2_keras_surrogate.ipynb file) using the keras Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training.ipynb file) using the keras Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -447,7 +444,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_keras_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb index 63687e26..82ef41ba 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_doc.ipynb @@ -35,7 +35,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_keras_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -65,9 +65,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the SCO2_keras_surrogate_doc.md file) using the keras Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training_doc.md file) using the keras Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -446,7 +443,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_keras_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_doc.md). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.md). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_doc.md). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.md). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb index db5ff278..12e2a7ac 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_test.ipynb @@ -35,7 +35,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_keras_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -65,9 +65,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the SCO2_keras_surrogate_usr.ipynb file) using the keras Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training_test.ipynb file) using the keras Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -446,7 +443,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_keras_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_usr.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_test.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb index 12a59982..67a78b77 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_properties_keras_surrogate_embedding_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/omlt/surrogate_embedding_usr.ipynb @@ -35,7 +35,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_keras_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -65,9 +65,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the SCO2_keras_surrogate_test.ipynb file) using the keras Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called keras_surrogate (look at the keras_training_usr.ipynb file) using the keras Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -446,7 +443,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_keras_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/OMLT/SCO2_flowsheet_keras_surrogate_test.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/omlt/flowsheet_optimization_usr.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/__init__.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/__init__.py similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/__init__.py rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/__init__.py diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb index 309674e0..a535274c 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - SCO2_flowsheet_optimization_pysmo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "\n", "Maintainer: Javal Vyas\n", @@ -99,7 +99,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_pysmo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -112,7 +112,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.py similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo.py rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.py index d0911dbc..80f14165 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.py @@ -43,7 +43,7 @@ from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption from idaes.core.util.model_statistics import degrees_of_freedom from idaes.core.util.initialization import propagate_state -from SCO2_properties_pysmo_surrogate import SCO2ParameterBlock +from properties import SCO2ParameterBlock import idaes.logger as idaeslog def main(): diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb index fffedd14..5ab2578c 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - SCO2_flowsheet_optimization_pysmo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_pysmo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb index fffedd14..5ab2578c 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - SCO2_flowsheet_optimization_pysmo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_pysmo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb index fffedd14..5ab2578c 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb @@ -24,7 +24,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - SCO2_flowsheet_optimization_pysmo_surrogate (Part 3)\n", + "# Supercritical CO2 Property Surrogate with PySMO Surrogate Object - flowsheet_optimization (Part 3)\n", "\n", "Maintainer: Javal Vyas\n", "\n", @@ -97,7 +97,7 @@ "from idaes.models.unit_models.pressure_changer import ThermodynamicAssumption\n", "from idaes.core.util.model_statistics import degrees_of_freedom\n", "from idaes.core.util.initialization import propagate_state\n", - "from SCO2_properties_pysmo_surrogate import SCO2ParameterBlock\n", + "from properties import SCO2ParameterBlock\n", "\n", "import idaes.logger as idaeslog\n", "\n", @@ -110,7 +110,7 @@ "source": [ "# 2. Constructing the flowsheet\n", "\n", - "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the SCO2_properties_keras_surrogate.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", + "To construct the flowsheet we need to define a ConcreteModel using pyomo and then add a FlowsheetBlock to the ConcreteModel. Here since we are focusing on the steady state process, we shall have the dynamic flag as False in the FlowsheetBlock. Next, we define the properties in the FlowsheetBlock that we imported from the properties.py file. Then start adding the unit models to the FlowsheetBlock with the suitable arguements, after which we connect them using Arcs as in the flowsheet above. \n", "\n", "Once we have the connected flowsheet, we initialize individual unit models. Before initializing, we fix desired variables for the desired behavior of the unit model and then use `propagate_state` to pass on the state variables to next unit model in the flowsheet. After completely initializing the flowsheet, we convert the network to a mathematical form by using `network.expand_arcs` from the TransformationFactory and apply it on the flowsheet block. Then we call the solver and solve the flowsheet to calculate the total work in the process. " ] diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/index.md b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/index.md similarity index 100% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/index.md rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/index.md diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate.py b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate.py rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py index bb9d9013..accad220 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate.py +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/properties.py @@ -23,9 +23,6 @@ """ -# Changes the divide behavior to not do integer division -from __future__ import division - # Import Python libraries import logging diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb index 3cc125c6..02898325 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training.ipynb @@ -627,7 +627,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_pysmo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb index 7627974f..6fbb5b53 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_doc.ipynb @@ -627,7 +627,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_pysmo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_doc.md) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.md) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb index f0a8b7a9..96cce342 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_test.ipynb @@ -627,7 +627,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_pysmo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_test.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb similarity index 99% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb index 48499bba..b489f502 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_pysmo_surrogate_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/pysmo_training_usr.ipynb @@ -627,7 +627,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [SCO2_properties_pysmo_surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_usr.ipynb) file." + "Now, the surrogate is trained and validated, we shall embed it in the property package, which is demonstrated in the [surrogate_embedding](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb) file." ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb similarity index 96% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb index 67e4c6c4..56df32cb 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding.ipynb @@ -34,7 +34,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_pysmo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -64,9 +64,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the SCO2_pysmo_surrogate.ipynb file) using the PySMO Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training.ipynb file) using the PySMO Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -449,7 +446,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_pysmo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_doc.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_doc.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb index 2b0df77f..3c647096 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_doc.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_doc.ipynb @@ -34,7 +34,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_pysmo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -64,9 +64,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the SCO2_pysmo_surrogate_doc.md file) using the PySMO Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training_doc.md file) using the PySMO Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -449,7 +446,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_pysmo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_doc.md). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.md). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_doc.md). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_doc.md). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_usr.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb similarity index 97% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_usr.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb index 725d6397..df1dfb7d 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_usr.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_test.ipynb @@ -34,7 +34,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_pysmo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -64,9 +64,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the SCO2_pysmo_surrogate_usr.ipynb file) using the PySMO Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training_test.ipynb file) using the PySMO Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -449,7 +446,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_pysmo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_usr.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_test.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb). " ] } ], diff --git a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_test.ipynb b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb similarity index 96% rename from idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_test.ipynb rename to idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb index ef19a6dc..9e9b06b6 100644 --- a/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_properties_pysmo_surrogate_embedding_test.ipynb +++ b/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/surrogate_embedding_usr.ipynb @@ -34,7 +34,7 @@ "\n", "Here we shall see how to integrate the trained surrogate in the custom property package. One can read more about making a properties package from read the docs. To integrate the surrogate we first define the physical paramter block which will return the properties based on the state variables. State variables would be called from the State Block as Pyomo variables. We will define the surrogate input and output as pyomo variables as well. Once we have defined the variables in the state block then we define our surrogate block.\n", "\n", - "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"SCO2_properties_pysmo_surrogate.py\" file which is how embedding file should look like. \n", + "*NOTE:* For ease of explaination the property package is written in \".ipynb\" format, ideally it should be in a python script. Each class of this package is separated in different cell for the same reason, in practive all the classes in this notebook should be part of the same python script. This folder includes \"properties.py\" file which is how embedding file should look like. \n", "\n", "### 1.1 Steps in Creating a Property Package\n", "Creating a new property package can be broken down into the following steps, which will be demonstrated in the next part of this tutorial.\n", @@ -64,9 +64,6 @@ "metadata": {}, "outputs": [], "source": [ - "# Changes the divide behavior to not do integer division\n", - "from __future__ import division\n", - "\n", "# Import Python libraries\n", "import logging\n", "\n", @@ -175,7 +172,7 @@ " 'length': units.m,\n", " 'mass': units.kg,\n", " 'amount': units.mol,\n", - " 'temperature': units.K})" + " 'temperatureo': units.K})" ] }, { @@ -191,7 +188,7 @@ "We start by defining the 5 state variables: flow_mol, pressure, temperature, enth_mol and entr_mol as the Pyomo Var, each of this variable has a unit for unit consistency. This is done in _make_state_vars function. We get the enth_mol and entr_mol variables from trained surrogate which we define in this function as well. To get the output variables from the surrogate:\n", "\n", "1. Define the input and output variables to the trained surrogate\n", - "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the SCO2_pysmo_surrogate_test.ipynb file) using the PySMO Surrogate API of IDAES package\n", + "2. Load the surrogate from the folder it is saved in, here it is saved in the folder called pysmo_surrogate (look at the pysmo_training_usr.ipynb file) using the PySMO Surrogate API of IDAES package\n", "3. Define a `SurrogateBlock` and call the build_model method on the block with the input variables, output variables, model formulation and the loaded surrogate as the arguements. \n", "4. Define the constraints necessary for ensuring physical feasibility of the system like the mass balance and energy balance. Check for the state variables to be within the bounds. \n" ] @@ -449,7 +446,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [SCO2_flowsheet_pysmo_surrogate](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/SCO2_example/PySMO/SCO2_flowsheet_pysmo_surrogate_test.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_test.ipynb). " + "Now we have our property package ready for being used in the flowsheet for optimization. We shall see that in the next part of this tutorial, [flowsheet_optimization](https://github.com/IDAES/examples/blob/supercritcial_CO2_example/idaes_examples/notebooks/docs/surrogates/sco2/pysmo/flowsheet_optimization_usr.ipynb). To learn in detail about making a custom property package, one should go through [Property Package Example](https://github.com/IDAES/examples/blob/main/idaes_examples/notebooks/docs/properties/custom/custom_physical_property_packages_usr.ipynb). " ] } ],