diff --git a/docs/doctrees/bibliography.doctree b/docs/doctrees/bibliography.doctree new file mode 100644 index 0000000..de36fd3 Binary files /dev/null and b/docs/doctrees/bibliography.doctree differ diff --git a/docs/doctrees/environment.pickle b/docs/doctrees/environment.pickle index 041f315..76f9eb5 100644 Binary files a/docs/doctrees/environment.pickle and b/docs/doctrees/environment.pickle differ diff --git a/docs/doctrees/examples/c3splitter.doctree b/docs/doctrees/examples/c3splitter.doctree index 8906c20..5af4e0e 100644 Binary files a/docs/doctrees/examples/c3splitter.doctree and b/docs/doctrees/examples/c3splitter.doctree differ diff --git a/docs/doctrees/examples/cpu.doctree b/docs/doctrees/examples/cpu.doctree index add4c57..ff1f477 100644 Binary files a/docs/doctrees/examples/cpu.doctree and b/docs/doctrees/examples/cpu.doctree differ diff --git a/docs/doctrees/examples/ic4.doctree b/docs/doctrees/examples/ic4.doctree index bffc35c..d77f7a6 100644 Binary files a/docs/doctrees/examples/ic4.doctree and b/docs/doctrees/examples/ic4.doctree differ diff --git a/docs/doctrees/examples/tutorials.doctree b/docs/doctrees/examples/tutorials.doctree index c38def8..db78e52 100644 Binary files a/docs/doctrees/examples/tutorials.doctree and b/docs/doctrees/examples/tutorials.doctree differ diff --git a/docs/doctrees/gui/diff_data_tab.doctree b/docs/doctrees/gui/diff_data_tab.doctree index 48956f4..7af362f 100644 Binary files a/docs/doctrees/gui/diff_data_tab.doctree and b/docs/doctrees/gui/diff_data_tab.doctree differ diff --git a/docs/doctrees/gui/gui_index.doctree b/docs/doctrees/gui/gui_index.doctree index b1bc26f..5234bb7 100644 Binary files a/docs/doctrees/gui/gui_index.doctree and b/docs/doctrees/gui/gui_index.doctree differ diff --git a/docs/doctrees/gui/load_sim_tab.doctree b/docs/doctrees/gui/load_sim_tab.doctree index 651a2a8..9e025ef 100644 Binary files a/docs/doctrees/gui/load_sim_tab.doctree and b/docs/doctrees/gui/load_sim_tab.doctree differ diff --git a/docs/doctrees/gui/metamodel_tab.doctree b/docs/doctrees/gui/metamodel_tab.doctree index 9da1804..53194b0 100644 Binary files a/docs/doctrees/gui/metamodel_tab.doctree and b/docs/doctrees/gui/metamodel_tab.doctree differ diff --git a/docs/doctrees/gui/optimization_tab.doctree b/docs/doctrees/gui/optimization_tab.doctree index 80fa4fb..b800f97 100644 Binary files a/docs/doctrees/gui/optimization_tab.doctree and b/docs/doctrees/gui/optimization_tab.doctree differ diff --git a/docs/doctrees/gui/reduced_space_tab.doctree b/docs/doctrees/gui/reduced_space_tab.doctree index be4d019..5eeb94a 100644 Binary files a/docs/doctrees/gui/reduced_space_tab.doctree and b/docs/doctrees/gui/reduced_space_tab.doctree differ diff --git a/docs/doctrees/gui/sampling_tab.doctree b/docs/doctrees/gui/sampling_tab.doctree index 2c29b0e..3ee2aec 100644 Binary files a/docs/doctrees/gui/sampling_tab.doctree and b/docs/doctrees/gui/sampling_tab.doctree differ diff --git a/docs/doctrees/gui/soc_tab.doctree b/docs/doctrees/gui/soc_tab.doctree index 8738c32..c9a39e7 100644 Binary files a/docs/doctrees/gui/soc_tab.doctree and b/docs/doctrees/gui/soc_tab.doctree differ diff --git a/docs/doctrees/index.doctree b/docs/doctrees/index.doctree index c2022ab..5673a2f 100644 Binary files a/docs/doctrees/index.doctree and b/docs/doctrees/index.doctree differ diff --git a/docs/doctrees/intro.doctree b/docs/doctrees/intro.doctree index bf32425..a19a3b6 100644 Binary files a/docs/doctrees/intro.doctree and b/docs/doctrees/intro.doctree differ diff --git a/docs/doctrees/overview/mtc.doctree b/docs/doctrees/overview/mtc.doctree index 3e6eb64..2f873af 100644 Binary files a/docs/doctrees/overview/mtc.doctree and b/docs/doctrees/overview/mtc.doctree differ diff --git a/docs/doctrees/overview/z_mtc.doctree b/docs/doctrees/overview/z_mtc.doctree new file mode 100644 index 0000000..1b3bf8b Binary files /dev/null and b/docs/doctrees/overview/z_mtc.doctree differ diff --git a/docs/doctrees/theory/optimization.doctree b/docs/doctrees/theory/optimization.doctree index 64a3514..c00f2e1 100644 Binary files a/docs/doctrees/theory/optimization.doctree and b/docs/doctrees/theory/optimization.doctree differ diff --git a/docs/doctrees/theory/soc.doctree b/docs/doctrees/theory/soc.doctree index 857107a..bf6258f 100644 Binary files a/docs/doctrees/theory/soc.doctree and b/docs/doctrees/theory/soc.doctree differ diff --git a/docs/doctrees/theory/surrogates.doctree b/docs/doctrees/theory/surrogates.doctree index 9e456a1..be1d2d1 100644 Binary files a/docs/doctrees/theory/surrogates.doctree and b/docs/doctrees/theory/surrogates.doctree differ diff --git a/docs/doctrees/theory/theory_index.doctree b/docs/doctrees/theory/theory_index.doctree index 7eb6464..8580d9c 100644 Binary files a/docs/doctrees/theory/theory_index.doctree and b/docs/doctrees/theory/theory_index.doctree differ diff --git a/docs/doctrees/zbibliography.doctree b/docs/doctrees/zbibliography.doctree new file mode 100644 index 0000000..aec7645 Binary files /dev/null and b/docs/doctrees/zbibliography.doctree differ diff --git a/docs/html/_images/diff_data_completed.png b/docs/html/_images/diff_data_completed.png new file mode 100644 index 0000000..56ee0f8 Binary files /dev/null and b/docs/html/_images/diff_data_completed.png differ diff --git a/docs/html/_images/diff_data_dace_function.png b/docs/html/_images/diff_data_dace_function.png new file mode 100644 index 0000000..ad8cd0f Binary files /dev/null and b/docs/html/_images/diff_data_dace_function.png differ diff --git a/docs/html/_images/diff_data_high_order_data_gen.png b/docs/html/_images/diff_data_high_order_data_gen.png new file mode 100644 index 0000000..f41d1e4 Binary files /dev/null and b/docs/html/_images/diff_data_high_order_data_gen.png differ diff --git a/docs/html/_images/diff_data_main.png b/docs/html/_images/diff_data_main.png new file mode 100644 index 0000000..f42f181 Binary files /dev/null and b/docs/html/_images/diff_data_main.png differ diff --git a/docs/html/_images/diff_data_reading_gains.png b/docs/html/_images/diff_data_reading_gains.png new file mode 100644 index 0000000..52658d1 Binary files /dev/null and b/docs/html/_images/diff_data_reading_gains.png differ diff --git a/docs/html/_images/diff_data_remove_cvs.png b/docs/html/_images/diff_data_remove_cvs.png new file mode 100644 index 0000000..8828401 Binary files /dev/null and b/docs/html/_images/diff_data_remove_cvs.png differ diff --git a/docs/html/_images/diff_data_training_dialog.png b/docs/html/_images/diff_data_training_dialog.png new file mode 100644 index 0000000..25637da Binary files /dev/null and b/docs/html/_images/diff_data_training_dialog.png differ diff --git a/docs/html/_images/diff_data_training_dialog_window.png b/docs/html/_images/diff_data_training_dialog_window.png new file mode 100644 index 0000000..864005a Binary files /dev/null and b/docs/html/_images/diff_data_training_dialog_window.png differ diff --git a/docs/html/_images/plot_soc.svg b/docs/html/_images/plot_soc.svg index ad3685b..b1c8350 100644 --- a/docs/html/_images/plot_soc.svg +++ b/docs/html/_images/plot_soc.svg @@ -1,3 +1,3 @@ -
Loss for control
structure 1
Loss for control...
Objective
Function 
Objective...
d^*
Reoptimized   
Reoptimized J_{opt}(d)  
Self-Optimizing
Control Structure 1
Self-Optimizing...
Self-Optimizing
Control Structure 2
Self-Optimizing...
Loss for control
structure 2
Loss for control...
Distrubances
Distrubances d
Viewer does not support full SVG 1.1
\ No newline at end of file +
Loss for control
structure 1
Loss for control...
Objective
Function 
Objective...
d^*
Reoptimized   
Reoptimized J_{opt}(d)  
Self-Optimizing
Control Structure 1
Self-Optimizing...
Self-Optimizing
Control Structure 2
Self-Optimizing...
Loss for control
structure 2
Loss for control...
Disturbances
Disturbances d
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/html/_images/reduced_cases_config.png b/docs/html/_images/reduced_cases_config.png new file mode 100644 index 0000000..e316d97 Binary files /dev/null and b/docs/html/_images/reduced_cases_config.png differ diff --git a/docs/html/_images/reduced_space_completed.png b/docs/html/_images/reduced_space_completed.png new file mode 100644 index 0000000..1bf9720 Binary files /dev/null and b/docs/html/_images/reduced_space_completed.png differ diff --git a/docs/html/_images/reduced_space_dialogbox_sim_file.png b/docs/html/_images/reduced_space_dialogbox_sim_file.png new file mode 100644 index 0000000..b6fba7c Binary files /dev/null and b/docs/html/_images/reduced_space_dialogbox_sim_file.png differ diff --git a/docs/html/_images/reduced_space_main.png b/docs/html/_images/reduced_space_main.png new file mode 100644 index 0000000..c6dbf2e Binary files /dev/null and b/docs/html/_images/reduced_space_main.png differ diff --git a/docs/html/_images/reduced_space_open_sampling_assistant.png b/docs/html/_images/reduced_space_open_sampling_assistant.png new file mode 100644 index 0000000..bd1e12e Binary files /dev/null and b/docs/html/_images/reduced_space_open_sampling_assistant.png differ diff --git a/docs/html/_images/reduced_space_range.png b/docs/html/_images/reduced_space_range.png new file mode 100644 index 0000000..be764d6 Binary files /dev/null and b/docs/html/_images/reduced_space_range.png differ diff --git a/docs/html/_images/reduced_space_sampled_data.png b/docs/html/_images/reduced_space_sampled_data.png new file mode 100644 index 0000000..0090040 Binary files /dev/null and b/docs/html/_images/reduced_space_sampled_data.png differ diff --git a/docs/html/_images/reduced_space_sampling_assistant.png b/docs/html/_images/reduced_space_sampling_assistant.png new file mode 100644 index 0000000..b1f119a Binary files /dev/null and b/docs/html/_images/reduced_space_sampling_assistant.png differ diff --git a/docs/html/_images/reduced_space_sampling_finished.png b/docs/html/_images/reduced_space_sampling_finished.png new file mode 100644 index 0000000..eb4a255 Binary files /dev/null and b/docs/html/_images/reduced_space_sampling_finished.png differ diff --git a/docs/html/_images/reduced_space_sampling_running.png b/docs/html/_images/reduced_space_sampling_running.png new file mode 100644 index 0000000..5f08679 Binary files /dev/null and b/docs/html/_images/reduced_space_sampling_running.png differ diff --git a/docs/html/_images/reduced_space_var_act_left_side.png b/docs/html/_images/reduced_space_var_act_left_side.png new file mode 100644 index 0000000..4e57327 Binary files /dev/null and b/docs/html/_images/reduced_space_var_act_left_side.png differ diff --git a/docs/html/_images/reduced_space_var_act_right_side.png b/docs/html/_images/reduced_space_var_act_right_side.png new file mode 100644 index 0000000..63b51f3 Binary files /dev/null and b/docs/html/_images/reduced_space_var_act_right_side.png differ diff --git a/docs/html/_images/soc_analyze_subset.png b/docs/html/_images/soc_analyze_subset.png new file mode 100644 index 0000000..45f1979 Binary files /dev/null and b/docs/html/_images/soc_analyze_subset.png differ diff --git a/docs/html/_images/soc_ascending_size2.png b/docs/html/_images/soc_ascending_size2.png new file mode 100644 index 0000000..b96b036 Binary files /dev/null and b/docs/html/_images/soc_ascending_size2.png differ diff --git a/docs/html/_images/soc_condition_number.png b/docs/html/_images/soc_condition_number.png new file mode 100644 index 0000000..ee3057e Binary files /dev/null and b/docs/html/_images/soc_condition_number.png differ diff --git a/docs/html/_images/soc_descending_size2.png b/docs/html/_images/soc_descending_size2.png new file mode 100644 index 0000000..1e3b905 Binary files /dev/null and b/docs/html/_images/soc_descending_size2.png differ diff --git a/docs/html/_images/soc_disturbances_magnitude_panel.png b/docs/html/_images/soc_disturbances_magnitude_panel.png new file mode 100644 index 0000000..0c8cc2b Binary files /dev/null and b/docs/html/_images/soc_disturbances_magnitude_panel.png differ diff --git a/docs/html/_images/soc_f_matrix.png b/docs/html/_images/soc_f_matrix.png new file mode 100644 index 0000000..c9acf80 Binary files /dev/null and b/docs/html/_images/soc_f_matrix.png differ diff --git a/docs/html/_images/soc_h_matrix.png b/docs/html/_images/soc_h_matrix.png new file mode 100644 index 0000000..a8c6397 Binary files /dev/null and b/docs/html/_images/soc_h_matrix.png differ diff --git a/docs/html/_images/soc_main_tab_before_completion.png b/docs/html/_images/soc_main_tab_before_completion.png new file mode 100644 index 0000000..0b64d4b Binary files /dev/null and b/docs/html/_images/soc_main_tab_before_completion.png differ diff --git a/docs/html/_images/soc_measurement_error_panel.png b/docs/html/_images/soc_measurement_error_panel.png new file mode 100644 index 0000000..13aa83d Binary files /dev/null and b/docs/html/_images/soc_measurement_error_panel.png differ diff --git a/docs/html/_images/soc_results_review.png b/docs/html/_images/soc_results_review.png new file mode 100644 index 0000000..2355944 Binary files /dev/null and b/docs/html/_images/soc_results_review.png differ diff --git a/docs/html/_images/soc_size6.png b/docs/html/_images/soc_size6.png new file mode 100644 index 0000000..842505d Binary files /dev/null and b/docs/html/_images/soc_size6.png differ diff --git a/docs/html/_images/soc_subset_sizing_impossible.png b/docs/html/_images/soc_subset_sizing_impossible.png new file mode 100644 index 0000000..9ded572 Binary files /dev/null and b/docs/html/_images/soc_subset_sizing_impossible.png differ diff --git a/docs/html/_images/soc_subset_sizing_options_panel.png b/docs/html/_images/soc_subset_sizing_options_panel.png new file mode 100644 index 0000000..18a4790 Binary files /dev/null and b/docs/html/_images/soc_subset_sizing_options_panel.png differ diff --git a/docs/html/_sources/bibliography.rst.txt b/docs/html/_sources/bibliography.rst.txt new file mode 100644 index 0000000..55384c5 --- /dev/null +++ b/docs/html/_sources/bibliography.rst.txt @@ -0,0 +1,9 @@ +============ +Bibliography +============ + +You can found the main literature the allows *Metacontrol* to exist below. +For the complete list, go to :ref:`our_papers`. + +.. bibliography:: mybibfile.bib + :style: plain \ No newline at end of file diff --git a/docs/html/_sources/gui/diff_data_tab.rst.txt b/docs/html/_sources/gui/diff_data_tab.rst.txt index 9017381..321d95c 100644 --- a/docs/html/_sources/gui/diff_data_tab.rst.txt +++ b/docs/html/_sources/gui/diff_data_tab.rst.txt @@ -2,4 +2,135 @@ The "Differential Data" tab ************************************************** -Placeholder text... \ No newline at end of file + +At this tab you will extract the high-order data (Gradients and Hessians) +that are necessary in order to calculate the self-optimizing control structures using +the exact local method from :cite:`alstad09`. + +The high-order data is calculated with +analytical expressions derived by :cite:`DACE` and :cite:`alves2018`, using the kriging +metamodel built for the reduced space problem. + + +The aforementioned procedure is encapsulated in this tab. You will be able to: + +* Generate the gradients and hessians, and inspect them. +* Remove any CV candidate from the list of candidates if you want. + +Here is an overview of this tab, before you start using it: + + +.. figure:: ../images/diff_data_main.png + :align: center + + Differential Data tab. + + + +There are four main panels on this tab + +* Reduced space metamodel training *Panel* +* Gradient and Hessian estimation *Panel* +* Gradient results *panel* and Hessian results *panel* + +Reduced space metamodel training *Panel* +======================================== + +Under this panel, you are able to click on "Open training dialog" in order to +configure your reduced-space kriging metamodel. + + +Configuring your kriging metamodel +----------------------------------- + +Click on "Open training dialog": + + +.. figure:: ../images/diff_data_training_dialog.png + :align: center + + Opening the kriging training dialog window. + + +You will notice that the window that appears to you is exactly the same from +:ref:`metamodel_tab`. Therefore the process of configuring your reduced-space +kriging metamodel is essentially the same. + +.. figure:: ../images/diff_data_training_dialog_window.png + :align: center + + Training dialog window. + +.. IMPORTANT:: + At the training dialog window, you will notice that only the Candidates that + were not active constraints are considered now. This happens because *Metacontrol* + automatically removes the variables that are nominally active (MVs and CVs) based on the + previous tab (Reduced Space tab). In addition, you can remove any of the remaining CVs, if you + want. Just *de-select* the box of the variable you want to remove: + + .. figure:: ../images/diff_data_remove_cvs.png + :align: center + + Removing one variable from the CV candidates list (*fco2out* in this example). + + +After configuring the hyperparameters estimates, choosing which CVs will be taken into acount in your +metamodel, you can click on "Generate metamodel" in order to inspect the validation metrics of your metamodel. + + +Acessing performance of your reduced-space metamodel +----------------------------------------------------- + +For the reduced-space metamodel, one additional metric has been added in order to help you to evaluate the +robustness of the metamodel generated. It corresponds to the objective function of the maximum likelihood estimation +from the work of :cite:`DACE`. Values under 1e-5 will give robust estimation of the gradients and hessians. (Check :ref:`our_papers` +and the :ref:`theory_tab` section where we give some examples and discuss the theoretical background in detail) + +.. figure:: ../images/diff_data_dace_function.png + :align: center + + Evaluating reduced space kriging metamodel estimation capabilities. Highlighted in blue, + the value of the optimized objective function value, that results in the optimal hyperparameters estimation. + +Gradient and Hessian estimation *Panel* +========================================== + +After configuring the kriging metamodel options under the training +dialog window, you can click on "Estimate Gradient and Hessian", to generate the +high-order data. + + +.. figure:: ../images/diff_data_high_order_data_gen.png + :align: center + + Generating high-order data. + + +Gradient results *panel* and Hessian results *panel* +===================================================== + +After performing the previous step, you will notice that the panels for Gradients and Hessians are now +completed: + +.. figure:: ../images/diff_data_completed.png + :align: center + + Generating high-order data. + +If you take a closer look, you will notice that the matrices are in a Dataframe format, making them easy to ready +and to understand each element of the matrices generated. Note that the elements are indexed using the aliases that you +created. For example, the gain between the unconstrained degree of freedom (*mccp*) and one CV candidate (*co2rrcv*) is easily +read: + + +.. figure:: ../images/diff_data_reading_gains.png + :align: center + + Generating high-order data. + + +The same is true for every element of the gradients and hessians calculated. + +After the procedure here described, you can go to the last tab: Self-Optimizing Control. + + diff --git a/docs/html/_sources/gui/load_sim_tab.rst.txt b/docs/html/_sources/gui/load_sim_tab.rst.txt index cab1921..8a2d279 100644 --- a/docs/html/_sources/gui/load_sim_tab.rst.txt +++ b/docs/html/_sources/gui/load_sim_tab.rst.txt @@ -102,12 +102,12 @@ you entered. Giving proper (non-repeated) aliases and correctly classifying your .. figure:: ../images/var_tree_class_input.png :align: center - classifying your variables in *Metacontrol* - Input Variables. + Classifying your variables in *Metacontrol* - Input Variables. .. figure:: ../images/var_tree_class_output.png :align: center - classifying your variables in *Metacontrol* - Output Variables. + Classifying your variables in *Metacontrol* - Output Variables. .. IMPORTANT:: To create aliases in *Metacontrol*, only lower case alphanumeric characters are allowed. @@ -265,7 +265,7 @@ Creating a Constraint function ------------------------------- It is very common to have process constraints in the processes that you -want to study in a plantwide (Self-Optimizing) Perspective. *Metacontrol* supports the +want to study in a plantwide (Self-Optimizing) perspective. *Metacontrol* supports the creation of constraints that are added to the optimization problem solved using metamodels. The constraints are always written in the form: @@ -307,13 +307,13 @@ Simulation info *panel* ======================= This panel serves as a "At a glance" simulation data info panel: After you load your Aspen Plus simulation, -You can inspect the following information: +it is possible to inspect the following information: * Number and name of components * Thermodynamic Package used in your model * Number and name of blocks used * Number and name of streams in your flowsheet -* Chemical Reactions modelled +* Chemical Reactions modeled * If there are any sensitivity analysis, optimizations, calculators and/or Design Specifications Within your model. .. ATTENTION:: diff --git a/docs/html/_sources/gui/metamodel_tab.rst.txt b/docs/html/_sources/gui/metamodel_tab.rst.txt index 9558fb1..4fc91b6 100644 --- a/docs/html/_sources/gui/metamodel_tab.rst.txt +++ b/docs/html/_sources/gui/metamodel_tab.rst.txt @@ -1,9 +1,11 @@ -************************************************** +.. _metamodel_tab: + +=================== The "Metamodel" tab -************************************************** +=================== At this tab you will use the Design of Experiments (DOE) generated previously to -generate kriging metamodels of the initial Sampling. The main idea here is to inspect if +generate kriging metamodels of the initial sampling. The main idea here is to inspect if the initial sampling providing is capable of predicting the basic form of the functions that you chose/created on the first step (Objective Function, CV candidates and constraints). If the kriging generated by the initial sampling is good enough, you are able to optimize it and refine it on the next step. @@ -12,7 +14,7 @@ On this tab you will be able to: * Define the lower and upper bounds for the hyperparameters that will be adjusted to give the best kriging prediction * Define the regression and correlation (kernel) model for your kriging interpolator -* Define which variables will have their model built +* Define which variables will have their kriging metamodel built * Inspect several validation metrics in order to conclude if your model is a good representation * Perform k-fold or hold-out validation. On the latter, you will be able to also inspect graphically your model. @@ -196,6 +198,7 @@ They allow you to: + Validation metrics *panel* =========================== diff --git a/docs/html/_sources/gui/optimization_tab.rst.txt b/docs/html/_sources/gui/optimization_tab.rst.txt index 11acffc..a181f38 100644 --- a/docs/html/_sources/gui/optimization_tab.rst.txt +++ b/docs/html/_sources/gui/optimization_tab.rst.txt @@ -88,7 +88,7 @@ panel the iterations in real time, and each step performed by the algorithm. Control *panel* ================ -This is how the control *panel* looks like during an optimization run in *Metacontrol* +This is how the control *panel* looks like during an optimization run in *Metacontrol*: .. figure:: ../images/opt_control_panel.png @@ -96,7 +96,7 @@ This is how the control *panel* looks like during an optimization run in *Metaco Control *panel* output. -The control panel shows the operations performed by the adaptive sampling algorithm, the decision variables values (MVs) at each +The control panel shows (being updated in real time) the operations performed by the adaptive sampling algorithm, the decision variables values (MVs) at each iteration, the actual and predicted objective function values, and the largest infeasiblity (constraint) violation for that iteration. At the end of the optimization run, *Metacontrol* will inform you how many points are within the trust-region. diff --git a/docs/html/_sources/gui/reduced_space_tab.rst.txt b/docs/html/_sources/gui/reduced_space_tab.rst.txt index fc0e7d6..d66ab27 100644 --- a/docs/html/_sources/gui/reduced_space_tab.rst.txt +++ b/docs/html/_sources/gui/reduced_space_tab.rst.txt @@ -2,4 +2,190 @@ The "Reduced Space" tab ************************************************** -Placeholder text... \ No newline at end of file +At this tab you will define your Reduced-Space problem: + +* Generate the reduced space problem DOE data, in order to + generate a kriging metamodel around the nominal optimal operating point found in the previous step. + The idea here is to generate a metamodel with points sampled around a small deviation from the optimal point, + to generate the gradients with respect to the plant measurements, to the disturbances, and the hessians, with + robustness, as proved by (:cite:`alves2018`). + +* Additionally, you will inform *Metacontrol* which constraints are active, and what are the remaining degrees of freedom that + are going to be used at the Reduced Space problem sampling, at the "Variable activity" *panel*. + +* Inform the bounds of the Manipulated variables and disturbances around the optimal point. + +Here is an overview of this tab: + +.. figure:: ../images/reduced_space_main.png + :align: center + + *Metacontrol* "Optimization" tab. + + +There are four main panels at this tab: + +* Variable activity *panel* +* Range of Reduced-space Variables *panel* +* Data source *panel* +* Reduced Space sampled Data *panel* + +.. IMPORTANT:: + At this point, you **must** go back to the process simulator (Aspen Plus), and implement the active constraints + that were found by the optimizaiton step. + + + + #. Save a copy of your initial .bkp file. + + #. In your copied simulation file, implement your active constraints: + + #. If they are input specifications, just fix their values at the respective block or stream where the variable is located. + #. If they are output variables, implement Design Specifications, consuming the necessary degrees of freedom. + + #. Save and close your Reduced-Space problem aspen plus file. + #. Go back to *Metacontrol*. + + +Variable activity *panel* +========================== + +At this panel, you will inform to *Metacontrol* the reduced-space remaining degrees of freedom (e.g.: The variables +that were not used to close feedback loops in case of nonlinear constraints becoming active, or the the decision variables +that did not reached an upper/lower bound at the optmization run). *Metacontrol* automatically understands that the variables that you +did not check, were active decision variables or were used as MVs for a desing specification loop. On the right panel, you should indicate +if any CV candidate that you created (which eventually can be a constraint) were active. You should mark these variables, since you must control them +(Active-Constraint Control :cite:`skoge00`), before using the mathematical formulations that are implemented within *Metacontrol*. + +Informing to *Metaconrol* active candidates and active decision variables (MVs) +-------------------------------------------------------------------------------- + +At example in the figure below, *mcct*, *f1t* and *f2t* were nominally active at the optimal point. These are the Manipulated Variables of this +example. The remaining variable corresponds to *mccp*. Therefore, at the left side of the "Variable activity" *panel*, only the +remaining degree of freedom must be checked (*mccp*): + + +.. figure:: ../images/reduced_space_var_act_left_side.png + :align: center + + Selecting unconstrained degree(s) of freedom. + +On the other hand, the variables *mcctout*, *f1out* and *f2out* are the decision variables (MVs) also listed as CV candidates, in order to analyze +if keeping them constant, there will be self-optimizing control structures using them. Since the decision variables were active, they must be eliminated from the +list of potential candidates, since the SOC methodology considers that active-constraint control is a mandatory step of the methodology. Therefore, you must mark them as active: + + +.. figure:: ../images/reduced_space_var_act_right_side.png + :align: center + + Selecting unconstrained degree(s) of freedom. + + +.. IMPORTANT:: + + **In a nutshell**, this panel serves for you to inform to *Metacontrol* what are the *unconstrained* degrees of freedom of the + reduced-space problem, and also to inform the *active* candidate controlled variables (constraints, MVs listed as candidates, etc.). + With this information, *Metacontrol* will automatically consider only the *unconstrained* degrees of freedom summed with the disturbances as input variables + on the sampling, and also will not consider the active variables when + generating the high-order data (gradients and hessians). Since you are providing a modified simulation file with the active variables implemented (MVs and or constraints/CVs), they do not + need to be in the analysis, since they are already being controlled. + + + +Range of Reduced-space Variables *panel* +========================================= + +On this panel, you will inform the lower and upper bound of the unconstrained degrees of freedom and +disturbances to be used in the sampling process, in order to generate the reduced-space kriging metamodel: + +.. figure:: ../images/reduced_space_range.png + :align: center + + Selecting unconstrained degree(s) of freedom. + +.. IMPORTANT:: + As showed by our previous publications, the bounds for the second (reduced-space) kriging metamodel must be a around a small margin of the + optimal operating point. You can consider this a tunable parameter. Generally, +-0.5% of the optimal operating point will generate robust prediction + of the high-order data on the next step (gradients and hessians). However, feel free to tight or loose this value if you want to try to improve your reduced-space + kriging metamodel. + + +Data Source *panel* +==================== + +On this panel you will: + +* Point to the Aspen Plus simulation file of the reduced-space problem, if you opt to sample + using the process simulator. +* Use the sampling assistant, if you opt to sample using the process simulator. +* Point to the .csv file if you opt to import an already sampled DOE of the reduced space problem. + + +Sampling the reduced-space problem with your Aspen Plus simulation file +------------------------------------------------------------------------ + +Under the Data Source *panel*, point to the Aspen Plus reduced-space problem file location: + + +.. figure:: ../images/reduced_space_dialogbox_sim_file.png + :align: center + + Pointing to the reduced-space problem simulation file. + +After this, you can open the Sampling Assistant: + +.. figure:: ../images/reduced_space_open_sampling_assistant.png + :align: center + + Opening the sampling assistant. + +You will notice that the Sampling Assistant window corresponds exactly to the same +from the step 2 (:ref:`sampling_assistant`). Therefore, the procedure is exactly the same. + +.. figure:: ../images/reduced_space_sampling_assistant.png + :align: center + + The sampling assistant, the same from the sampling tab. + +You will define the number of cases to be sampled: + +.. figure:: ../images/reduced_cases_config.png + :align: center + + Configuring the number of cases to be sampled. + +And click on "Sample Data". You can at any time, abort this operation ("Abort" button). +When the sampling is finished, you can click on "Done" and proceed to the next step (Differential +data). + +.. figure:: ../images/reduced_space_sampling_running.png + :align: center + + Sampling Assistant running cases for the reduced space problem. + +.. figure:: ../images/reduced_space_sampling_finished.png + :align: center + + Sampling completed, just click on "Done" to go back to "Reduced Space" tab. + + +Reduced Space sampled Data *panel* +=================================== + +After sampling you data, if you go back to the Reduced Space Tab, you will notice that +this panel will be completed: + +.. figure:: ../images/reduced_space_sampled_data.png + :align: center + + Reduced Space sampled Data *panel*. + + +After everything, your Reduced Space tab will be completed: + +.. figure:: ../images/reduced_space_completed.png + :align: center + + Reduced space tab completed. You are able to go to the next tab (Differential data). + + diff --git a/docs/html/_sources/gui/sampling_tab.rst.txt b/docs/html/_sources/gui/sampling_tab.rst.txt index e786ce5..97d61b4 100644 --- a/docs/html/_sources/gui/sampling_tab.rst.txt +++ b/docs/html/_sources/gui/sampling_tab.rst.txt @@ -2,14 +2,14 @@ The "Sampling" tab ************************************************** -At this tab you will use the simulation provided on the last step to +At this tab you will use the simulation provided on the previous step to perform a Design of Experiments (DOE). You will be able to: * Define the lower and upper bounds for your manipulated variables, that will be used as the limits of the sampling and as box constraints of the optimization problem * Define the number of sampled cases -* Inspect the results of the sampling, for each variable that you selected on the last +* Inspect the results of the sampling, for each variable that you selected on the previous step * Check convergence status of each case @@ -59,7 +59,10 @@ Sampling Assistant *panel* ========================== This panel defines how are you going to supply the DOE data to metacontrol: Using your simulation file (recommended) or -loading an *.CSV file (this is a auxiliary feature). For the first case, you are going to use the Sample Assistant from *Metacontrol*: +loading an *.CSV file (this is an auxiliary feature). For the first case, you are going to use the Sample Assistant from *Metacontrol*: + + +.. _sampling_assistant: Using the Sampling Assistant to sample data from Aspen Plus ------------------------------------------------------------ @@ -117,7 +120,8 @@ The "Sample Data" button now is available. Push it to start running your cases. At each case, *Metacontrol* communicates with the Aspen Plus Engine, and collects the results automatically and in real time. You can literally see the -sampling process in front of you, with the "Sampler Display" panel being updated as the cases run. +sampling process in front of you, with the "Sampler Display" panel being updated as the cases run. Note that there is a progress bar +to show you the overall process. .. figure:: ../images/sampling_running.png :align: center diff --git a/docs/html/_sources/gui/soc_tab.rst.txt b/docs/html/_sources/gui/soc_tab.rst.txt index e31f77b..d51211c 100644 --- a/docs/html/_sources/gui/soc_tab.rst.txt +++ b/docs/html/_sources/gui/soc_tab.rst.txt @@ -1,5 +1,137 @@ -************************************************** +================================= The "Self-Optimizing Control" tab -************************************************** +================================= + +At this tab the self-optimizing control structure selection is made. You will be able to: + +* Provide the expected *disturbances* and *implementation/measurement* magnitudes to be taken + into account in your study +* Inform *Metacontrol* how many **best** (that incurs in the lowest loss) structures do you want to analyze for each possible control structure subset size +* Inspecting in *ascending* and *descending* order all evaluated control structures +* Inspect the `condition number `_ of each control structure +* Inspect linear combinations of controlled variables, if you chose to analyze more CV candidates than the unconstrained degrees of freedom available. + + +This tab looks like the picture below, before you start to fill the necessary data: + +.. figure:: ../images/soc_main_tab_before_completion.png + :align: center + + *Metacontrol* "Self-Optimizing Control" tab. + +The forms are red because you need to supply the data for the disturbances and implementation/measurement errors magnitudes. + +There are three panels at this tab: + +* Disturbances magnitude *panel* +* Measurement error *panel* +* Subsets sizing options *panel* + +Disturbances magnitude *panel* +=============================== + +At this panel, you will inform to *Metacontrol* the expected magnitude of the disturbances. +As an example, see the figure below, where it was considered 10% of the nominal value for +the variables *fpropan*, *fpropy* and *vfrac*: + + +.. figure:: ../images/soc_disturbances_magnitude_panel.png + :align: center + + Entering disturbances expected magnitudes. + +Measurement error *panel* +========================= + +At this panel, you will enter the expected implementation/measurement error. For the example on the figure +below, it was considered 0.5°C for temperature measurements and 0.001 for flow measurements. + +.. figure:: ../images/soc_measurement_error_panel.png + :align: center + + Entering measurement error expected magnitudes. + + +Subsets sizing options *panel* +=============================== + +At this panel you will determine how many *best* control structures will be reported to you by *Metacontrol*, +for each possible subset size: + + +.. figure:: ../images/soc_subset_sizing_options_panel.png + :align: center + + Entering measurement error expected magnitudes. + + +*Metacontrol* and the maximum number of possible control structures for each subset size +----------------------------------------------------------------------------------------- + +*Metacontrol* automatically calculates the maximum number of possible control structures for +each subset size. + +For the example shown in the previous figure, there are 20 CV candidates and two unconstrained degrees of freedom +available. For a single measurement policy (using one single CV candidate for each MV) there are + +.. math:: + (20! / 2!) = 20!/(2! \times (20-2)!) = 190 + +possible control structures. If the user tries to evaluate 191 (which is impossible), *Metacontrol* will prevent him +from doing this: + + +.. figure:: ../images/soc_subset_sizing_impossible.png + :align: center + + *Metacontrol* avoiding impossible evaluations. + + +Analyzing your results +======================= + +After completing this tab with the all necessary data, you can click on "Generate Results", and a window will +appear: + +.. figure:: ../images/soc_results_review.png + :align: center + +You can select which subset size you want to analyze: + +.. figure:: ../images/soc_analyze_subset.png + :align: center + +The linear combinations generated for the possible control structures: + +.. figure:: ../images/soc_h_matrix.png + :align: center + +And the sensitivity matrices for each possible control structure evaluated: + +.. figure:: ../images/soc_f_matrix.png + :align: center + +In addition, you can arrange the control structures in *ascending* and *descending* loss value order, to ease +your study: + +.. figure:: ../images/soc_ascending_size2.png + :align: center + +.. figure:: ../images/soc_descending_size2.png + :align: center + +For any subset size! For example, linear combinations of 6 measurements for this particular case shown here for +illustration purposes: + + +.. figure:: ../images/soc_size6.png + :align: center + +And inspect other controllability measures, such as the condition number (highlighted with a black-box): + +.. figure:: ../images/soc_condition_number.png + :align: center + + + -Placeholder text... \ No newline at end of file diff --git a/docs/html/_sources/index.rst.txt b/docs/html/_sources/index.rst.txt index 7cc062a..eb1ccaf 100644 --- a/docs/html/_sources/index.rst.txt +++ b/docs/html/_sources/index.rst.txt @@ -13,13 +13,40 @@ Control (SOC) technique can be achieved. How to cite us ============== -Please, cite the related paper: -.. code-block:: none +.. _our_papers: - place BibTeX entry here +Our papers +----------- +Please, cite the related papers: -And put a star on GitHub (Star GITHUB HERE) +#. `Metamodel-Based Numerical Techniques for Self-Optimizing Control `_; + + **BibTeX Entry:** + + .. code-block:: none + + @article{alves2018metamodel, + title={Metamodel-Based Numerical Techniques for Self-Optimizing Control}, + author={Alves, Victor MC and Lima, Felipe S and Silva, Sidinei K and Araujo, Antonio CB}, + journal={Industrial \& Engineering Chemistry Research}, + volume={57}, + number={49}, + pages={16817--16840}, + year={2018}, + publisher={ACS Publications} + } + +#. Metacontrol Article + + **BibTeX Entry:** + + .. code-block:: none + + Entry goes here when the paper review is accepted + + +And become a watcher/stargazer on `GitHub `_ to receive updates! Features @@ -27,29 +54,29 @@ Features Open-Source ============== -*Metacontrol* is *open-source*, under the MIT license. We believe that open code just makes -scientific development more clear and generally better. Want to inspect our code? Maybe change it for your +*Metacontrol* is **open-source**, under the **GPL v3.0** license. We believe that open code just makes +scientific development clearer and generally better. Want to inspect our code? Maybe change it for your specific desire? Have a suggestion? Go for it. Share with us! Built in Python ================ The scientific world and data scientists are moving in a accelerated pace to Python programming language. *Metacontrol* was built from scratch using it. Using state-of-the-art packages -such as *Numpy*, *Scipy*, *pyQT* and many others, a concise and standalone software is available. You will not need any other +such as `Numpy `_, `Scipy `_, `pyQT `_, `pandas `_ and many others, a concise and standalone software is available. You will **not** need any other software, apart from the process simulators (obviously), to run our application. Support for Optimization using metamodels ========================================== One crucial step of Self-Optimizing Control methodology is to optimize a process model. -We use the the famous *IpOpt* Optimization package in order to do it. Therefore, you can also use *Metacontrol* -to optimize processes that you modelled in Aspen Plus. +We use the the famous `IpOpt `_ Optimization package (using a `Python Interface `_) in order to do it. Therefore, you can also use *Metacontrol* +to optimize processes that you modeled in Aspen Plus. Usage of Kriging metamodels ============================ Kriging interpolators are widely used in the scientific community for prediction, optimization and data obtainment. -We use it to for optimization and high-order obtainment purposes. It is proven to generate robust precitions and results. -For further details, check our papers. +We use it to for optimization and high-order data obtainment purposes. It is proven to generate robust precitions and results. +For further details, check :ref:`our_papers`. State-of-the-art Self-Optimizing Control techniques @@ -57,7 +84,8 @@ State-of-the-art Self-Optimizing Control techniques Standing on the shoulders of giants, *Metacontrol* uses the most recent formulations in the SOC area available that are capable of quickly pre-screening the most promising candidate controlled variables from a given universe of possible combinations. This includes -the exact local Method with explicit solution from Alstad et al. (2009) and even branch-and-bound algorithms by Cao et al. (2009) under the hood. +the exact local Method with explicit solution from :cite:`alstad09` and even branch-and-bound +algorithms :cite:`kariwala2009` under the hood. Documentation Contents @@ -71,6 +99,7 @@ Documentation Contents gui/gui_index.rst examples/tutorials theory/theory_index + zbibliography diff --git a/docs/html/_sources/intro.rst.txt b/docs/html/_sources/intro.rst.txt index 7f051a4..aeed312 100644 --- a/docs/html/_sources/intro.rst.txt +++ b/docs/html/_sources/intro.rst.txt @@ -74,7 +74,7 @@ consequently, generating SOC-based control structures. All of that within a comprehensive User Interface, allowing the control structure designer/engineer/scientist (hey, that's you) to keep his/hers focus only on synthesizing the control structure, rather than wasting hours "jumping" between several software environments, such as: Process simulators (Aspen Plus) and -numerical packages (MATLAB, Python, Microsoft Excel, etc.). This tool is made by Engineers that struggled with this (us), +numerical packages (MATLAB, Python, Microsoft Excel, etc.). This tool is made by engineers that struggled with this (us), in order to try to solve such struggle for the scientific community. Installation diff --git a/docs/html/_sources/overview/mtc.rst.txt b/docs/html/_sources/overview/mtc.rst.txt index 4d40f37..82659cc 100644 --- a/docs/html/_sources/overview/mtc.rst.txt +++ b/docs/html/_sources/overview/mtc.rst.txt @@ -56,8 +56,3 @@ available in real-time. Over the next session, each tab of *Metacontrol* will be detail, in order to teach you how to use it! -============ -Bibliography -============ -.. bibliography:: ../mybibfile.bib - :style: plain \ No newline at end of file diff --git a/docs/html/_sources/overview/z_mtc.rst.txt b/docs/html/_sources/overview/z_mtc.rst.txt new file mode 100644 index 0000000..82659cc --- /dev/null +++ b/docs/html/_sources/overview/z_mtc.rst.txt @@ -0,0 +1,58 @@ +*********************************** +*Metacontrol* Methodology Overview +*********************************** + +The "top-down" part of the self-optimizing control structure selection +methodology developed by Skogestad (:cite:`skoge00`) has the following main steps: + +#. Identify the relevant process variables: Manipulated + variables, disturbances, and potential candidate controlled variables + (process measurements), and perform a Degree of Freedom (DOF) analysis + taking into account both steady and dynamic states of the process. +#. Define optimal operation: Formulate the problem with objective + function and constraints to be used in order to seek an optimal operating point. +#. (Mathematically) Model the (industrial) process. *Metacontrol* is currently compatible + with Aspen Plus. +#. Optimize the process model as formulated in step 2. +#. Implement the active constraints found in the previous step - + "active constraint control" (:cite:`skoge00`) +#. Evaluate the loss resulting from a constant setpoint policy + (:cite:`halvorsen03`) for each possible control configuration for the + remaining (unconstrained) degrees of freedom. This is done in *Metacontrol* using, + e.g., local (linear) methods (:cite:`halvorsen03,hori05,hori08,alstad09`), + where a reduced-space (unconstrained) problem is required to obtain + gradients with respect to candidate controlled variables and disturbances, + and the Hessian of the objective function evaluated at the optimal + point found in step 4. As stated before in the introduction, *Metacontrol* uses + Kriging predictors to evaluate gradient and hessian matrices. + Note that the use of local methods requires the specification of disturbance + magnitudes and measurement errors associated with each candidate controlled + variable of step 1. + + + +The basic structure of *Metacontrol* showing the two modes +of operation is depicted in Figure below. Mode 1 is the +complete implementation of steps 1 through 6 of the SOC procedure, where a +first metamodel of the process is generated to evaluate the optimal operating +point with all degrees of freedom available, while mode 2 is a shortcut taken +when the optimal steady-state is known. In both cases, an extra metamodel is +produced as the reduced space model using the remaining unconstrained degrees +of freedom. + + + +.. figure:: ../images/metacontrol-workflow.svg + :align: center + + Basic flowchart of the Metacontrol workflow. + + +The graphical user interface (GUI) of *Metacontrol* is a paradigm of the steps +that are needed +to perform the SOC analysis using metamodels, proposed by :cite:`alves2018`. The user will simply navigate between easy-to-use sequential tabs, +providing information for the problem that he wants to study, and the results will become +available in real-time. Over the next session, each tab of *Metacontrol* will be discussed in +detail, in order to teach you how to use it! + + diff --git a/docs/html/_sources/theory/theory_index.rst.txt b/docs/html/_sources/theory/theory_index.rst.txt index 4b090b8..823cbad 100644 --- a/docs/html/_sources/theory/theory_index.rst.txt +++ b/docs/html/_sources/theory/theory_index.rst.txt @@ -1,6 +1,8 @@ -********************************************** +.. _theory_tab: + +======================= Theoretical Backgrounds -********************************************** +======================= .. toctree:: :maxdepth: 2 diff --git a/docs/html/_sources/zbibliography.rst.txt b/docs/html/_sources/zbibliography.rst.txt new file mode 100644 index 0000000..55384c5 --- /dev/null +++ b/docs/html/_sources/zbibliography.rst.txt @@ -0,0 +1,9 @@ +============ +Bibliography +============ + +You can found the main literature the allows *Metacontrol* to exist below. +For the complete list, go to :ref:`our_papers`. + +.. bibliography:: mybibfile.bib + :style: plain \ No newline at end of file diff --git a/docs/html/bibliography.html b/docs/html/bibliography.html new file mode 100644 index 0000000..d24a69c --- /dev/null +++ b/docs/html/bibliography.html @@ -0,0 +1,237 @@ + + + + + + + + + + + Bibliography — Metacontrol 1.0.4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Bibliography

+

You can found the main literature the allows Metacontrol to exist below. +For the complete list, go to Our papers.

+

+
1
+

Vidar Alstad, Sigurd Skogestad, and Eduardo S. Hori. Optimal measurement combinations as controlled variables. Journal of Process Control, 19(1):138 – 148, 2009. URL: http://www.sciencedirect.com/science/article/pii/S0959152408000073, doi:https://doi.org/10.1016/j.jprocont.2008.01.002.

+
+
2
+

Victor M. C. Alves, Felipe S. Lima, Sidinei K. Silva, and Antonio C. B. Araujo. Metamodel-based numerical techniques for self-optimizing control. Industrial & Engineering Chemistry Research, 57(49):16817–16840, 2018. URL: https://doi.org/10.1021/acs.iecr.8b04337, arXiv:https://doi.org/10.1021/acs.iecr.8b04337, doi:10.1021/acs.iecr.8b04337.

+
+
3
+

Ivar J. Halvorsen, Sigurd Skogestad, John C. Morud, and Vidar Alstad. Optimal selection of controlled variables. Industrial & Engineering Chemistry Research, 42(14):3273–3284, 2003. URL: https://doi.org/10.1021/ie020833t, arXiv:https://doi.org/10.1021/ie020833t, doi:10.1021/ie020833t.

+
+
4
+

Eduardo S. Hori, Sigurd Skogestad, and Vidar Alstad. Perfect steady-state indirect control. Industrial & Engineering Chemistry Research, 44(4):863–867, 2005. URL: https://doi.org/10.1021/ie049736l, arXiv:https://doi.org/10.1021/ie049736l, doi:10.1021/ie049736l.

+
+
5
+

Eduardo Shigueo Hori and Sigurd Skogestad. Selection of controlled variables: maximum gain rule and combination of measurements. Industrial & Engineering Chemistry Research, 47(23):9465–9471, 2008. URL: https://doi.org/10.1021/ie0711978, arXiv:https://doi.org/10.1021/ie0711978, doi:10.1021/ie0711978.

+
+
6
+

Søren Nymand Lophaven, Hans Bruun Nielsen, and Jacob Søndergaard. DACE - A Matlab Kriging Toolbox, Version 2.0. DTU Orbit, 2002.

+
+
7
+

Sigurd Skogestad. Plantwide control: the search for the self-optimizing control structure. Journal of Process Control, 10(5):487 – 507, 2000. URL: http://www.sciencedirect.com/science/article/pii/S0959152400000238, doi:https://doi.org/10.1016/S0959-1524(00)00023-8.

+
+
+

+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/docs/html/examples/c3splitter.html b/docs/html/examples/c3splitter.html index d735074..a555b17 100644 --- a/docs/html/examples/c3splitter.html +++ b/docs/html/examples/c3splitter.html @@ -98,6 +98,7 @@
  • Theoretical Backgrounds
  • +
  • Bibliography
  • diff --git a/docs/html/examples/cpu.html b/docs/html/examples/cpu.html index 5d929bf..2e060ad 100644 --- a/docs/html/examples/cpu.html +++ b/docs/html/examples/cpu.html @@ -98,6 +98,7 @@
  • Theoretical Backgrounds
  • +
  • Bibliography
  • diff --git a/docs/html/examples/ic4.html b/docs/html/examples/ic4.html index 62d176d..2df9dc3 100644 --- a/docs/html/examples/ic4.html +++ b/docs/html/examples/ic4.html @@ -98,6 +98,7 @@
  • Theoretical Backgrounds
  • +
  • Bibliography
  • diff --git a/docs/html/examples/tutorials.html b/docs/html/examples/tutorials.html index 14cf50d..3e000e9 100644 --- a/docs/html/examples/tutorials.html +++ b/docs/html/examples/tutorials.html @@ -98,6 +98,7 @@
  • Theoretical Backgrounds
  • +
  • Bibliography
  • diff --git a/docs/html/genindex.html b/docs/html/genindex.html index 2ec171c..8762bc6 100644 --- a/docs/html/genindex.html +++ b/docs/html/genindex.html @@ -92,6 +92,7 @@
  • Metacontrol GUI Manual
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • diff --git a/docs/html/gui/diff_data_tab.html b/docs/html/gui/diff_data_tab.html index 2bdd5a5..4ef4feb 100644 --- a/docs/html/gui/diff_data_tab.html +++ b/docs/html/gui/diff_data_tab.html @@ -96,12 +96,22 @@
  • The “Metamodel” tab
  • The “Optimization” tab
  • The “Reduced Space” tab
  • -
  • The “Differential Data” tab
  • +
  • The “Differential Data” tab +
  • The “Self-Optimizing Control” tab
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -170,7 +180,103 @@

    The “Differential Data” tab

    -

    Placeholder text…

    +

    At this tab you will extract the high-order data (Gradients and Hessians) +that are necessary in order to calculate the self-optimizing control structures using +the exact local method from [1].

    +

    The high-order data is calculated with +analytical expressions derived by [7] and [2], using the kriging +metamodel built for the reduced space problem.

    +

    The aforementioned procedure is encapsulated in this tab. You will be able to:

    +
      +
    • Generate the gradients and hessians, and inspect them.

    • +
    • Remove any CV candidate from the list of candidates if you want.

    • +
    +

    Here is an overview of this tab, before you start using it:

    +
    +../_images/diff_data_main.png +

    Differential Data tab.

    +
    +

    There are four main panels on this tab

    +
      +
    • Reduced space metamodel training Panel

    • +
    • Gradient and Hessian estimation Panel

    • +
    • Gradient results panel and Hessian results panel

    • +
    +
    +

    Reduced space metamodel training Panel

    +

    Under this panel, you are able to click on “Open training dialog” in order to +configure your reduced-space kriging metamodel.

    +
    +

    Configuring your kriging metamodel

    +

    Click on “Open training dialog”:

    +
    +../_images/diff_data_training_dialog.png +

    Opening the kriging training dialog window.

    +
    +

    You will notice that the window that appears to you is exactly the same from +The “Metamodel” tab. Therefore the process of configuring your reduced-space +kriging metamodel is essentially the same.

    +
    +../_images/diff_data_training_dialog_window.png +

    Training dialog window.

    +
    +
    +

    Important

    +

    At the training dialog window, you will notice that only the Candidates that +were not active constraints are considered now. This happens because Metacontrol +automatically removes the variables that are nominally active (MVs and CVs) based on the +previous tab (Reduced Space tab). In addition, you can remove any of the remaining CVs, if you +want. Just de-select the box of the variable you want to remove:

    +
    +../_images/diff_data_remove_cvs.png +

    Removing one variable from the CV candidates list (fco2out in this example).

    +
    +
    +

    After configuring the hyperparameters estimates, choosing which CVs will be taken into acount in your +metamodel, you can click on “Generate metamodel” in order to inspect the validation metrics of your metamodel.

    +
    +
    +

    Acessing performance of your reduced-space metamodel

    +

    For the reduced-space metamodel, one additional metric has been added in order to help you to evaluate the +robustness of the metamodel generated. It corresponds to the objective function of the maximum likelihood estimation +from the work of [7]. Values under 1e-5 will give robust estimation of the gradients and hessians. (Check Our papers +and the Theoretical Backgrounds section where we give some examples and discuss the theoretical background in detail)

    +
    +../_images/diff_data_dace_function.png +

    Evaluating reduced space kriging metamodel estimation capabilities. Highlighted in blue, +the value of the optimized objective function value, that results in the optimal hyperparameters estimation.

    +
    +
    +
    +
    +

    Gradient and Hessian estimation Panel

    +

    After configuring the kriging metamodel options under the training +dialog window, you can click on “Estimate Gradient and Hessian”, to generate the +high-order data.

    +
    +../_images/diff_data_high_order_data_gen.png +

    Generating high-order data.

    +
    +
    +
    +

    Gradient results panel and Hessian results panel

    +

    After performing the previous step, you will notice that the panels for Gradients and Hessians are now +completed:

    +
    +../_images/diff_data_completed.png +

    Generating high-order data.

    +
    +

    If you take a closer look, you will notice that the matrices are in a Dataframe format, making them easy to ready +and to understand each element of the matrices generated. Note that the elements are indexed using the aliases that you +created. For example, the gain between the unconstrained degree of freedom (mccp) and one CV candidate (co2rrcv) is easily +read:

    +
    +../_images/diff_data_reading_gains.png +

    Generating high-order data.

    +
    +

    The same is true for every element of the gradients and hessians calculated.

    +

    After the procedure here described, you can go to the last tab: Self-Optimizing Control.

    +
    diff --git a/docs/html/gui/gui_index.html b/docs/html/gui/gui_index.html index b6af6f4..6c5d382 100644 --- a/docs/html/gui/gui_index.html +++ b/docs/html/gui/gui_index.html @@ -102,6 +102,7 @@
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -202,9 +203,26 @@

    Metacontrol GUI ManualResults panel -
  • The “Reduced Space” tab
  • -
  • The “Differential Data” tab
  • -
  • The “Self-Optimizing Control” tab
  • +
  • The “Reduced Space” tab +
  • +
  • The “Differential Data” tab +
  • +
  • The “Self-Optimizing Control” tab +
  • diff --git a/docs/html/gui/load_sim_tab.html b/docs/html/gui/load_sim_tab.html index 71f7963..9d47c30 100644 --- a/docs/html/gui/load_sim_tab.html +++ b/docs/html/gui/load_sim_tab.html @@ -117,6 +117,7 @@
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -268,11 +269,11 @@

    Choosing your variables, and associating aliases for them ../_images/var_tree_class_input.png -

    classifying your variables in Metacontrol - Input Variables.

    +

    Classifying your variables in Metacontrol - Input Variables.

    ../_images/var_tree_class_output.png -

    classifying your variables in Metacontrol - Output Variables.

    +

    Classifying your variables in Metacontrol - Output Variables.

    Important

    @@ -442,7 +443,7 @@

    Creating a User-Defined CV Candidate

    Creating a Constraint function

    It is very common to have process constraints in the processes that you -want to study in a plantwide (Self-Optimizing) Perspective. Metacontrol supports the +want to study in a plantwide (Self-Optimizing) perspective. Metacontrol supports the creation of constraints that are added to the optimization problem solved using metamodels. The constraints are always written in the form:

    @@ -472,13 +473,13 @@

    Creating a Constraint function

    Simulation info panel

    This panel serves as a “At a glance” simulation data info panel: After you load your Aspen Plus simulation, -You can inspect the following information:

    +it is possible to inspect the following information:

    • Number and name of components

    • Thermodynamic Package used in your model

    • Number and name of blocks used

    • Number and name of streams in your flowsheet

    • -
    • Chemical Reactions modelled

    • +
    • Chemical Reactions modeled

    • If there are any sensitivity analysis, optimizations, calculators and/or Design Specifications Within your model.

    diff --git a/docs/html/gui/metamodel_tab.html b/docs/html/gui/metamodel_tab.html index 3fc1232..48033a8 100644 --- a/docs/html/gui/metamodel_tab.html +++ b/docs/html/gui/metamodel_tab.html @@ -126,6 +126,7 @@
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -193,9 +194,9 @@
    -

    The “Metamodel” tab

    +

    The “Metamodel” tab

    At this tab you will use the Design of Experiments (DOE) generated previously to -generate kriging metamodels of the initial Sampling. The main idea here is to inspect if +generate kriging metamodels of the initial sampling. The main idea here is to inspect if the initial sampling providing is capable of predicting the basic form of the functions that you chose/created on the first step (Objective Function, CV candidates and constraints). If the kriging generated by the initial sampling is good enough, you are able to optimize it and refine it on the next step. @@ -204,7 +205,7 @@

    The “Metamodel” tab

    Define the lower and upper bounds for the hyperparameters that will be adjusted to give the best kriging prediction

  • Define the regression and correlation (kernel) model for your kriging interpolator

  • -
  • Define which variables will have their model built

  • +
  • Define which variables will have their kriging metamodel built

  • Inspect several validation metrics in order to conclude if your model is a good representation

  • Perform k-fold or hold-out validation. On the latter, you will be able to also inspect graphically your model.

  • diff --git a/docs/html/gui/optimization_tab.html b/docs/html/gui/optimization_tab.html index 85c6091..de50813 100644 --- a/docs/html/gui/optimization_tab.html +++ b/docs/html/gui/optimization_tab.html @@ -115,6 +115,7 @@
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -256,12 +257,12 @@

    Performing an optimization run

    Control panel

    -

    This is how the control panel looks like during an optimization run in Metacontrol

    +

    This is how the control panel looks like during an optimization run in Metacontrol:

    ../_images/opt_control_panel.png

    Control panel output.

    -

    The control panel shows the operations performed by the adaptive sampling algorithm, the decision variables values (MVs) at each +

    The control panel shows (being updated in real time) the operations performed by the adaptive sampling algorithm, the decision variables values (MVs) at each iteration, the actual and predicted objective function values, and the largest infeasiblity (constraint) violation for that iteration. At the end of the optimization run, Metacontrol will inform you how many points are within the trust-region.

    diff --git a/docs/html/gui/reduced_space_tab.html b/docs/html/gui/reduced_space_tab.html index 5587b5c..ffefcdd 100644 --- a/docs/html/gui/reduced_space_tab.html +++ b/docs/html/gui/reduced_space_tab.html @@ -95,13 +95,26 @@
  • The “Sampling” tab
  • The “Metamodel” tab
  • The “Optimization” tab
  • -
  • The “Reduced Space” tab
  • +
  • The “Reduced Space” tab +
  • The “Differential Data” tab
  • The “Self-Optimizing Control” tab
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -170,7 +183,157 @@

    The “Reduced Space” tab

    -

    Placeholder text…

    +

    At this tab you will define your Reduced-Space problem:

    +
      +
    • Generate the reduced space problem DOE data, in order to +generate a kriging metamodel around the nominal optimal operating point found in the previous step. +The idea here is to generate a metamodel with points sampled around a small deviation from the optimal point, +to generate the gradients with respect to the plant measurements, to the disturbances, and the hessians, with +robustness, as proved by ([2]).

    • +
    • Additionally, you will inform Metacontrol which constraints are active, and what are the remaining degrees of freedom that +are going to be used at the Reduced Space problem sampling, at the “Variable activity” panel.

    • +
    • Inform the bounds of the Manipulated variables and disturbances around the optimal point.

    • +
    +

    Here is an overview of this tab:

    +
    +../_images/reduced_space_main.png +

    Metacontrol “Optimization” tab.

    +
    +

    There are four main panels at this tab:

    +
      +
    • Variable activity panel

    • +
    • Range of Reduced-space Variables panel

    • +
    • Data source panel

    • +
    • Reduced Space sampled Data panel

    • +
    +
    +

    Important

    +

    At this point, you must go back to the process simulator (Aspen Plus), and implement the active constraints +that were found by the optimizaiton step.

    +
      +
    1. Save a copy of your initial .bkp file.

    2. +
    3. In your copied simulation file, implement your active constraints:

      +
      +
        +
      1. If they are input specifications, just fix their values at the respective block or stream where the variable is located.

      2. +
      3. If they are output variables, implement Design Specifications, consuming the necessary degrees of freedom.

      4. +
      +
      +
    4. +
    5. Save and close your Reduced-Space problem aspen plus file.

    6. +
    7. Go back to Metacontrol.

    8. +
    +
    +
    +

    Variable activity panel

    +

    At this panel, you will inform to Metacontrol the reduced-space remaining degrees of freedom (e.g.: The variables +that were not used to close feedback loops in case of nonlinear constraints becoming active, or the the decision variables +that did not reached an upper/lower bound at the optmization run). Metacontrol automatically understands that the variables that you +did not check, were active decision variables or were used as MVs for a desing specification loop. On the right panel, you should indicate +if any CV candidate that you created (which eventually can be a constraint) were active. You should mark these variables, since you must control them +(Active-Constraint Control [8]), before using the mathematical formulations that are implemented within Metacontrol.

    +
    +

    Informing to Metaconrol active candidates and active decision variables (MVs)

    +

    At example in the figure below, mcct, f1t and f2t were nominally active at the optimal point. These are the Manipulated Variables of this +example. The remaining variable corresponds to mccp. Therefore, at the left side of the “Variable activity” panel, only the +remaining degree of freedom must be checked (mccp):

    +
    +../_images/reduced_space_var_act_left_side.png +

    Selecting unconstrained degree(s) of freedom.

    +
    +

    On the other hand, the variables mcctout, f1out and f2out are the decision variables (MVs) also listed as CV candidates, in order to analyze +if keeping them constant, there will be self-optimizing control structures using them. Since the decision variables were active, they must be eliminated from the +list of potential candidates, since the SOC methodology considers that active-constraint control is a mandatory step of the methodology. Therefore, you must mark them as active:

    +
    +../_images/reduced_space_var_act_right_side.png +

    Selecting unconstrained degree(s) of freedom.

    +
    +
    +

    Important

    +

    In a nutshell, this panel serves for you to inform to Metacontrol what are the unconstrained degrees of freedom of the +reduced-space problem, and also to inform the active candidate controlled variables (constraints, MVs listed as candidates, etc.). +With this information, Metacontrol will automatically consider only the unconstrained degrees of freedom summed with the disturbances as input variables +on the sampling, and also will not consider the active variables when +generating the high-order data (gradients and hessians). Since you are providing a modified simulation file with the active variables implemented (MVs and or constraints/CVs), they do not +need to be in the analysis, since they are already being controlled.

    +
    +
    +
    +
    +

    Range of Reduced-space Variables panel

    +

    On this panel, you will inform the lower and upper bound of the unconstrained degrees of freedom and +disturbances to be used in the sampling process, in order to generate the reduced-space kriging metamodel:

    +
    +../_images/reduced_space_range.png +

    Selecting unconstrained degree(s) of freedom.

    +
    +
    +

    Important

    +

    As showed by our previous publications, the bounds for the second (reduced-space) kriging metamodel must be a around a small margin of the +optimal operating point. You can consider this a tunable parameter. Generally, +-0.5% of the optimal operating point will generate robust prediction +of the high-order data on the next step (gradients and hessians). However, feel free to tight or loose this value if you want to try to improve your reduced-space +kriging metamodel.

    +
    +
    +
    +

    Data Source panel

    +

    On this panel you will:

    +
      +
    • Point to the Aspen Plus simulation file of the reduced-space problem, if you opt to sample +using the process simulator.

    • +
    • Use the sampling assistant, if you opt to sample using the process simulator.

    • +
    • Point to the .csv file if you opt to import an already sampled DOE of the reduced space problem.

    • +
    +
    +

    Sampling the reduced-space problem with your Aspen Plus simulation file

    +

    Under the Data Source panel, point to the Aspen Plus reduced-space problem file location:

    +
    +../_images/reduced_space_dialogbox_sim_file.png +

    Pointing to the reduced-space problem simulation file.

    +
    +

    After this, you can open the Sampling Assistant:

    +
    +../_images/reduced_space_open_sampling_assistant.png +

    Opening the sampling assistant.

    +
    +

    You will notice that the Sampling Assistant window corresponds exactly to the same +from the step 2 (Using the Sampling Assistant to sample data from Aspen Plus). Therefore, the procedure is exactly the same.

    +
    +../_images/reduced_space_sampling_assistant.png +

    The sampling assistant, the same from the sampling tab.

    +
    +

    You will define the number of cases to be sampled:

    +
    +../_images/reduced_cases_config.png +

    Configuring the number of cases to be sampled.

    +
    +

    And click on “Sample Data”. You can at any time, abort this operation (“Abort” button). +When the sampling is finished, you can click on “Done” and proceed to the next step (Differential +data).

    +
    +../_images/reduced_space_sampling_running.png +

    Sampling Assistant running cases for the reduced space problem.

    +
    +
    +../_images/reduced_space_sampling_finished.png +

    Sampling completed, just click on “Done” to go back to “Reduced Space” tab.

    +
    +
    +
    +
    +

    Reduced Space sampled Data panel

    +

    After sampling you data, if you go back to the Reduced Space Tab, you will notice that +this panel will be completed:

    +
    +../_images/reduced_space_sampled_data.png +

    Reduced Space sampled Data panel.

    +
    +

    After everything, your Reduced Space tab will be completed:

    +
    +../_images/reduced_space_completed.png +

    Reduced space tab completed. You are able to go to the next tab (Differential data).

    +
    +
    diff --git a/docs/html/gui/sampling_tab.html b/docs/html/gui/sampling_tab.html index 53fd742..d46e22f 100644 --- a/docs/html/gui/sampling_tab.html +++ b/docs/html/gui/sampling_tab.html @@ -113,6 +113,7 @@
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -181,14 +182,14 @@

    The “Sampling” tab

    -

    At this tab you will use the simulation provided on the last step to +

    At this tab you will use the simulation provided on the previous step to perform a Design of Experiments (DOE). You will be able to:

    • Define the lower and upper bounds for your manipulated variables, that will be used as the limits of the sampling and as box constraints of the optimization problem

    • Define the number of sampled cases

    • -
    • Inspect the results of the sampling, for each variable that you selected on the last +

    • Inspect the results of the sampling, for each variable that you selected on the previous step

    • Check convergence status of each case

    @@ -228,9 +229,9 @@

    Inserting the lower and upper bounds for your MVs

    Sampling Assistant panel

    This panel defines how are you going to supply the DOE data to metacontrol: Using your simulation file (recommended) or -loading an .CSV file (this is a auxiliary feature). For the first case, you are going to use the Sample Assistant from *Metacontrol:

    +loading an .CSV file (this is an auxiliary feature). For the first case, you are going to use the Sample Assistant from *Metacontrol:

    -

    Using the Sampling Assistant to sample data from Aspen Plus

    +

    Using the Sampling Assistant to sample data from Aspen Plus

    Click on “Open Sampling Assistant”:

    ../_images/sampling_assistant_select.png @@ -271,7 +272,8 @@

    Using the Sampling Assistant to sample data from Aspen Plus ../_images/sampling_running.png

    Running you Design Of Experiments (DOE): Notice that you diff --git a/docs/html/gui/soc_tab.html b/docs/html/gui/soc_tab.html index 898d400..8a1e5c3 100644 --- a/docs/html/gui/soc_tab.html +++ b/docs/html/gui/soc_tab.html @@ -97,11 +97,21 @@

  • The “Optimization” tab
  • The “Reduced Space” tab
  • The “Differential Data” tab
  • -
  • The “Self-Optimizing Control” tab
  • +
  • The “Self-Optimizing Control” tab +
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -170,7 +180,107 @@

    The “Self-Optimizing Control” tab

    -

    Placeholder text…

    +

    At this tab the self-optimizing control structure selection is made. You will be able to:

    +
      +
    • Provide the expected disturbances and implementation/measurement magnitudes to be taken +into account in your study

    • +
    • Inform Metacontrol how many best (that incurs in the lowest loss) structures do you want to analyze for each possible control structure subset size

    • +
    • Inspecting in ascending and descending order all evaluated control structures

    • +
    • Inspect the condition number of each control structure

    • +
    • Inspect linear combinations of controlled variables, if you chose to analyze more CV candidates than the unconstrained degrees of freedom available.

    • +
    +

    This tab looks like the picture below, before you start to fill the necessary data:

    +
    +../_images/soc_main_tab_before_completion.png +

    Metacontrol “Self-Optimizing Control” tab.

    +
    +

    The forms are red because you need to supply the data for the disturbances and implementation/measurement errors magnitudes.

    +

    There are three panels at this tab:

    +
      +
    • Disturbances magnitude panel

    • +
    • Measurement error panel

    • +
    • Subsets sizing options panel

    • +
    +
    +

    Disturbances magnitude panel

    +

    At this panel, you will inform to Metacontrol the expected magnitude of the disturbances. +As an example, see the figure below, where it was considered 10% of the nominal value for +the variables fpropan, fpropy and vfrac:

    +
    +../_images/soc_disturbances_magnitude_panel.png +

    Entering disturbances expected magnitudes.

    +
    +
    +
    +

    Measurement error panel

    +

    At this panel, you will enter the expected implementation/measurement error. For the example on the figure +below, it was considered 0.5°C for temperature measurements and 0.001 for flow measurements.

    +
    +../_images/soc_measurement_error_panel.png +

    Entering measurement error expected magnitudes.

    +
    +
    +
    +

    Subsets sizing options panel

    +

    At this panel you will determine how many best control structures will be reported to you by Metacontrol, +for each possible subset size:

    +
    +../_images/soc_subset_sizing_options_panel.png +

    Entering measurement error expected magnitudes.

    +
    +
    +

    Metacontrol and the maximum number of possible control structures for each subset size

    +

    Metacontrol automatically calculates the maximum number of possible control structures for +each subset size.

    +

    For the example shown in the previous figure, there are 20 CV candidates and two unconstrained degrees of freedom +available. For a single measurement policy (using one single CV candidate for each MV) there are

    +
    +\[(20! / 2!) = 20!/(2! \times (20-2)!) = 190\]
    +

    possible control structures. If the user tries to evaluate 191 (which is impossible), Metacontrol will prevent him +from doing this:

    +
    +../_images/soc_subset_sizing_impossible.png +

    Metacontrol avoiding impossible evaluations.

    +
    +
    +
    +
    +

    Analyzing your results

    +

    After completing this tab with the all necessary data, you can click on “Generate Results”, and a window will +appear:

    +
    +../_images/soc_results_review.png +
    +

    You can select which subset size you want to analyze:

    +
    +../_images/soc_analyze_subset.png +
    +

    The linear combinations generated for the possible control structures:

    +
    +../_images/soc_h_matrix.png +
    +

    And the sensitivity matrices for each possible control structure evaluated:

    +
    +../_images/soc_f_matrix.png +
    +

    In addition, you can arrange the control structures in ascending and descending loss value order, to ease +your study:

    +
    +../_images/soc_ascending_size2.png +
    +
    +../_images/soc_descending_size2.png +
    +

    For any subset size! For example, linear combinations of 6 measurements for this particular case shown here for +illustration purposes:

    +
    +../_images/soc_size6.png +
    +

    And inspect other controllability measures, such as the condition number (highlighted with a black-box):

    +
    +../_images/soc_condition_number.png +
    +
    diff --git a/docs/html/index.html b/docs/html/index.html index 76d25d9..667f0bd 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -92,6 +92,7 @@
  • Metacontrol GUI Manual
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -164,44 +165,68 @@

    Metacontrol: A metamodel based toolbox for self-optimizing control structure

    How to cite us

    -

    Please, cite the related paper:

    -
    place BibTeX entry here
    +
    +

    Our papers

    +

    Please, cite the related papers:

    +
      +
    1. Metamodel-Based Numerical Techniques for Self-Optimizing Control;

      +

      BibTeX Entry:

      +
      @article{alves2018metamodel,
      +   title={Metamodel-Based Numerical Techniques for Self-Optimizing Control},
      +   author={Alves, Victor MC and Lima, Felipe S and Silva, Sidinei K and Araujo, Antonio CB},
      +   journal={Industrial \& Engineering Chemistry Research},
      +   volume={57},
      +   number={49},
      +   pages={16817--16840},
      +   year={2018},
      +   publisher={ACS Publications}
      +   }
       
      -

      And put a star on GitHub (Star GITHUB HERE)

      +
    2. +
    3. Metacontrol Article

      +

      BibTeX Entry:

      +
      Entry goes here when the paper review is accepted
      +
      +
      +
    4. +
    +

    And become a watcher/stargazer on GitHub to receive updates!

    +

    Features

    Open-Source

    -

    Metacontrol is open-source, under the MIT license. We believe that open code just makes -scientific development more clear and generally better. Want to inspect our code? Maybe change it for your +

    Metacontrol is open-source, under the GPL v3.0 license. We believe that open code just makes +scientific development clearer and generally better. Want to inspect our code? Maybe change it for your specific desire? Have a suggestion? Go for it. Share with us!

    Built in Python

    The scientific world and data scientists are moving in a accelerated pace to Python programming language. Metacontrol was built from scratch using it. Using state-of-the-art packages -such as Numpy, Scipy, pyQT and many others, a concise and standalone software is available. You will not need any other +such as Numpy, Scipy, pyQT, pandas and many others, a concise and standalone software is available. You will not need any other software, apart from the process simulators (obviously), to run our application.

    Support for Optimization using metamodels

    One crucial step of Self-Optimizing Control methodology is to optimize a process model. -We use the the famous IpOpt Optimization package in order to do it. Therefore, you can also use Metacontrol -to optimize processes that you modelled in Aspen Plus.

    +We use the the famous IpOpt Optimization package (using a Python Interface) in order to do it. Therefore, you can also use Metacontrol +to optimize processes that you modeled in Aspen Plus.

    Usage of Kriging metamodels

    Kriging interpolators are widely used in the scientific community for prediction, optimization and data obtainment. -We use it to for optimization and high-order obtainment purposes. It is proven to generate robust precitions and results. -For further details, check our papers.

    +We use it to for optimization and high-order data obtainment purposes. It is proven to generate robust precitions and results. +For further details, check Our papers.

    State-of-the-art Self-Optimizing Control techniques

    Standing on the shoulders of giants, Metacontrol uses the most recent formulations in the SOC area available that are capable of quickly pre-screening the most promising candidate controlled variables from a given universe of possible combinations. This includes -the exact local Method with explicit solution from Alstad et al. (2009) and even branch-and-bound algorithms by Cao et al. (2009) under the hood.

    +the exact local Method with explicit solution from [1] and even branch-and-bound +algorithms [6] under the hood.

    diff --git a/docs/html/intro.html b/docs/html/intro.html index a1c3d08..77e47b6 100644 --- a/docs/html/intro.html +++ b/docs/html/intro.html @@ -101,6 +101,7 @@
  • Metacontrol GUI Manual
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • @@ -227,7 +228,7 @@

    What is Metacontrol ?

    diff --git a/docs/html/objects.inv b/docs/html/objects.inv index ce0515e..61aeb37 100644 Binary files a/docs/html/objects.inv and b/docs/html/objects.inv differ diff --git a/docs/html/overview/mtc.html b/docs/html/overview/mtc.html index 4c184a1..e1da027 100644 --- a/docs/html/overview/mtc.html +++ b/docs/html/overview/mtc.html @@ -89,13 +89,11 @@ @@ -163,7 +161,7 @@

    Metacontrol Methodology Overview

    The “top-down” part of the self-optimizing control structure selection -methodology developed by Skogestad ([6]) has the following main steps:

    +methodology developed by Skogestad ([8]) has the following main steps:

    1. Identify the relevant process variables: Manipulated variables, disturbances, and potential candidate controlled variables @@ -175,11 +173,11 @@

      Metacontrol Methodology Overview[6])

    2. +“active constraint control” ([8])

    3. Evaluate the loss resulting from a constant setpoint policy -([3]) for each possible control configuration for the +([3]) for each possible control configuration for the remaining (unconstrained) degrees of freedom. This is done in Metacontrol using, -e.g., local (linear) methods ([3][4][5][1]), +e.g., local (linear) methods ([3][4][5][1]), where a reduced-space (unconstrained) problem is required to obtain gradients with respect to candidate controlled variables and disturbances, and the Hessian of the objective function evaluated at the optimal @@ -202,34 +200,10 @@

      Metacontrol Methodology Overview[2]. The user will simply navigate between easy-to-use sequential tabs, +to perform the SOC analysis using metamodels, proposed by [2]. The user will simply navigate between easy-to-use sequential tabs, providing information for the problem that he wants to study, and the results will become available in real-time. Over the next session, each tab of Metacontrol will be discussed in detail, in order to teach you how to use it!

      -
      -

      Bibliography

      -

      -
      1
      -

      Vidar Alstad, Sigurd Skogestad, and Eduardo S. Hori. Optimal measurement combinations as controlled variables. Journal of Process Control, 19(1):138 – 148, 2009. URL: http://www.sciencedirect.com/science/article/pii/S0959152408000073, doi:https://doi.org/10.1016/j.jprocont.2008.01.002.

      -
      -
      2
      -

      Victor M. C. Alves, Felipe S. Lima, Sidinei K. Silva, and Antonio C. B. Araujo. Metamodel-based numerical techniques for self-optimizing control. Industrial & Engineering Chemistry Research, 57(49):16817–16840, 2018. URL: https://doi.org/10.1021/acs.iecr.8b04337, arXiv:https://doi.org/10.1021/acs.iecr.8b04337, doi:10.1021/acs.iecr.8b04337.

      -
      -
      3(1,2)
      -

      Ivar J. Halvorsen, Sigurd Skogestad, John C. Morud, and Vidar Alstad. Optimal selection of controlled variables. Industrial & Engineering Chemistry Research, 42(14):3273–3284, 2003. URL: https://doi.org/10.1021/ie020833t, arXiv:https://doi.org/10.1021/ie020833t, doi:10.1021/ie020833t.

      -
      -
      4
      -

      Eduardo S. Hori, Sigurd Skogestad, and Vidar Alstad. Perfect steady-state indirect control. Industrial & Engineering Chemistry Research, 44(4):863–867, 2005. URL: https://doi.org/10.1021/ie049736l, arXiv:https://doi.org/10.1021/ie049736l, doi:10.1021/ie049736l.

      -
      -
      5
      -

      Eduardo Shigueo Hori and Sigurd Skogestad. Selection of controlled variables: maximum gain rule and combination of measurements. Industrial & Engineering Chemistry Research, 47(23):9465–9471, 2008. URL: https://doi.org/10.1021/ie0711978, arXiv:https://doi.org/10.1021/ie0711978, doi:10.1021/ie0711978.

      -
      -
      6(1,2)
      -

      Sigurd Skogestad. Plantwide control: the search for the self-optimizing control structure. Journal of Process Control, 10(5):487 – 507, 2000. URL: http://www.sciencedirect.com/science/article/pii/S0959152400000238, doi:https://doi.org/10.1016/S0959-1524(00)00023-8.

      -
      -
      -

      -

    diff --git a/docs/html/overview/z_mtc.html b/docs/html/overview/z_mtc.html new file mode 100644 index 0000000..17cc022 --- /dev/null +++ b/docs/html/overview/z_mtc.html @@ -0,0 +1,258 @@ + + + + + + + + + + + Metacontrol Methodology Overview — Metacontrol 1.0.4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Metacontrol Methodology Overview

    +

    The “top-down” part of the self-optimizing control structure selection +methodology developed by Skogestad ([7]) has the following main steps:

    +
      +
    1. Identify the relevant process variables: Manipulated +variables, disturbances, and potential candidate controlled variables +(process measurements), and perform a Degree of Freedom (DOF) analysis +taking into account both steady and dynamic states of the process.

    2. +
    3. Define optimal operation: Formulate the problem with objective +function and constraints to be used in order to seek an optimal operating point.

    4. +
    5. (Mathematically) Model the (industrial) process. Metacontrol is currently compatible +with Aspen Plus.

    6. +
    7. Optimize the process model as formulated in step 2.

    8. +
    9. Implement the active constraints found in the previous step - +“active constraint control” ([7])

    10. +
    11. Evaluate the loss resulting from a constant setpoint policy +([3]) for each possible control configuration for the +remaining (unconstrained) degrees of freedom. This is done in Metacontrol using, +e.g., local (linear) methods ([3][4][5][1]), +where a reduced-space (unconstrained) problem is required to obtain +gradients with respect to candidate controlled variables and disturbances, +and the Hessian of the objective function evaluated at the optimal +point found in step 4. As stated before in the introduction, Metacontrol uses +Kriging predictors to evaluate gradient and hessian matrices. +Note that the use of local methods requires the specification of disturbance +magnitudes and measurement errors associated with each candidate controlled +variable of step 1.

    12. +
    +

    The basic structure of Metacontrol showing the two modes +of operation is depicted in Figure below. Mode 1 is the +complete implementation of steps 1 through 6 of the SOC procedure, where a +first metamodel of the process is generated to evaluate the optimal operating +point with all degrees of freedom available, while mode 2 is a shortcut taken +when the optimal steady-state is known. In both cases, an extra metamodel is +produced as the reduced space model using the remaining unconstrained degrees +of freedom.

    +
    +../_images/metacontrol-workflow.svg

    Basic flowchart of the Metacontrol workflow.

    +
    +

    The graphical user interface (GUI) of Metacontrol is a paradigm of the steps +that are needed +to perform the SOC analysis using metamodels, proposed by [2]. The user will simply navigate between easy-to-use sequential tabs, +providing information for the problem that he wants to study, and the results will become +available in real-time. Over the next session, each tab of Metacontrol will be discussed in +detail, in order to teach you how to use it!

    +
    + + +
    + +
    + + +
    +
    + +
    + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/html/search.html b/docs/html/search.html index 2ae9cdb..0bf32cf 100644 --- a/docs/html/search.html +++ b/docs/html/search.html @@ -92,6 +92,7 @@
  • Metacontrol GUI Manual
  • Examples
  • Theoretical Backgrounds
  • +
  • Bibliography
  • diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js index 1c564a4..a8f07ef 100644 --- a/docs/html/searchindex.js +++ b/docs/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["gui/gui_index","gui/optimization_tab","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":2,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["gui\\gui_index.rst","gui\\optimization_tab.rst","index.rst"],objects:{},objnames:{},objtypes:{},terms:{"final":1,"function":[0,1],"import":1,And:2,For:[1,2],MVs:1,One:2,The:[0,2],There:1,Using:2,abort:1,abov:1,acceler:2,achiev:2,activ:1,actual:1,adapt:0,addit:1,adp:1,affect:1,after:1,algorithm:[1,2],alias:0,all:1,allow:1,also:[1,2],alstad:2,ani:[1,2],apart:2,applic:2,area:2,aspen:2,assembl:2,assist:0,automat:1,avail:2,background:[1,2],becaus:1,befor:1,begin:1,believ:2,better:2,bibliographi:2,bibtex:2,bound:[0,1,2],box:1,branch:2,bundl:2,butan:2,can:[1,2],candid:2,cao:2,capabl:2,chang:2,check:2,clear:2,click:1,code:2,column:2,combin:2,commun:2,compress:2,concis:[1,2],configur:1,contract:1,control:0,correl:0,creat:1,criteria:[1,2],crucial:2,current:1,data:[0,2],decis:1,defin:1,definit:0,desir:2,detail:2,develop:2,differenti:[0,2],distil:2,doe:0,dure:1,each:[0,1],end:1,entri:2,environ:0,equal:1,evalu:1,even:2,exact:2,exampl:[1,2],explan:1,explicit:2,express:1,f1t:1,f2t:1,factor:1,famou:2,fast:2,feasibl:1,featur:0,file:0,first:1,five:1,form:1,formul:2,from:[0,2],further:2,gener:[0,2],giant:2,github:2,give:1,given:2,gui:2,hand:1,has:1,have:[1,2],here:[1,2],high:2,hood:2,how:1,hyperparamet:0,implement:[1,2],inact:1,includ:2,incorpor:1,index:2,indic:1,infeasibl:1,infil:[1,2],info:0,inform:1,insid:1,inspect:[1,2],instal:2,interpol:2,introduc:0,introduct:2,ipopt:[1,2],iter:1,its:1,just:2,kernel:0,krige:1,languag:2,largest:1,leq:1,licens:2,like:1,load:[0,2],local:2,look:1,lower:1,main:[0,1],make:2,mandatori:1,mani:[1,2],manipul:1,manual:2,maximum:1,mayb:2,mcct:1,metacontrol:1,metamodel:[0,1],method:2,methodolog:[1,2],metric:0,mit:2,model:[0,1,2],modifi:1,modifii:1,modul:2,moment:1,more:2,most:2,move:2,nativ:1,need:2,neg:1,nlp:0,nonlinear:1,numpi:2,object:1,obtain:2,obvious:2,oper:1,optim:0,option:0,order:[0,1,2],other:[1,2],our:[1,2],output:1,over:0,overview:[1,2],pace:2,packag:2,page:2,panel:0,paper:2,paramet:1,penalti:1,perform:0,place:2,pleas:2,plu:2,point:1,possibl:2,pre:2,precit:2,predict:[1,2],previou:1,problem:1,process:2,product:2,program:2,promis:2,propan:2,propen:2,proven:2,purif:2,purpos:2,put:2,pyqt:2,quickli:2,real:1,recent:2,reduc:[0,2],refer:1,refin:1,region:1,regress:[0,1],relat:2,respons:1,result:[0,2],robust:2,run:2,sampl:[0,2],scientif:2,scientist:2,scipi:2,scratch:2,screen:2,search:2,second:1,section:[0,1],see:1,select:[0,1],self:[0,1],setup:0,sever:2,share:2,shoulder:2,show:[0,1],simul:[0,2],singl:2,soc:2,softwar:[0,2],solut:2,solver:0,space:[0,2],specif:2,stand:2,standalon:2,star:2,start:1,state:1,step:[1,2],subject:1,suggest:2,summari:1,support:1,surrog:2,tab:[0,2],termin:1,theoret:[1,2],therefor:[1,2],theta:0,thi:[0,1,2],three:1,time:1,toler:1,trust:1,type:0,under:[1,2],understand:1,unit:2,univers:2,use:2,used:[1,2],user:0,uses:2,valid:0,valu:1,variabl:[0,1,2],via:2,violat:1,want:2,were:1,what:2,which:2,wide:2,within:1,work:1,world:2,written:1,you:[1,2],your:[1,2]},titles:["Metacontrol GUI Manual","The \u201cOptimization\u201d tab","Metacontrol: A metamodel based toolbox for self-optimizing control structure selection"],titleterms:{The:1,adapt:1,art:2,base:2,built:2,cite:2,constraint:1,content:2,control:[1,2],document:2,featur:2,gui:0,how:2,indic:2,interpret:1,krige:2,manual:0,metacontrol:[0,2],metamodel:2,nlp:1,open:2,optim:[1,2],option:1,panel:1,perform:1,python:2,result:1,run:1,sampl:1,select:2,self:2,setup:1,solver:1,sourc:2,state:2,structur:2,support:2,tab:1,tabl:2,techniqu:2,toolbox:2,usag:2,using:2}}) \ No newline at end of file +Search.setIndex({docnames:["examples/c3splitter","examples/cpu","examples/ic4","examples/tutorials","gui/diff_data_tab","gui/gui_index","gui/load_sim_tab","gui/metamodel_tab","gui/optimization_tab","gui/reduced_space_tab","gui/sampling_tab","gui/soc_tab","index","intro","overview/mtc","theory/optimization","theory/soc","theory/surrogates","theory/theory_index","zbibliography"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":2,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["examples\\c3splitter.rst","examples\\cpu.rst","examples\\ic4.rst","examples\\tutorials.rst","gui\\diff_data_tab.rst","gui\\gui_index.rst","gui\\load_sim_tab.rst","gui\\metamodel_tab.rst","gui\\optimization_tab.rst","gui\\reduced_space_tab.rst","gui\\sampling_tab.rst","gui\\soc_tab.rst","index.rst","intro.rst","overview\\mtc.rst","theory\\optimization.rst","theory\\soc.rst","theory\\surrogates.rst","theory\\theory_index.rst","zbibliography.rst"],objects:{},objnames:{},objtypes:{},terms:{"8b04337":19,"break":6,"case":[6,7,9,10,11,14],"default":7,"export":10,"final":8,"function":[4,5,7,8,13,14],"import":[8,9],"public":[9,10,12],"true":4,"try":[6,9,13],"while":14,ACS:12,And:[6,9,11,12],CVs:[4,6,9],For:[4,6,7,8,10,11,12,19],LHS:10,MVs:[4,8],OLE:6,One:12,That:[7,10],The:[5,12,13,14,18],Then:13,There:[4,6,7,8,9,10,11,13],These:[9,10],Use:9,Using:[9,12],With:[9,10],abl:[4,6,7,9,10,11],abort:[8,9,10],about:6,abov:[6,8,13],abs:6,absolut:[6,7],acceler:12,accept:[12,13],accordingli:13,account:[11,14],achiev:[12,13],aco:6,acount:4,acs:19,activ:[4,5,6,8,13,14],actual:[6,8],adapt:5,add:6,added:[4,6,7],adding:6,addit:[4,6,7,8,10,11,13],addition:9,addtion:[],adjust:7,adp:8,affect:8,aforement:4,after:[4,6,7,8,9,10,11],against:7,algorithm:[8,12],alia:6,alias:[4,5,7,10],all:[6,7,8,10,11,13,14],allow:[6,7,8,13,19],alphanumer:6,alreadi:9,also:[6,7,8,9,12],alstad09:[],alstad:19,alv:[12,19],alves2018:[],alves2018metamodel:12,alwai:6,anaconda:13,analysi:[6,9,13,14],analyt:4,analyz:[5,9],ani:[4,6,8,9,10,11,12],antonio:[12,19],apart:12,appear:[4,6,7,11],applic:[12,13],approach:13,approxim:13,araujo:[12,19],arccosin:6,arcsin:6,arctang:6,area:12,argument:13,around:9,arrang:11,articl:[12,19],arxiv:19,ascend:11,asin:6,aspect:7,aspen:[6,12,13,14],aspentech:13,assembl:12,assist:[5,9],associ:14,assur:7,atan:6,author:[12,13],automat:[4,8,9,10,11],auxiliari:[6,10],avail:[6,7,10,11,12,13,14],avoid:11,axes:7,axi:7,back:[6,9],background:[4,6,7,8,12],backup:6,bar:10,base:[4,6,7,13,19],basic:[7,13,14],becaus:[4,6,8,11],becom:[6,9,12,14],been:4,befor:[4,6,8,9,11,13,14],begin:8,behind:13,being:[8,9,10],believ:12,below:[9,11,13,14,19],best:[7,11],better:12,between:[4,6,7,13,14],bibliographi:12,bibtex:12,bidirect:19,bkp:[6,9],black:[11,13],block:[6,9],blue:[4,10],both:14,bottom:7,bound:[5,6,8,9,12,19],box:[4,7,8,10,11,13],branch:[12,19],bring:10,brute:13,bruun:19,build:7,built:4,bundl:12,butan:[3,12],button:[6,7,9,10],calcul:[4,6,11],call:[6,13],can:[4,6,7,8,9,10,11,12,13,19],cancel:10,candid:[4,7,11,12,13,14],cao:19,capabl:[4,7,12,13],caus:6,ceil:6,certainli:6,chanc:7,chang:[12,13],charact:6,check:[4,6,7,9,10,12],checkbox:6,chemic:[6,19],chemistri:[12,19],choos:[4,7,10],chose:[7,10,11],classic:[7,13],classifi:6,clear:[],clearer:12,click:[4,6,7,8,9,10,11],close:9,closer:[4,7],closest:6,co2:6,co2rrcv:4,code:[12,13],collabor:13,collect:10,color:6,column:[3,12],com:[6,19],combin:[11,12,19],combinatori:13,command:13,common:6,commun:[10,12,13],compar:13,compat:14,complet:[4,7,9,10,11,14,19],compon:6,comprehens:13,compress:[3,6,12],comput:[10,19],concept:13,concis:[8,12],conclud:7,conda:13,condit:11,configur:[7,8,9,14],congreg:13,consequ:13,consid:[4,7,9,11],constant:[6,7,9,13,14],constraint:[4,7,9,10,14],construct:7,consult:10,consum:[9,13],contract:8,control:[4,5,6,9,13,14,19],conveni:6,converg:10,copi:[6,9],corner:[6,10],correct:6,correctli:6,correl:5,correspond:[4,9],corrupt:6,cos:6,cosin:6,cpu:1,creat:[4,7,8,9,13],creation:6,criteria:[8,12,18],crucial:[12,13],csv:[9,10],current:[7,8,10,13,14],curv:7,dace:19,damag:6,data:[5,6,7,11,12,13],datafram:4,decis:[8,13],deeper:7,defin:[7,8,9,10,14],definit:[5,13],degre:[4,9,11,13,14],depend:13,depict:14,deriv:4,descend:11,describ:4,descript:6,dese:9,design:[6,7,9,10,13],desir:[6,10,12,13],detail:[4,12,13,14],determin:[11,13],develop:[12,13,14],deviat:[7,9],dialog:4,did:[6,9],differ:[6,7],differenti:[5,9,12],directori:13,disabl:6,disappear:6,discard:10,discuss:[4,14],displai:10,distil:[3,12],disturb:[5,7,9,13,14],divis:6,doe:[5,6,7,9],dof:14,doi:19,doing:11,done:[9,10,14],doubl:7,down:[6,14],download:13,dozen:13,dropdown:[6,7],dtu:19,dure:8,dynam:14,each:[4,5,6,7,8,10,13,14],eas:[6,11],easi:[4,7,14],easier:6,easili:4,edit:7,eduardo:19,either:13,element:4,elewher:7,elimin:9,encapsul:4,end:8,engin:[6,10,12,13,19],enough:[7,10],enter:[6,11],entri:12,environ:[5,13],equal:8,error:[5,6,7,14],essenti:4,estim:5,etc:[6,9,13],euler:6,eval:13,evalu:[4,7,8,11,13,14],even:[7,12,13],eventu:[6,9],everi:[4,13],everyth:9,exact:[4,12,18,19],exactli:[4,9],exampl:[4,6,8,9,11,12],excel:13,exclus:13,exist:[6,19],exp:6,expans:13,expect:[7,11],experi:[6,7,10],explan:[7,8],explicit:[12,18],exponenti:[6,7],express:[4,6,8,13],extens:6,extra:14,extract:4,f1out:9,f1t:[8,9],f2out:9,f2t:[8,9],facilit:13,factor:8,famou:12,fast:12,fco2in:6,fco2out:[4,6],feasibl:8,featur:[5,7,10],feedback:9,feel:9,felip:[12,19],felipes21:13,field:10,figur:[7,9,11,14],file:[5,10],fill:11,finish:9,first:[7,8,10,14],fit:7,five:8,fix:9,floor:6,flow:11,flowchart:14,flowsheet:[0,1,2,6],focu:13,fold:7,folder:13,follow:[6,13,14],forc:13,forev:13,forg:13,forgot:6,form:[6,7,8,11],format:[4,6],formul:[9,12,13,14],found:[9,14,19],four:[4,6,9],fpropan:11,fpropi:11,free:9,freedom:[4,9,11,13,14],from:[4,5,6,7,9,11,12,14],front:10,full:13,fulli:13,fundament:13,further:12,futur:7,gain:[4,19],gave:6,gear:10,gener:[4,5,9,10,11,12,13,14],geq:6,giant:12,github:12,give:[4,6,7,8],given:[12,13],glanc:6,goe:12,going:[6,7,9,10],good:[7,13],gpl:12,gradient:[5,9,13,14],graphic:14,green:6,group:7,guarante:6,gui:[6,12,14],guid:13,had:7,halvorsen:19,han:19,hand:[8,9],happen:4,has:[4,8,13,14],have:[6,8,12,13],hehe:[],hei:13,help:4,her:13,here:[4,7,8,9,10,11,12],hessian:[5,9,13,14],high:[4,9,12,13],highlight:[4,10,11],him:11,his:13,hit:10,hood:12,hori:19,hour:13,hover:6,how:[7,8,10,11,13,14],howev:9,http:19,hypercub:10,hyperparamet:[4,5],icon:10,idea:[7,9,13],identifi:14,ie020833t:19,ie049736l:19,ie0711978:19,iecr:19,illustr:11,imag:[6,7],implement:[8,9,11,12,13,14],imposs:11,improv:[9,10],inact:8,includ:[7,10,12],incorpor:8,incur:11,index:[4,12],indic:[6,8,9],indirect:19,industri:[12,13,14,19],infeasibl:8,infil:[8,12,18],info:5,inform:[6,8,11,14],initi:[6,7,9],input:[6,9,10],insid:[6,8],inspect:[4,6,8,10,11,12,13],instal:12,instanc:[6,7],instruct:13,integ:6,intent:6,intention:10,interest:13,interfac:[12,13,14],intern:7,interpol:[6,7,12,13],interpret:13,interv:6,introduc:5,introduct:[12,14],ipopt:[8,12,13],isomer:2,iter:[8,10],its:[8,10],itself:7,ivar:19,jacob:19,job:7,john:19,journal:[12,19],jprocont:19,jump:13,just:[4,6,7,9,12,13],justif:10,kariwala:19,keep:[6,9,13],kernel:5,known:14,krige:[6,7,8,9,13,14,18,19],languag:12,largest:8,last:[4,13],later:6,latin:10,latter:7,learn:13,least:13,leav:7,left:[7,9,10],leq:[6,8],licens:12,like:[8,11,13],likelihood:[4,7],lima:[12,19],limit:10,linear:[7,11,13,14],list:[4,6,7,9,19],liter:[10,13],literatur:19,load:[5,10,12],local:[4,12,13,14,18,19],locat:[6,9],log:6,logarithm:6,look:[4,7,8,11],loop:9,loos:9,lophaven:19,loss:[11,13,14],lower:[6,7,8,9],lowest:11,machin:13,made:[11,13],magnitud:[5,13,14],main:[4,5,6,7,8,9,10,13,14,19],mainli:13,mainwindow:13,make:[4,6,12],mandatori:[8,9],mani:[8,10,11,12],manipul:[6,8,9,10,14],manual:12,margin:9,mark:9,math:6,mathemat:[7,9,13,14],matlab:[13,19],matplotlib:[7,13],matric:[4,11,14],maxim:7,maximum:[4,8,19],mayb:12,mccp:[4,9],mcct:[8,9],mcctout:9,mean:7,measur:[5,6,9,13,14,19],mention:13,metacontrol:[4,6,7,8,9,10,19],metamodel:[5,6,8,9,10,13,14,19],method:[4,10,12,13,14,18,19],methodolog:[8,9,12,13],metric:[4,5],microsoft:13,might:6,miniconda:13,minim:13,minu:6,miss:6,mistyp:6,mit:[],mode:14,model:[5,6,8,10,12,13,14,18],modif:6,modifi:[8,9],modifii:8,modul:12,moment:[8,10],more:11,morud:19,most:[12,13],mous:[6,7],move:12,mtc:13,multipl:6,must:[6,9],name:[6,13],nativ:[6,8],natur:[6,13],navig:[6,14],ndergaard:19,neat:13,neatli:[6,10],necessari:[4,6,9,11,13],need:[6,7,9,11,12,13,14],neg:8,next:[7,9,10,14],nielsen:19,nlp:5,nomin:[4,9,11],non:6,nonetheless:13,nonlinear:[8,9],note:[4,6,7,10,14],notic:[4,6,9,10],now:[4,6,7,10,13],ntnu:13,number:[6,7,9,10,12,13],numer:[12,13,19],numpi:12,nutshel:9,nymand:19,object:[4,7,8,13,14],obtain:[12,13,14],obvious:12,occur:13,oev:7,oma:7,oms:7,one:[4,6,7,11,13],onli:[4,6,7,9,13],open:[4,6,9,10,13],oper:[6,7,8,9,13,14],opt:[7,9,10],optim:[4,5,6,7,9,10,13,14,18,19],optimizaiton:9,option:[4,5,7,13],optmiz:9,or2:7,orbit:19,order:[4,5,6,7,8,9,10,11,12,13,14],org:19,organ:6,origin:7,orms:7,other:[8,9,11,12,13],our:[4,7,8,9,10,13,19],output:[6,8,9],over:[5,6,7,14],overal:[7,10],overview:[4,7,8,9,10,12],pace:12,packag:[6,7,12,13],page:[12,13],pan:7,panda:[12,13],panel:5,paper:[4,7,19],paradigm:14,paramet:[7,8,9],part:[6,14,19],particular:11,path:13,penalti:8,percentag:7,perfect:19,perform:[5,6,10,14],perman:6,perspect:6,pictur:11,pii:19,pip:13,place:[],placehold:[0,1,2,3,15,16,17],plant:[6,9],plantwid:[6,19],pleas:[6,12],plot:7,plu:[6,12,13,14],point:[6,8,9,13,14],pointer:6,polici:[11,13,14],possibl:[6,7,12,13,14],potenti:[6,9,14],power:13,pre:[12,13],precit:12,predict:[7,8,9,12],predictor:14,prefer:13,prerequisit:13,pretti:[7,10],prevent:11,previou:[4,8,9,10,11,13,14],previous:[6,7],primari:13,problem:[4,6,8,10,13,14],proce:9,procedur:[4,9,14],process:[1,2,4,6,9,10,12,13,14,19],produc:[7,14],product:[3,6,12],program:[12,13],progress:10,promis:[12,13],prompt:13,propan:[3,12],propen:[3,12],proper:6,propos:14,prove:9,proven:12,provid:[7,9,10,11,14],publish:12,purif:[3,6,12],puriti:6,purpos:[7,11,12],pursu:13,push:10,put:[],pydac:[7,13],pyqt:12,pysoc:13,python:13,pywin32:13,quadrat:[7,13],quick:6,quickli:[12,13],radio:7,rang:5,rather:13,ratio:6,reach:9,reaction:6,read:4,readi:4,real:[8,10,13,14],realli:6,receiv:12,recent:[12,13],recommend:[7,10,13],rectangl:7,red:[6,11],reduc:[5,7,12,14],refer:[7,8],refin:[7,8],regard:6,region:8,regress:[5,8],relat:12,releas:[7,13],relev:[6,14],remain:[4,7,9,14],rememb:[6,13],remind:6,remov:4,ren:19,reoptim:13,repeat:6,report:[6,11],repositori:13,represent:7,requir:[13,14],research:[12,19],reset:7,respect:[9,13,14],respons:[7,8,13],result:[5,6,12,14],reveal:10,review:12,right:[6,7,9],robust:[4,7,9,12,13],root:7,round:6,routin:10,rule:19,run:[6,9,10,12,13],s0959152400000238:19,s0959152408000073:19,s0959:19,same:[4,6,9],sampl:[5,7,12],sampler:10,satisfi:7,save:[6,7,9,10],scienc:19,sciencedirect:19,scientif:[12,13],scientist:[12,13],scipi:[12,13],scratch:12,screen:[6,7,10,12,13],search:[12,19],second:[8,9],section:[4,5,7,8],see:[6,7,8,10,11],seek:[7,14],select:[4,5,8,9,10,11,13,14,19],self:[4,5,6,8,9,13,14,19],sensit:[6,11],sent:10,separ:7,sequenti:14,seri:13,serv:[6,9],session:14,set:[7,13],setpoint:[13,14],setup:5,sever:[6,7,12,13],share:12,shigueo:19,shortcut:14,should:[6,9,13],shoulder:12,show:[5,6,8,9,10,14],shown:[10,11],side:9,sidinei:[12,19],signal:6,sigurd:[13,19],silva:[12,19],simpl:13,simplejson:13,simpli:[6,7,10,13,14],simul:[5,10,12,13],sin:6,sinc:[7,9,13],sine:6,singl:[11,12],six:7,size:5,sklearn:13,skoge00:[],skogestad:[13,14,19],slider:7,small:9,soc:[9,12,13,14],softwar:[5,12,13],solut:[12,18],solv:[6,13],solver:5,some:4,someth:6,sourc:5,space:[5,7,12,14],specif:[6,9,12,14],specifi:6,spell:6,squar:7,stabl:13,stand:12,standalon:12,standard:7,star:[],stargaz:12,start:[4,8,10,11],state:[8,13,14,19],statu:10,steadi:[14,19],step:[4,7,8,9,10,12,13,14],straightforward:[10,13],stream:[6,9],structur:[4,9,13,14,19],struggl:13,studi:[6,7,11,13,14],subject:8,subplot:7,subset:[5,13],subtract:6,suffic:13,suggest:[12,13],sum:9,summari:8,supersed:6,suppli:[6,10,11],support:[6,8],sure:6,surrog:[12,13,18],surropt:13,syntax:6,synthes:13,tab:[5,12,14],take:[4,7,13,14],taken:[4,11,14],tan:6,tangent:6,taylor:13,teach:14,techniqu:[10,19],tell:13,temperatur:11,termin:8,test:7,text:[0,1,2,3,15,16,17],than:[11,13],thank:7,thei:[6,7,9],them:[4,9,13],theoret:[4,7,8,12],therefor:[4,8,9,12],thermodynam:6,theta:5,thi:[4,5,6,7,8,9,10,11,12,13,14],thousand:13,three:[8,10,11],through:14,tight:9,time:[6,8,9,10,11,13,14],titl:12,toler:8,tool:13,toolbox:19,top:14,train:[5,7],tree:6,tri:11,trust:8,tttt:[],tunabl:9,tune:13,turn:6,two:[6,11,13,14],type:[5,6,10,13],unconstrain:[4,9,11,14],under:[4,8,9,10,12],understand:[4,8,9],unit:[3,12],univers:12,unzip:13,updat:[8,10,12],upper:[6,7,9],url:19,usag:10,use:[6,7,10,12,13,14],used:[6,7,8,9,10,12,13,14],user:[5,11,13,14],uses:[12,13,14],using:[4,6,7,9,11,13,14,18],valid:[4,5,6,13],valu:[4,6,7,8,9,10,11,13],variabl:[4,5,8,10,11,12,13,14,19],varianc:7,veri:6,version:[13,19],versu:7,vertic:10,vfrac:11,via:[12,13,18],victor:[12,19],vidar:19,view:7,vinai:19,violat:8,virtual:13,volum:12,wai:13,want:[4,6,7,9,10,11,12,13,14],warn:6,wast:13,watcher:12,were:[4,8,9,13],what:[6,9,12],when:[9,12,13,14],whenev:13,where:[4,6,9,11,14],which:[4,6,7,9,11,12,13],whichev:13,whose:13,wide:12,window:[4,6,7,9,11,13],within:[6,8,9,13],without:13,work:[4,7,8],workflow:14,world:12,written:[6,8],www:19,year:12,yet:13,you:[4,6,7,8,9,10,11,12,13,14,19],your:[5,8,12,13],your_env_nam:13,zoom:7},titles:["Propene/Propane Distillation Column","Compression Purification Unit","n-Butane Production Unit","Examples","The \u201cDifferential Data\u201d tab","Metacontrol GUI Manual","The \u201cLoad Simulation\u201d tab","The \u201cMetamodel\u201d tab","The \u201cOptimization\u201d tab","The \u201cReduced Space\u201d tab","The \u201cSampling\u201d tab","The \u201cSelf-Optimizing Control\u201d tab","Metacontrol: A metamodel based toolbox for self-optimizing control structure selection","Introduction","Metacontrol Methodology Overview","Optimization via Infill Criteria using Surrogates","The Exact Local Method with Explicit Solution","Surrogate modeling - Kriging","Theoretical Backgrounds","Bibliography"],titleterms:{"function":6,MVs:[9,10],The:[4,6,7,8,9,10,11,16],Using:10,acess:4,activ:9,adapt:8,alias:6,analyz:11,art:12,aspen:[9,10],assist:10,associ:6,background:18,base:12,bibliographi:19,binari:13,bound:[7,10],built:[7,12],butan:2,candid:[6,9],chang:7,choos:6,cite:12,column:0,compress:1,configur:4,constraint:[6,8],content:12,control:[8,11,12],correl:7,creat:6,criteria:15,data:[4,9,10],decis:9,defin:6,definit:[6,7,10],differenti:4,distil:0,disturb:11,document:12,doe:10,each:11,error:11,estim:[4,7],exact:16,exampl:3,exe:13,explicit:16,featur:12,file:[6,9],from:[10,13],gener:7,gradient:4,graphic:7,gui:5,have:7,hessian:4,hold:7,how:12,hyperparamet:7,indic:12,infil:15,info:6,inform:9,insert:10,inspect:7,instal:13,interpret:8,introduct:13,its:7,kernel:7,krige:[4,12,17],load:6,local:16,lower:10,magnitud:11,manual:5,maximum:11,measur:11,metaconrol:9,metacontrol:[5,11,12,13,14],metamodel:[4,7,12],method:16,methodolog:14,metric:7,model:[7,17],nlp:8,number:11,object:6,open:12,optim:[8,11,12,15],option:[8,11],our:12,out:7,overview:14,panel:[4,6,7,8,9,10,11],paper:12,perform:[4,7,8],plu:[9,10],possibl:11,problem:9,product:2,propan:0,propen:0,provid:6,purif:1,python:12,rang:9,reduc:[4,9],regress:7,result:[4,7,8,10,11],run:8,sampl:[8,9,10],select:[6,7,12],self:[11,12],setup:8,simul:[6,9],size:11,solut:16,solver:8,sourc:[9,12,13],space:[4,9],state:12,structur:[11,12],subset:11,support:12,surrog:[15,17],tab:[4,6,7,8,9,10,11],tabl:12,techniqu:12,them:6,theoret:18,theta:7,toolbox:12,train:4,type:7,unit:[1,2],upper:10,usag:12,user:6,using:[12,15],valid:7,variabl:[6,7,9],via:15,what:13,your:[4,6,7,9,10,11]}}) \ No newline at end of file diff --git a/docs/html/theory/optimization.html b/docs/html/theory/optimization.html index 143ff93..562e8d6 100644 --- a/docs/html/theory/optimization.html +++ b/docs/html/theory/optimization.html @@ -98,6 +98,7 @@
  • The Exact Local Method with Explicit Solution
  • +
  • Bibliography
  • diff --git a/docs/html/theory/soc.html b/docs/html/theory/soc.html index 26cc890..519b98e 100644 --- a/docs/html/theory/soc.html +++ b/docs/html/theory/soc.html @@ -39,6 +39,7 @@ + @@ -97,6 +98,7 @@
  • The Exact Local Method with Explicit Solution
  • +
  • Bibliography
  • @@ -176,6 +178,8 @@

    The Exact Local Method with Explicit Solution + + diff --git a/docs/html/theory/surrogates.html b/docs/html/theory/surrogates.html index 7865a59..efe5642 100644 --- a/docs/html/theory/surrogates.html +++ b/docs/html/theory/surrogates.html @@ -98,6 +98,7 @@
  • The Exact Local Method with Explicit Solution
  • +
  • Bibliography
  • diff --git a/docs/html/theory/theory_index.html b/docs/html/theory/theory_index.html index d83bfaf..6456630 100644 --- a/docs/html/theory/theory_index.html +++ b/docs/html/theory/theory_index.html @@ -98,6 +98,7 @@
  • The Exact Local Method with Explicit Solution
  • +
  • Bibliography
  • @@ -163,7 +164,7 @@
    -

    Theoretical Backgrounds

    +

    Theoretical Backgrounds

    • Surrogate modeling - Kriging
    • diff --git a/docs/html/zbibliography.html b/docs/html/zbibliography.html new file mode 100644 index 0000000..02db10f --- /dev/null +++ b/docs/html/zbibliography.html @@ -0,0 +1,240 @@ + + + + + + + + + + + Bibliography — Metacontrol 1.0.4 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + + + +
      + + + + + +
      + +
      + + + + + + + + + + + + + + + + + +
      + + + + +
      +
      +
      +
      + +
      +

      Bibliography

      +

      You can found the main literature the allows Metacontrol to exist below. +For the complete list, go to Our papers.

      +

      +
      1
      +

      Vidar Alstad, Sigurd Skogestad, and Eduardo S. Hori. Optimal measurement combinations as controlled variables. Journal of Process Control, 19(1):138 – 148, 2009. URL: http://www.sciencedirect.com/science/article/pii/S0959152408000073, doi:https://doi.org/10.1016/j.jprocont.2008.01.002.

      +
      +
      2
      +

      Victor M. C. Alves, Felipe S. Lima, Sidinei K. Silva, and Antonio C. B. Araujo. Metamodel-based numerical techniques for self-optimizing control. Industrial & Engineering Chemistry Research, 57(49):16817–16840, 2018. URL: https://doi.org/10.1021/acs.iecr.8b04337, arXiv:https://doi.org/10.1021/acs.iecr.8b04337, doi:10.1021/acs.iecr.8b04337.

      +
      +
      3
      +

      Ivar J. Halvorsen, Sigurd Skogestad, John C. Morud, and Vidar Alstad. Optimal selection of controlled variables. Industrial & Engineering Chemistry Research, 42(14):3273–3284, 2003. URL: https://doi.org/10.1021/ie020833t, arXiv:https://doi.org/10.1021/ie020833t, doi:10.1021/ie020833t.

      +
      +
      4
      +

      Eduardo S. Hori, Sigurd Skogestad, and Vidar Alstad. Perfect steady-state indirect control. Industrial & Engineering Chemistry Research, 44(4):863–867, 2005. URL: https://doi.org/10.1021/ie049736l, arXiv:https://doi.org/10.1021/ie049736l, doi:10.1021/ie049736l.

      +
      +
      5
      +

      Eduardo Shigueo Hori and Sigurd Skogestad. Selection of controlled variables: maximum gain rule and combination of measurements. Industrial & Engineering Chemistry Research, 47(23):9465–9471, 2008. URL: https://doi.org/10.1021/ie0711978, arXiv:https://doi.org/10.1021/ie0711978, doi:10.1021/ie0711978.

      +
      +
      6
      +

      Vinay Kariwala and Yi Cao. Bidirectional branch and bound for controlled variable selection. part ii: exact local method for self-optimizing control. Computers and chemical engineering, 33(8):1402–1412, 2009.

      +
      +
      7
      +

      Søren Nymand Lophaven, Hans Bruun Nielsen, and Jacob Søndergaard. DACE - A Matlab Kriging Toolbox, Version 2.0. DTU Orbit, 2002.

      +
      +
      8
      +

      Sigurd Skogestad. Plantwide control: the search for the self-optimizing control structure. Journal of Process Control, 10(5):487 – 507, 2000. URL: http://www.sciencedirect.com/science/article/pii/S0959152400000238, doi:https://doi.org/10.1016/S0959-1524(00)00023-8.

      +
      +
      +

      +
      + + +
      + +
      + + +
      +
      + +
      + +
      + + + + + + + + + + + + \ No newline at end of file diff --git a/docsrc/source/__latexindent_temp.tex b/docsrc/source/__latexindent_temp.tex new file mode 100644 index 0000000..ad88cbd --- /dev/null +++ b/docsrc/source/__latexindent_temp.tex @@ -0,0 +1,640 @@ +% Encoding: UTF-8 +@article{alves2018, +author = {Alves, Victor +M. C. and Lima, Felipe S. and Silva, Sidinei K. and Araujo, Antonio C. B.}, +title = {Metamodel-Based Numerical Techniques for Self-Optimizing Control}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {57}, +number = {49}, +pages = {16817-16840}, +year = {2018}, +doi = {10.1021/acs.iecr.8b04337}, +URL = {https://doi.org/10.1021/acs.iecr.8b04337}, +eprint = {https://doi.org/10.1021/acs.iecr.8b04337} +} + +@Article{Liu2019, + author = {Liu, Kaile and Jin, Bo and Zhao, Yunlei and Liang, Zhiwu}, + title = {Self-Optimizing Control Structure and Dynamic Behavior for CO2 Compression and Purification Unit in Oxy-fuel Combustion Application}, + journal = {Industrial \& Engineering Chemistry Research}, + year = {2019}, + volume = {58}, + number = {8}, + pages = {3199-3210}, + doi = {10.1021/acs.iecr.9b00121}, + eprint = {https://doi.org/10.1021/acs.iecr.9b00121}, + url = {https://doi.org/10.1021/acs.iecr.9b00121}, +} +@article{dillon2005, + title={Oxy-combustion processes for CO2 capture from power plant}, + author={Dillon, DJ and White, V and Allam, RJ and Wall, RA and Gibbins, JIEA}, + journal={Engineering investigation report}, + volume={9}, + year={2005} +} + +@article{JIN2015, + title = "Optimization and control for CO2 compression and purification unit in oxy-combustion power plants", + journal = "Energy", + volume = "83", + pages = "416 - 430", + year = "2015", + issn = "0360-5442", + doi = "https://doi.org/10.1016/j.energy.2015.02.039", + url = "http://www.sciencedirect.com/science/article/pii/S0360544215001942", + author = "Bo Jin and Haibo Zhao and Chuguang Zheng", + keywords = "CO compression and purification unit, Dynamic simulation, Control system design, Oxy-fuel combustion", + abstract = "High CO2 purity products can be obtained from oxy-combustion power plants through a CO2 CPU (compression and purification unit) based on phase separation method. To ensure that CPU (with double flash separators) can be operated under optimal conditions, this paper focuses on single variable analysis, multi-variable optimization, dynamic simulation and control system design for CPU in oxy-combustion power plants. It is found that optimal operating conditions are 30 bar, 30.42 °C, −24.64 °C, and −55 °C for multi-stage CO2 compressor discharge pressure, flue gas temperature after compression, first flash separator temperature, and second flash separator temperature, respectively. The designed double temperature control structure based on a systematic top-down analysis and bottom-up design method is more suitable than the single temperature control structure under different operating scenarios (load change and flue gas composition ramp change). To bear operating disturbances, operating strategies like elevating temperature, manipulating valves and adjusting setpoints are proposed. Influence of SOx would be more obvious than that of NOx, whilst the kij mixing parameters in Peng–Robinson property method affects little on process optimization and control system design. Comprehensive dynamic model with specified control system provides possibility to integrate CPU with full-train oxy-combustion power plants." +} + +@article{TOFTEGAARD2010581, + title = "Oxy-fuel combustion of solid fuels", + journal = "Progress in Energy and Combustion Science", + volume = "36", + number = "5", + pages = "581 - 625", + year = "2010", + issn = "0360-1285", + doi = "https://doi.org/10.1016/j.pecs.2010.02.001", + url = "http://www.sciencedirect.com/science/article/pii/S0360128510000201", + author = "Maja B. Toftegaard and Jacob Brix and Peter A. Jensen and Peter Glarborg and Anker D. Jensen", + keywords = "Carbon capture and storage, Oxy-fuel combustion, Coal, Biomass, Emissions", + abstract = "Oxy-fuel combustion is suggested as one of the possible, promising technologies for capturing CO2 from power plants. The concept of oxy-fuel combustion is removal of nitrogen from the oxidizer to carry out the combustion process in oxygen and, in most concepts, recycled flue gas to lower the flame temperature. The flue gas produced thus consists primarily of carbon dioxide and water. Much research on the different aspects of an oxy-fuel power plant has been performed during the last decade. Focus has mainly been on retrofits of existing pulverized-coal-fired power plant units. Green-field plants which provide additional options for improvement of process economics are however likewise investigated. Of particular interest is the change of the combustion process induced by the exchange of carbon dioxide and water vapor for nitrogen as diluent. This paper reviews the published knowledge on the oxy-fuel process and focuses particularly on the combustion fundamentals, i.e. flame temperatures and heat transfer, ignition and burnout, emissions, and fly ash characteristics. Knowledge is currently available regarding both an entire oxy-fuel power plant and the combustion fundamentals. However, several questions remain unanswered and more research and pilot plant testing of heat transfer profiles, emission levels, the optimum oxygen excess and inlet oxygen concentration levels, high and low-temperature fire-side corrosion, ash quality, plant operability, and models to predict NOx and SO3 formation is required." +} +@article{BUHRE2005283, + title = "Oxy-fuel combustion technology for coal-fired power generation", + journal = "Progress in Energy and Combustion Science", + volume = "31", + number = "4", + pages = "283 - 307", + year = "2005", + issn = "0360-1285", + doi = "https://doi.org/10.1016/j.pecs.2005.07.001", + url = "http://www.sciencedirect.com/science/article/pii/S0360128505000225", + author = "B.J.P. Buhre and L.K. Elliott and C.D. Sheng and R.P. Gupta and T.F. Wall", + keywords = "Oxy-fuel combustion, pf coal combustion, CO capture", + abstract = "The awareness of the increase in greenhouse gas emissions has resulted in the development of new technologies with lower emissions and technologies that can accommodate capture and sequestration of carbon dioxide. For existing coal-fired combustion plants there are two main options for CO2 capture: removal of nitrogen from flue gases or removal of nitrogen from air before combustion to obtain a gas stream ready for geo-sequestration. In oxy-fuel combustion, fuel is combusted in pure oxygen rather than air. This technology recycles flue gas back into the furnace to control temperature and makeup the volume of the missing N2 to ensure there is sufficient gas to maintain the temperature and heat flux profiles in the boiler. A further advantage of the technology revealed in pilot-scale tests is substantially reduced NOx emissions. For coal-fired combustion, the technology was suggested in the eighties, however, recent developments have led to a renewed interest in the technology. This paper provides a comprehensive review of research that has been undertaken, gives the status of the technology development and assessments providing comparisons with other power generation options, and suggests research needs." +} + +@article{POSCH2012254, + title = "Optimization of CO2 compression and purification units (CO2CPU) for CCS power plants", + journal = "Fuel", + volume = "101", + pages = "254 - 263", + year = "2012", + note = "8th European Conference on Coal Research and Its Applications", + issn = "0016-2361", + doi = "https://doi.org/10.1016/j.fuel.2011.07.039", + url = "http://www.sciencedirect.com/science/article/pii/S0016236111004364", + author = "Sebastian Posch and Markus Haider", + keywords = "CCS, carbon capture and storage, CO compression, CO quality, Oxy-fuel, Purification", + abstract = "Oxy-fuel power plants are among the currently known major carbon capture and storage (CCS) technologies those which produce the lowest carbon dioxide (CO2) purity CO2-stream. As a consequence, the oxy-fuel technology has the highest requirement towards CO2 purification. In the current paper two different purification processes are modeled in Aspen Plus™ based on a Peng–Robinson property method with kij mixing coefficients. Both separation processes are based on phase separation technique. The first one is equipped with two flash columns and the second one includes a distillation column. Both plants require a dehydration plant for water removal. For each process the impact of main design parameters on performance features such as specific power requirement, specific cooling duty, separation efficiency and CO2 purity are analyzed, including variations in flue gas composition, plant load and kij mixing parameters. The results were compared to a conventional 5-stage CO2 compressor." +} + +@article{KOOHESTANIAN2017570, + title = "Sensitivity analysis and multi-objective optimization of CO2CPU process using response surface methodology", + journal = "Energy", + volume = "122", + pages = "570 - 578", + year = "2017", + issn = "0360-5442", + doi = "https://doi.org/10.1016/j.energy.2017.01.129", + url = "http://www.sciencedirect.com/science/article/pii/S0360544217301366", + author = "Esmaeil Koohestanian and Abdolreza Samimi and Davod Mohebbi-Kalhori and Jafar Sadeghi", + keywords = "CO capture, Multi-objective optimization, Sensitivity analysis, RSM methodology, Oxy-fuel combustion", + abstract = "Compression and purification unit (CPU) is a common industrial process for capturing CO2 from oxy-fuel combustion where high energy requirement is one of its disadvantages. This study focuses on analyzing of the sensitivity and optimizing multi-objectively the operating conditions of CPU, using response surface methodology (RSM). The main objective was to increase the efficiency of CO2 removal from the oxy-fuel combustion power plant. Statistical analysis reveals that reducing the first separator temperature, not only, plays a major role in CO2 separation, but also, it decreases the total work and heat duty of the process. It was found that the optimal multi-stage CO2 compressor discharge pressure was 25.34 bar while regular pressure for this process was reported as 30 bar. Furthermore, the optimal flue gas temperature before, between and after compression, and the first and second flash separator temperatures were 20 °C, 20 °C, 20.6 °C, −38.2 °C, and −55 °C, respectively. with the previous works carried out in a constant amount of CO2 separation, the proposed process leads to lower pressure, and therefore lower operating and capital costs." +} + +@article{caballero2008, + author = {Caballero, José A. and Grossmann, Ignacio E.}, + title = {An algorithm for the use of surrogate models in modular flowsheet optimization}, + journal = {AIChE Journal}, + volume = {54}, + number = {10}, + pages = {2633-2650}, + keywords = {simulation, process, design (process simulation), mathematical modeling, numerical solutions, optimization}, + doi = {10.1002/aic.11579}, + url = {https://aiche.onlinelibrary.wiley.com/doi/abs/10.1002/aic.11579}, + eprint = {https://aiche.onlinelibrary.wiley.com/doi/pdf/10.1002/aic.11579}, + abstract = {Abstract In this work a methodology is presented for the rigorous optimization of nonlinear programming problems in which the objective function and (or) some constraints are represented by noisy implicit black box functions. The special application considered is the optimization of modular process simulators in which the derivatives are not available and some unit operations introduce noise preventing the calculation of accurate derivatives. The black box modules are substituted by metamodels based on a kriging interpolation that assumes that the errors are not independent but a function of the independent variables. A Kriging metamodel uses non-Euclidean measure of distance to avoid sensitivity to the units of measure. It includes adjustable parameters that weigh the importance of each variable for obtaining a good model representation, and it allows calculating errors that can be used to establish stopping criteria and provide a solid base to deal with “possible infeasibility” due to inaccuracies in the metamodel representation of objective function and constraints. The algorithm continues with a refining stage and successive bound contraction in the domain of independent variables with or without kriging recalibration until an acceptable accuracy in the metamodel is obtained. The procedure is illustrated with several examples. © 2008 American Institute of Chemical Engineers AIChE J, 2008}, + year = {2008} +} + +@Article{wachter2006, +author="W{\"a}chter, Andreas +and Biegler, Lorenz T.", +title="On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming", +journal="Mathematical Programming", +year="2006", +month="Mar", +day="01", +volume="106", +number="1", +pages="25--57", +abstract="We present a primal-dual interior-point algorithm with a filter line-search method for nonlinear programming. Local and global convergence properties of this method were analyzed in previous work. Here we provide a comprehensive description of the algorithm, including the feasibility restoration phase for the filter method, second-order corrections, and inertia correction of the KKT matrix. Heuristics are also considered that allow faster performance. This method has been implemented in the IPOPT code, which we demonstrate in a detailed numerical study based on 954 problems from the CUTEr test set. An evaluation is made of several line-search options, and a comparison is provided with two state-of-the-art interior-point codes for nonlinear programming.", +issn="1436-4646", +doi="10.1007/s10107-004-0559-y", +url="https://doi.org/10.1007/s10107-004-0559-y" +} + +@book{DACE, +title = "DACE - A Matlab Kriging Toolbox, Version 2.0", +author = "Lophaven, {S{\o}ren Nymand} and Nielsen, {Hans Bruun} and Jacob S{\o}ndergaard", +year = "2002", +publisher = "DTU Orbit", +language = "English" +} + +@article{hori05, +author = {Hori, Eduardo S. and Skogestad, Sigurd and Alstad, Vidar}, +title = {Perfect Steady-State Indirect Control}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {44}, +number = {4}, +pages = {863-867}, +year = {2005}, +doi = {10.1021/ie049736l}, +URL = {https://doi.org/10.1021/ie049736l}, +eprint = {https://doi.org/10.1021/ie049736l} +} + +@article{alstad09, +title = "Optimal measurement combinations as controlled variables", +journal = "Journal of Process Control", +volume = "19", +number = "1", +pages = "138 - 148", +year = "2009", +issn = "0959-1524", +doi = "https://doi.org/10.1016/j.jprocont.2008.01.002", +url = "http://www.sciencedirect.com/science/article/pii/S0959152408000073", +author = "Vidar Alstad and Sigurd Skogestad and Eduardo S. Hori", +keywords = "Control structure selection, Self-optimizing control, Measurement selection, Process control, Quadratic optimization, Plantwide control", +abstract = "This paper deals with the optimal selection of linear measurement combinations as controlled variables, c=Hy. The objective is to achieve “self-optimizing control”, which is when fixing the controlled variables c indirectly gives near-optimal steady-state operation with a small loss. The nullspace method of Alstad and Skogestad [V. Alstad, S. Skogestad, Null space method for selecting optimal measurement combinations as controlled variables, Ind. Eng. Chem. Res. 46 (3) (2007) 846–853] focuses on minimizing the loss caused by disturbances. We here provide an explicit expression for H for the case where the objective is to minimize the combined loss for disturbances and measurement errors. In addition, we extend the nullspace method to cases with extra measurements by using the extra degrees of freedom to minimize the loss caused by measurement errors. Finally, the results are interpreted more generally as deriving linear invariants for quadratic optimization problems." +} + +@article{halvorsen03, +author = {Halvorsen, Ivar J. and Skogestad, Sigurd and Morud, John C. and Alstad, Vidar}, +title = {Optimal Selection of Controlled Variables}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {42}, +number = {14}, +pages = {3273-3284}, +year = {2003}, +doi = {10.1021/ie020833t}, +URL = {https://doi.org/10.1021/ie020833t}, +eprint = { + https://doi.org/10.1021/ie020833t} +} + +@article{hori08, +author = {Hori, Eduardo Shigueo and Skogestad, Sigurd}, +title = {Selection of Controlled Variables: Maximum Gain Rule and Combination of Measurements}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {47}, +number = {23}, +pages = {9465-9471}, +year = {2008}, +doi = {10.1021/ie0711978}, + +URL = {https://doi.org/10.1021/ie0711978}, +eprint = {https://doi.org/10.1021/ie0711978} +} + +@article{skoge00, +title = "Plantwide control: the search for the self-optimizing control structure", +journal = "Journal of Process Control", +volume = "10", +number = "5", +pages = "487 - 507", +year = "2000", +issn = "0959-1524", +doi = "https://doi.org/10.1016/S0959-1524(00)00023-8", +url = "http://www.sciencedirect.com/science/article/pii/S0959152400000238", +author = "Sigurd Skogestad", +abstract = "Plantwide control is concerned with the structural decisions involved in the control system design of a chemical plant (C.S. Foss, Critique of chemical process control theory, AIChE Journal 19(2), 1973) 209–214; “Which variables should be controlled, which variables should be measured, which inputs should be manipulated, and which links should be made between them?” In particular, the first issue about which variables to control has received little attention. It is argued that the answer is related to finding a simple and robust way of implementing the economically optimal operating policy. The goal is to find a set of controlled variables which, when kept at constant setpoints, indirectly lead to near-optimal operation with acceptable loss. This is denoted “self-optimizing” control. Since the economics are determined by the overall plant behavior, it is necessary to take a plantwide perspective. A systematic procedure for finding suitable controlled variables based on only steady-state information is presented. Important steps are degree of freedom analysis, definition of optimal operation (cost and constraints), and evaluation of the loss when the controlled variables are kept constant rather than optimally adjusted. A case study yields very interesting insights into the control and maximum throughput of distillation columns." +} + +@article{luyben2006, +title = "Evaluation of criteria for selecting temperature control trays in distillation columns", +journal = "Journal of Process Control", +volume = "16", +number = "2", +pages = "115 - 134", +year = "2006", +issn = "0959-1524", +doi = "https://doi.org/10.1016/j.jprocont.2005.05.004", +url = "http://www.sciencedirect.com/science/article/pii/S0959152405000569", +author = "William L. Luyben", +abstract = "The use of tray temperatures to infer compositions is widespread in distillation control. A number of criteria have been proposed for selecting which trays to hold at constant temperature. The most commonly used are (1) choosing a tray where there are large changes in temperature from tray to tray (“slope” of the temperature profile), (2) finding the tray where there is the largest change in temperature for a change in the manipulated variable (“sensitivity”), (3) using singular value decomposition (SVD) analysis, (4) selecting the tray where the temperature does not change as feed composition changes while producing the desired distillate and bottoms purities and (5) choosing the tray that produces the smallest changes in product purities when it is held constant in the face of feed composition disturbances. This paper provides a quantitative comparison of the effectiveness of these five alternative criteria. Several systems are considered, ranging from ideal binary to azeotropic multi-component. Results show that SVD analysis provides a simple and effective method for selecting temperature control tray location." +} + +@article{morari1980, + title={Studies in the synthesis of control structures for chemical processes: Part I: Formulation of the problem. Process decomposition and the classification of the control tasks. Analysis of the optimizing control structures}, + author={Morari, Manfred and Arkun, Yaman and Stephanopoulos, George}, + journal={AIChE Journal}, + volume={26}, + number={2}, + pages={220--232}, + year={1980}, + publisher={Wiley Online Library} +} + +@book{python2009, + author = {Van Rossum, Guido and Drake, Fred L.}, + title = {Python 3 Reference Manual}, + year = {2009}, + isbn = {1441412697}, + publisher = {CreateSpace}, + address = {Scotts Valley, CA} +} + +@article{kariwala2009, + title={Bidirectional branch and bound for controlled variable selection. Part II: Exact local method for self-optimizing control}, + author={Kariwala, Vinay and Cao, Yi}, + journal={Computers and chemical engineering}, + volume={33}, + number={8}, + pages={1402--1412}, + year={2009}, + publisher={Elsevier} +} + +@article{krige1951, + title={A statistical approach to some basic mine valuation problems on the Witwatersrand}, + author={Krige, Daniel G}, + journal={Journal of the Southern African Institute of Mining and Metallurgy}, + volume={52}, + number={6}, + pages={119--139}, + year={1951}, + publisher={Southern African Institute of Mining and Metallurgy} +} + +@article{sacks1989, + title={Design and analysis of computer experiments}, + author={Sacks, Jerome and Welch, William J and Mitchell, Toby J and Wynn, Henry P}, + journal={Statistical science}, + pages={409--423}, + year={1989}, + publisher={JSTOR} +} + +@inproceedings{alexandrov2000, + title={Optimization with variable-fidelity models applied to wing design}, + author={Alexandrov, N and Lewis, R and Gumbert, C and Green, L and Newman, P}, + booktitle={38th aerospace sciences meeting and exhibit}, + pages={841}, + year={2000} +} + +@article{jones2001, + title={A taxonomy of global optimization methods based on response surfaces}, + author={Jones, Donald R}, + journal={Journal of global optimization}, + volume={21}, + number={4}, + pages={345--383}, + year={2001}, + publisher={Springer} +} + +@book{forrester2008, + title={Engineering design via surrogate modelling: a practical guide}, + author={Forrester, Alexander and Sobester, Andras and Keane, Andy}, + year={2008}, + publisher={John Wiley \& Sons} +} + +@inbook{umar12, + author={Umar, L M and Hu, W and Cao, Y and Kariwala, V}, + chapter = {Selection of Controlled Variables using Self-optimizing Control Method}, + title={Plantwide Control: Recent Developments and Applications}, + editor={Rangaiah, G P and Kariwala, V}, + year={2012}, + publisher={John Wiley \& Sons}, + adress = {Chichester, United Kingdom} +} + +@article{araujo07, +title = "Application of plantwide control to the HDA process. I—steady-state optimization and self-optimizing control", +journal = "Control Engineering Practice", +volume = "15", +number = "10", +pages = "1222 - 1237", +year = "2007", +note = "Special Issue - International Symposium on Advanced Control of Chemical Processes (ADCHEM)", +issn = "0967-0661", +doi = "https://doi.org/10.1016/j.conengprac.2006.10.014", +url = "http://www.sciencedirect.com/science/article/pii/S0967066106001997", +author = "Antonio C.B. de Araújo and Marius Govatsmark and Sigurd Skogestad", +keywords = "HDA process, Self-optimizing control, Selection of controlled variable, Aspen Plus", +abstract = "This paper describes the application of self-optimizing control to a large-scale process, the HDA plant. The idea is to select controlled variables which when kept constant lead to minimum economic loss. First, the optimal active constraints need to be controlled. Next, controlled variables need to be found for the remaining unconstrained degrees of freedom. In order to avoid the combinatorial problem related to the selection of outputs/measurements for such large plants, a local (linear) analysis based on singular value decomposition (SVD) is used for pre-screening. This is followed by a more detailed analysis using the nonlinear model. Note that a steady-state model, in this case one built in Aspen PlusTM, is sufficient for selecting controlled variables. A dynamic model is required to design and test the complete control system which include regulatory control. This is considered in the part II of the series." +} + +@book{skogebook, + title = {Multivariable Feedback Control: Analysis and Design}, + author = {Sigurd Skogestad and Ian Postlethwaite}, + publisher = {Wiley-Interscience}, + year = {1996}, + series = {}, + edition = {1}, + volume = {}, +} + +@article{alstad07, +author = {Alstad, Vidar and Skogestad, Sigurd}, +title = {Null Space Method for Selecting Optimal Measurement Combinations as Controlled Variables}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {46}, +number = {3}, +pages = {846-853}, +year = {2007}, +doi = {10.1021/ie060285+}, + +URL = {https://doi.org/10.1021/ie060285+}, +eprint = { + https://doi.org/10.1021/ie060285+} + +} + +@article{hori07, +title = "Selection of Control Structure and Temperature Location for Two-Product Distillation Columns", +journal = "Chemical Engineering Research and Design", +volume = "85", +number = "3", +pages = "293 - 306", +year = "2007", +issn = "0263-8762", +doi = "https://doi.org/10.1205/cherd06115", +url = "http://www.sciencedirect.com/science/article/pii/S0263876207730514", +author = "E.S. Hori and S. Skogestad", +keywords = "distillation column, multicomponent distillation, control structure selection", +abstract = "The choice of control structures for distillation columns is important for practical industrial operation. There is no single ‘best’ structure for all columns, so some authors feel that each column should be treated independently. Nevertheless, the objective of this work is to find a structure that is ‘reasonable’ for all columns. In this paper, we consider the steady-state deviations in product compositions in response to disturbances, assuming that only flows and temperatures are available for control. For most columns a good choice is to fix reflux and a temperature. For binary separations, the temperature should be located where the temperature slope is steep. For multicomponent mixtures, the same rule applies except that one should avoid column sections with large changes in non-key components, for example at the column end and at the feed. Control of two temperatures is better for some columns, but not all." +} + +@article{kariwala08, +author = {Kariwala, Vinay and Cao, Yi and Janardhanan, S.}, +title = {Local Self-Optimizing Control with Average Loss Minimization}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {47}, +number = {4}, +pages = {1150-1158}, +year = {2008}, +doi = {10.1021/ie070897+}, + +URL = {https://doi.org/10.1021/ie070897+}, +eprint = {https://doi.org/10.1021/ie070897+} +} + +@misc{qtframework2017, +title={{The Qt Framework}}, +url={https://www.qt.io/qt-framework}, +journal={The Qt Framework}, +author= {{The Qt Company Ltd}}, +year={2017}, +month={Oct} +} + +@misc{cyipopt, +author = {Kummerer, Matthias and Moore, Jason K.}, +title = {{Cython interface for the interior point optimzer IPOPT}}, +month = {December}, +year = {2019}, +version = {0.2.0}, +url = {https://github.com/matthias-k/cyipopt} +} + +@article{rasmussen2010, + title={Gaussian processes for machine learning (GPML) toolbox}, + author={Rasmussen, Carl Edward and Nickisch, Hannes}, + journal={Journal of machine learning research}, + volume={11}, + number={Nov}, + pages={3011--3015}, + year={2010} +} + +@article{skoge04, +title = "Control structure design for complete chemical plants", +journal = "Computers \& Chemical Engineering", +volume = "28", +number = "1", +pages = "219 - 234", +year = "2004", +note = "Escape 12", +issn = "0098-1354", +doi = "https://doi.org/10.1016/j.compchemeng.2003.08.002", +url = "http://www.sciencedirect.com/science/article/pii/S0098135403001984", +author = "Sigurd Skogestad", +keywords = "Control structure design, Chemical plants, Plantwide control, Process control", +abstract = "Control structure design deals with the structural decisions of the control system, including what to control and how to pair the variables to form control loops. Although these are very important issues, these decisions are in most cases made in an ad hoc fashion, based on experience and engineering insight, without considering the details of each problem. In the paper, a systematic procedure for control structure design for complete chemical plants (plantwide control) is presented. It starts with carefully defining the operational and economic objectives, and the degrees of freedom available to fulfill them. Other issues, discussed in the paper, include inventory and production rate control, decentralized versus multivariable control, loss in performance by bottom-up design, and a definition of a the “complexity number” for the control system." +} + +@article{cao05, +title = "Improved branch and bound method for control structure screening", +journal = "Chemical Engineering Science", +volume = "60", +number = "6", +pages = "1555 - 1564", +year = "2005", +issn = "0009-2509", +doi = "https://doi.org/10.1016/j.ces.2004.10.025", +url = "http://www.sciencedirect.com/science/article/pii/S0009250904008462", +author = "Yi Cao and Prabirkumar Saha", +keywords = "Control structure screening, Branch and bound method, Hankel singular value, Tennessee–Eastman process, Process control, Stability, Systems engineering, Optimization", +abstract = "The main aim of this paper is to present an improved algorithm of “Branch and Bound” method for control structure screening. The new algorithm uses a best-first search approach, which is more efficient than other algorithms based on depth-first search approaches. Detailed explanation of the algorithms is provided in this paper along with a case study on Tennessee–Eastman process to justify the theory of branch and bound method. The case study uses the Hankel singular value to screen control structure for stabilization. The branch and bound method provides a global ranking to all possible input and output combinations. Based on this ranking an efficient control structure with least complexity for stabilizing control is detected which leads to a decentralized proportional controller." +} + + +@article{cao08, +title = "Bidirectional branch and bound for controlled variable selection: Part I. Principles and minimum singular value criterion", +journal = "Computers \& Chemical Engineering", +volume = "32", +number = "10", +pages = "2306 - 2319", +year = "2008", +issn = "0098-1354", +doi = "https://doi.org/10.1016/j.compchemeng.2007.11.011", +url = "http://www.sciencedirect.com/science/article/pii/S0098135407002906", +author = "Yi Cao and Vinay Kariwala", +keywords = "Branch and bound, Control structure design, Controlled variables, Combinatorial optimization, Minimum singular value, Self-optimizing control", +abstract = "The minimum singular value (MSV) rule is a useful tool for selecting controlled variables (CVs) from the available measurements. However, the application of the MSV rule to large-scale problems is difficult, as all feasible measurement subsets need to be evaluated to find the optimal solution. In this paper, a new and efficient branch and bound (BAB) method for selection of CVs using the MSV rule is proposed by posing the problem as a subset selection problem. In traditional BAB algorithms for subset selection problems, pruning is performed downwards (gradually decreasing subset size). In this work, the branch pruning is considered in both upward (gradually increasing subset size) and downward directions simultaneously so that the total number of subsets evaluated is reduced dramatically. Furthermore, a novel bidirectional branching strategy to dynamically branch solution trees for subset selection problems is also proposed, which maximizes the number of nodes associated with the branches to be pruned. Finally, by replacing time-consuming MSV calculations with novel determinant based conditions, the efficiency of the bidirectional BAB algorithm is increased further. Numerical examples show that with these new approaches, the CV selection problem can be solved incredibly fast." +} + +@techreport{dacereport, + author = "S. N. Lophaven and H. B. Nielsen and J. S{\o}ndergaard", + title = "Aspects of the Matlab toolbox {DACE}", + year = "2002", + number = "", + series = "IMM-TR-2002-13", + institution = "Informatics and Mathematical Modelling, Technical University of Denmark, {DTU}", + address = "Richard Petersens Plads, Building 321, {DK-}2800 Kgs. Lyngby", + type = "" +} + +@article{gera13, +author = {Gera, Vivek and Panahi, Mehdi and Skogestad, Sigurd and Kaistha, Nitin}, +title = {Economic Plantwide Control of the Cumene Process}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {52}, +number = {2}, +pages = {830-846}, +year = {2013}, +doi = {10.1021/ie301386h}, + +URL = {https://doi.org/10.1021/ie301386h}, +eprint = {https://doi.org/10.1021/ie301386h} +} + +@article{araujo08, +title = "Control structure design for the ammonia synthesis process", +journal = "Computers \& Chemical Engineering", +volume = "32", +number = "12", +pages = "2920 - 2932", +year = "2008", +issn = "0098-1354", +doi = "https://doi.org/10.1016/j.compchemeng.2008.03.001", +url = "http://www.sciencedirect.com/science/article/pii/S0098135408000392", +author = "Antonio Araújo and Sigurd Skogestad", +keywords = "Ammonia plant, Control structure, Top-down analysis, Bottom-up design, Bottleneck, Throughput, Primary controlled variable, Secondary controlled variables, Manipulable variables", +abstract = "This paper discusses the application of the plantwide control design procedure of Skogestad [Skogestad, S. (2004a). Control structure design for complete chemical plants. Computers and Chemical Engineering, 28, 219–234] to the ammonia synthesis process. Three modes of operation are considered: (I) given feed rate, (IIa) maximum throughput, and (IIb) “optimized” throughput. Two control structures, one for Mode I and another for Mode IIb, are proposed. In Mode I, it is proposed to keep constant purge rate and compressor powers. There is no bottleneck in the process, and thus there is no Mode IIa of operation. In Mode IIb, the compressors are at their maximum capacity and it is proposed to adjust the feed rate such that the inert concentration is constant. The final control structures result in good dynamic performance." +} + +@incollection{minasidis15, +title = "Simple Rules for Economic Plantwide Control", +editor = "Krist V. Gernaey and Jakob K. Huusom and Rafiqul Gani", +series = "Computer Aided Chemical Engineering", +publisher = "Elsevier", +volume = "37", +pages = "101 - 108", +year = "2015", +booktitle = "12th International Symposium on Process Systems Engineering and 25th European Symposium on Computer Aided Process Engineering", +issn = "1570-7946", +doi = "https://doi.org/10.1016/B978-0-444-63578-5.50013-X", +url = "http://www.sciencedirect.com/science/article/pii/B978044463578550013X", +author = "Vladimiros Minasidis and Sigurd Skogestad and Nitin Kaistha", +keywords = "Self-Optimizing Control, Economic Plantwide Control, Advanced Process Control", +abstract = "In this work, we consider the systematic economic plantwide control design procedure proposed by Skogestad (2004) and from this we derive practical rules that can be used to devise close-to-optimal control structures based on engineering insight. We attempt to present these rules in an easy-to-understand fashion and exemplify them on a simple but quite famous reactor-separator-recycle plant case study. We successfully demonstrate that while Skogestad’s procedure requires an optimization of the plant model under various disturbances in order to be fully utilized, using its practical rules, combined with a good engineering insight of the process, can facilitate the design of a close-to-optimal control structure by suggesting what should be controlled and how." +} + +@article{jacobsen11, +author = {Jacobsen, Magnus G. and Skogestad, Sigurd}, +title = {Active Constraint Regions for Optimal Operation of Chemical Processes}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {50}, +number = {19}, +pages = {11226-11236}, +year = {2011}, +doi = {10.1021/ie2012196}, + +URL = {https://doi.org/10.1021/ie2012196}, +eprint = {https://doi.org/10.1021/ie2012196} +} + + +@article{quirante16, +title = "Large scale optimization of a sour water stripping plant using surrogate models", +journal = "Computers \& Chemical Engineering", +volume = "92", +pages = "143 - 162", +year = "2016", +issn = "0098-1354", +doi = "https://doi.org/10.1016/j.compchemeng.2016.04.039", +url = "http://www.sciencedirect.com/science/article/pii/S0098135416301351", +author = "Natalia Quirante and José A. Caballero", +keywords = "Process simulation, Process optimization, Kriging interpolation, Heat exchanger network, Life cycle assessment", +abstract = "In this work, we propose a new methodology for the large scale optimization and process integration of complex chemical processes that have been simulated using modular chemical process simulators. Units with significant numerical noise or large CPU times are substituted by surrogate models based on Kriging interpolation. Using a degree of freedom analysis, some of those units can be aggregated into a single unit to reduce the complexity of the resulting model. As a result, we solve a hybrid simulation-optimization model formed by units in the original flowsheet, Kriging models, and explicit equations. We present a case study of the optimization of a sour water stripping plant in which we simultaneously consider economics, heat integration and environmental impact using the ReCiPe indicator, which incorporates the recent advances made in Life Cycle Assessment (LCA). The optimization strategy guarantees the convergence to a local optimum inside the tolerance of the numerical noise." +} + + +@manual{aspentech, +title = "Aspen Plus User Guide", +author = {AspenTech}, +year = {2017}, +language = {English}, +version = {Version 10}, +organization = {AspenTech Inc.}, +} + + +@article{jagtap13, +author = {Jagtap, Rahul and Pathak, Ashok S and Kaistha, Nitin}, +title = {Economic plantwide control of the ethyl benzene process}, +journal = {AIChE Journal}, +volume = {59}, +number = {6}, +pages = {1996-2014}, +keywords = {plantwide control, economic operation, bottleneck, capacity constraint control, override control}, +doi = {10.1002/aic.13964}, +url = {https://aiche.onlinelibrary.wiley.com/doi/abs/10.1002/aic.13964}, +eprint = {https://aiche.onlinelibrary.wiley.com/doi/pdf/10.1002/aic.13964}, +abstract = {Systematic plantwide control system design for economically optimal operation of the ethyl benzene process over a large throughput range is studied. As throughput is increased, constraints progressively become active with the highest number of active constraints at maximum throughput. An economic plantwide control system (CS1) is designed for operation at this most constrained operating point using a novel “top-down” pairing approach with higher prioritization to the economic objectives over regulatory objectives. This structure is adapted for near optimal low throughput operation with constraints that go inactive taking up additional economic variable control. For comparison, a conventional plantwide control structure (CS2) with the throughput manipulator at a fresh feed and “bottom-up” pairing for the control objectives is also synthesized. Four overrides are needed in CS2 to handle the hard equipment capacity constraints at maximum throughput. Rigorous dynamic simulations show that CS1 is dynamically and economically significantly superior to CS2. © 2012 American Institute of Chemical Engineers AIChE J, 59: 1996–2014, 2013}, +year = {2013} +} + +@article{jagtap12, +author = {Jagtap, Rahul and Kaistha, Nitin}, +title = {Economic Plantwide Control of a C4 Isomerization Process}, +journal = {Industrial \& Engineering Chemistry Research}, +volume = {51}, +number = {36}, +pages = {11731-11743}, +year = {2012}, +doi = {10.1021/ie3001293}, +URL = {https://doi.org/10.1021/ie3001293}, +eprint = { + https://doi.org/10.1021/ie3001293} + +} + +@article{sidinei2017, +author = {Silva, S. and Villar, S. and Costa, A. and Teixeira, H. and Araújo, A.}, +year = {2017}, +month = {07}, +pages = {851-871}, +title = {Development and application of an automatic tool for the selection of control variables based on the self-optimizing control methodology}, +volume = {34}, +journal = {Brazilian Journal of Chemical Engineering}, +doi = {10.1590/0104-6632.20170343s20150445} +} + +@Article{Cozad2014, + author = {Alison Cozad and Nikolaos V. Sahinidis and David C. Miller}, + title = {Learning surrogate models for simulation-based optimization}, + journal = {{AIChE} Journal}, + year = {2014}, + volume = {60}, + number = {6}, + pages = {2211--2227}, + month = {mar}, + doi = {10.1002/aic.14418}, + publisher = {Wiley}, +} + +@Article{Boukouvala2016, + author = {Fani Boukouvala and Christodoulos A. Floudas}, + title = {{ARGONAUT}: {AlgoRithms} for Global Optimization of {coNstrAined} grey-box {compUTational} problems}, + journal = {Optimization Letters}, + year = {2016}, + volume = {11}, + number = {5}, + pages = {895--913}, + month = {apr}, + doi = {10.1007/s11590-016-1028-2}, + publisher = {Springer Science and Business Media {LLC}}, +} + +@Article{gorissen10, + author = {Dirk Gorissen and Ivo Couckuyt and Piet Demeester and Tom Dhaene and Karel Crombecq}, + title = {A Surrogate Modeling and Adaptive Sampling Toolbox for Computer Based Design}, + journal = {Journal of Machine Learning Research}, + year = {2010}, + volume = {11}, + number = {68}, + pages = {2051-2055}, + url = {http://jmlr.org/papers/v11/gorissen10a.html}, +} + +@Comment{jabref-meta: databaseType:bibtex;} diff --git a/docsrc/source/gui/diff_data_tab.rst b/docsrc/source/gui/diff_data_tab.rst index 9017381..321d95c 100644 --- a/docsrc/source/gui/diff_data_tab.rst +++ b/docsrc/source/gui/diff_data_tab.rst @@ -2,4 +2,135 @@ The "Differential Data" tab ************************************************** -Placeholder text... \ No newline at end of file + +At this tab you will extract the high-order data (Gradients and Hessians) +that are necessary in order to calculate the self-optimizing control structures using +the exact local method from :cite:`alstad09`. + +The high-order data is calculated with +analytical expressions derived by :cite:`DACE` and :cite:`alves2018`, using the kriging +metamodel built for the reduced space problem. + + +The aforementioned procedure is encapsulated in this tab. You will be able to: + +* Generate the gradients and hessians, and inspect them. +* Remove any CV candidate from the list of candidates if you want. + +Here is an overview of this tab, before you start using it: + + +.. figure:: ../images/diff_data_main.png + :align: center + + Differential Data tab. + + + +There are four main panels on this tab + +* Reduced space metamodel training *Panel* +* Gradient and Hessian estimation *Panel* +* Gradient results *panel* and Hessian results *panel* + +Reduced space metamodel training *Panel* +======================================== + +Under this panel, you are able to click on "Open training dialog" in order to +configure your reduced-space kriging metamodel. + + +Configuring your kriging metamodel +----------------------------------- + +Click on "Open training dialog": + + +.. figure:: ../images/diff_data_training_dialog.png + :align: center + + Opening the kriging training dialog window. + + +You will notice that the window that appears to you is exactly the same from +:ref:`metamodel_tab`. Therefore the process of configuring your reduced-space +kriging metamodel is essentially the same. + +.. figure:: ../images/diff_data_training_dialog_window.png + :align: center + + Training dialog window. + +.. IMPORTANT:: + At the training dialog window, you will notice that only the Candidates that + were not active constraints are considered now. This happens because *Metacontrol* + automatically removes the variables that are nominally active (MVs and CVs) based on the + previous tab (Reduced Space tab). In addition, you can remove any of the remaining CVs, if you + want. Just *de-select* the box of the variable you want to remove: + + .. figure:: ../images/diff_data_remove_cvs.png + :align: center + + Removing one variable from the CV candidates list (*fco2out* in this example). + + +After configuring the hyperparameters estimates, choosing which CVs will be taken into acount in your +metamodel, you can click on "Generate metamodel" in order to inspect the validation metrics of your metamodel. + + +Acessing performance of your reduced-space metamodel +----------------------------------------------------- + +For the reduced-space metamodel, one additional metric has been added in order to help you to evaluate the +robustness of the metamodel generated. It corresponds to the objective function of the maximum likelihood estimation +from the work of :cite:`DACE`. Values under 1e-5 will give robust estimation of the gradients and hessians. (Check :ref:`our_papers` +and the :ref:`theory_tab` section where we give some examples and discuss the theoretical background in detail) + +.. figure:: ../images/diff_data_dace_function.png + :align: center + + Evaluating reduced space kriging metamodel estimation capabilities. Highlighted in blue, + the value of the optimized objective function value, that results in the optimal hyperparameters estimation. + +Gradient and Hessian estimation *Panel* +========================================== + +After configuring the kriging metamodel options under the training +dialog window, you can click on "Estimate Gradient and Hessian", to generate the +high-order data. + + +.. figure:: ../images/diff_data_high_order_data_gen.png + :align: center + + Generating high-order data. + + +Gradient results *panel* and Hessian results *panel* +===================================================== + +After performing the previous step, you will notice that the panels for Gradients and Hessians are now +completed: + +.. figure:: ../images/diff_data_completed.png + :align: center + + Generating high-order data. + +If you take a closer look, you will notice that the matrices are in a Dataframe format, making them easy to ready +and to understand each element of the matrices generated. Note that the elements are indexed using the aliases that you +created. For example, the gain between the unconstrained degree of freedom (*mccp*) and one CV candidate (*co2rrcv*) is easily +read: + + +.. figure:: ../images/diff_data_reading_gains.png + :align: center + + Generating high-order data. + + +The same is true for every element of the gradients and hessians calculated. + +After the procedure here described, you can go to the last tab: Self-Optimizing Control. + + diff --git a/docsrc/source/gui/load_sim_tab.rst b/docsrc/source/gui/load_sim_tab.rst index cab1921..8a2d279 100644 --- a/docsrc/source/gui/load_sim_tab.rst +++ b/docsrc/source/gui/load_sim_tab.rst @@ -102,12 +102,12 @@ you entered. Giving proper (non-repeated) aliases and correctly classifying your .. figure:: ../images/var_tree_class_input.png :align: center - classifying your variables in *Metacontrol* - Input Variables. + Classifying your variables in *Metacontrol* - Input Variables. .. figure:: ../images/var_tree_class_output.png :align: center - classifying your variables in *Metacontrol* - Output Variables. + Classifying your variables in *Metacontrol* - Output Variables. .. IMPORTANT:: To create aliases in *Metacontrol*, only lower case alphanumeric characters are allowed. @@ -265,7 +265,7 @@ Creating a Constraint function ------------------------------- It is very common to have process constraints in the processes that you -want to study in a plantwide (Self-Optimizing) Perspective. *Metacontrol* supports the +want to study in a plantwide (Self-Optimizing) perspective. *Metacontrol* supports the creation of constraints that are added to the optimization problem solved using metamodels. The constraints are always written in the form: @@ -307,13 +307,13 @@ Simulation info *panel* ======================= This panel serves as a "At a glance" simulation data info panel: After you load your Aspen Plus simulation, -You can inspect the following information: +it is possible to inspect the following information: * Number and name of components * Thermodynamic Package used in your model * Number and name of blocks used * Number and name of streams in your flowsheet -* Chemical Reactions modelled +* Chemical Reactions modeled * If there are any sensitivity analysis, optimizations, calculators and/or Design Specifications Within your model. .. ATTENTION:: diff --git a/docsrc/source/gui/metamodel_tab.rst b/docsrc/source/gui/metamodel_tab.rst index 9558fb1..4fc91b6 100644 --- a/docsrc/source/gui/metamodel_tab.rst +++ b/docsrc/source/gui/metamodel_tab.rst @@ -1,9 +1,11 @@ -************************************************** +.. _metamodel_tab: + +=================== The "Metamodel" tab -************************************************** +=================== At this tab you will use the Design of Experiments (DOE) generated previously to -generate kriging metamodels of the initial Sampling. The main idea here is to inspect if +generate kriging metamodels of the initial sampling. The main idea here is to inspect if the initial sampling providing is capable of predicting the basic form of the functions that you chose/created on the first step (Objective Function, CV candidates and constraints). If the kriging generated by the initial sampling is good enough, you are able to optimize it and refine it on the next step. @@ -12,7 +14,7 @@ On this tab you will be able to: * Define the lower and upper bounds for the hyperparameters that will be adjusted to give the best kriging prediction * Define the regression and correlation (kernel) model for your kriging interpolator -* Define which variables will have their model built +* Define which variables will have their kriging metamodel built * Inspect several validation metrics in order to conclude if your model is a good representation * Perform k-fold or hold-out validation. On the latter, you will be able to also inspect graphically your model. @@ -196,6 +198,7 @@ They allow you to: + Validation metrics *panel* =========================== diff --git a/docsrc/source/gui/optimization_tab.rst b/docsrc/source/gui/optimization_tab.rst index 11acffc..a181f38 100644 --- a/docsrc/source/gui/optimization_tab.rst +++ b/docsrc/source/gui/optimization_tab.rst @@ -88,7 +88,7 @@ panel the iterations in real time, and each step performed by the algorithm. Control *panel* ================ -This is how the control *panel* looks like during an optimization run in *Metacontrol* +This is how the control *panel* looks like during an optimization run in *Metacontrol*: .. figure:: ../images/opt_control_panel.png @@ -96,7 +96,7 @@ This is how the control *panel* looks like during an optimization run in *Metaco Control *panel* output. -The control panel shows the operations performed by the adaptive sampling algorithm, the decision variables values (MVs) at each +The control panel shows (being updated in real time) the operations performed by the adaptive sampling algorithm, the decision variables values (MVs) at each iteration, the actual and predicted objective function values, and the largest infeasiblity (constraint) violation for that iteration. At the end of the optimization run, *Metacontrol* will inform you how many points are within the trust-region. diff --git a/docsrc/source/gui/reduced_space_tab.rst b/docsrc/source/gui/reduced_space_tab.rst index fc0e7d6..d66ab27 100644 --- a/docsrc/source/gui/reduced_space_tab.rst +++ b/docsrc/source/gui/reduced_space_tab.rst @@ -2,4 +2,190 @@ The "Reduced Space" tab ************************************************** -Placeholder text... \ No newline at end of file +At this tab you will define your Reduced-Space problem: + +* Generate the reduced space problem DOE data, in order to + generate a kriging metamodel around the nominal optimal operating point found in the previous step. + The idea here is to generate a metamodel with points sampled around a small deviation from the optimal point, + to generate the gradients with respect to the plant measurements, to the disturbances, and the hessians, with + robustness, as proved by (:cite:`alves2018`). + +* Additionally, you will inform *Metacontrol* which constraints are active, and what are the remaining degrees of freedom that + are going to be used at the Reduced Space problem sampling, at the "Variable activity" *panel*. + +* Inform the bounds of the Manipulated variables and disturbances around the optimal point. + +Here is an overview of this tab: + +.. figure:: ../images/reduced_space_main.png + :align: center + + *Metacontrol* "Optimization" tab. + + +There are four main panels at this tab: + +* Variable activity *panel* +* Range of Reduced-space Variables *panel* +* Data source *panel* +* Reduced Space sampled Data *panel* + +.. IMPORTANT:: + At this point, you **must** go back to the process simulator (Aspen Plus), and implement the active constraints + that were found by the optimizaiton step. + + + + #. Save a copy of your initial .bkp file. + + #. In your copied simulation file, implement your active constraints: + + #. If they are input specifications, just fix their values at the respective block or stream where the variable is located. + #. If they are output variables, implement Design Specifications, consuming the necessary degrees of freedom. + + #. Save and close your Reduced-Space problem aspen plus file. + #. Go back to *Metacontrol*. + + +Variable activity *panel* +========================== + +At this panel, you will inform to *Metacontrol* the reduced-space remaining degrees of freedom (e.g.: The variables +that were not used to close feedback loops in case of nonlinear constraints becoming active, or the the decision variables +that did not reached an upper/lower bound at the optmization run). *Metacontrol* automatically understands that the variables that you +did not check, were active decision variables or were used as MVs for a desing specification loop. On the right panel, you should indicate +if any CV candidate that you created (which eventually can be a constraint) were active. You should mark these variables, since you must control them +(Active-Constraint Control :cite:`skoge00`), before using the mathematical formulations that are implemented within *Metacontrol*. + +Informing to *Metaconrol* active candidates and active decision variables (MVs) +-------------------------------------------------------------------------------- + +At example in the figure below, *mcct*, *f1t* and *f2t* were nominally active at the optimal point. These are the Manipulated Variables of this +example. The remaining variable corresponds to *mccp*. Therefore, at the left side of the "Variable activity" *panel*, only the +remaining degree of freedom must be checked (*mccp*): + + +.. figure:: ../images/reduced_space_var_act_left_side.png + :align: center + + Selecting unconstrained degree(s) of freedom. + +On the other hand, the variables *mcctout*, *f1out* and *f2out* are the decision variables (MVs) also listed as CV candidates, in order to analyze +if keeping them constant, there will be self-optimizing control structures using them. Since the decision variables were active, they must be eliminated from the +list of potential candidates, since the SOC methodology considers that active-constraint control is a mandatory step of the methodology. Therefore, you must mark them as active: + + +.. figure:: ../images/reduced_space_var_act_right_side.png + :align: center + + Selecting unconstrained degree(s) of freedom. + + +.. IMPORTANT:: + + **In a nutshell**, this panel serves for you to inform to *Metacontrol* what are the *unconstrained* degrees of freedom of the + reduced-space problem, and also to inform the *active* candidate controlled variables (constraints, MVs listed as candidates, etc.). + With this information, *Metacontrol* will automatically consider only the *unconstrained* degrees of freedom summed with the disturbances as input variables + on the sampling, and also will not consider the active variables when + generating the high-order data (gradients and hessians). Since you are providing a modified simulation file with the active variables implemented (MVs and or constraints/CVs), they do not + need to be in the analysis, since they are already being controlled. + + + +Range of Reduced-space Variables *panel* +========================================= + +On this panel, you will inform the lower and upper bound of the unconstrained degrees of freedom and +disturbances to be used in the sampling process, in order to generate the reduced-space kriging metamodel: + +.. figure:: ../images/reduced_space_range.png + :align: center + + Selecting unconstrained degree(s) of freedom. + +.. IMPORTANT:: + As showed by our previous publications, the bounds for the second (reduced-space) kriging metamodel must be a around a small margin of the + optimal operating point. You can consider this a tunable parameter. Generally, +-0.5% of the optimal operating point will generate robust prediction + of the high-order data on the next step (gradients and hessians). However, feel free to tight or loose this value if you want to try to improve your reduced-space + kriging metamodel. + + +Data Source *panel* +==================== + +On this panel you will: + +* Point to the Aspen Plus simulation file of the reduced-space problem, if you opt to sample + using the process simulator. +* Use the sampling assistant, if you opt to sample using the process simulator. +* Point to the .csv file if you opt to import an already sampled DOE of the reduced space problem. + + +Sampling the reduced-space problem with your Aspen Plus simulation file +------------------------------------------------------------------------ + +Under the Data Source *panel*, point to the Aspen Plus reduced-space problem file location: + + +.. figure:: ../images/reduced_space_dialogbox_sim_file.png + :align: center + + Pointing to the reduced-space problem simulation file. + +After this, you can open the Sampling Assistant: + +.. figure:: ../images/reduced_space_open_sampling_assistant.png + :align: center + + Opening the sampling assistant. + +You will notice that the Sampling Assistant window corresponds exactly to the same +from the step 2 (:ref:`sampling_assistant`). Therefore, the procedure is exactly the same. + +.. figure:: ../images/reduced_space_sampling_assistant.png + :align: center + + The sampling assistant, the same from the sampling tab. + +You will define the number of cases to be sampled: + +.. figure:: ../images/reduced_cases_config.png + :align: center + + Configuring the number of cases to be sampled. + +And click on "Sample Data". You can at any time, abort this operation ("Abort" button). +When the sampling is finished, you can click on "Done" and proceed to the next step (Differential +data). + +.. figure:: ../images/reduced_space_sampling_running.png + :align: center + + Sampling Assistant running cases for the reduced space problem. + +.. figure:: ../images/reduced_space_sampling_finished.png + :align: center + + Sampling completed, just click on "Done" to go back to "Reduced Space" tab. + + +Reduced Space sampled Data *panel* +=================================== + +After sampling you data, if you go back to the Reduced Space Tab, you will notice that +this panel will be completed: + +.. figure:: ../images/reduced_space_sampled_data.png + :align: center + + Reduced Space sampled Data *panel*. + + +After everything, your Reduced Space tab will be completed: + +.. figure:: ../images/reduced_space_completed.png + :align: center + + Reduced space tab completed. You are able to go to the next tab (Differential data). + + diff --git a/docsrc/source/gui/sampling_tab.rst b/docsrc/source/gui/sampling_tab.rst index e786ce5..97d61b4 100644 --- a/docsrc/source/gui/sampling_tab.rst +++ b/docsrc/source/gui/sampling_tab.rst @@ -2,14 +2,14 @@ The "Sampling" tab ************************************************** -At this tab you will use the simulation provided on the last step to +At this tab you will use the simulation provided on the previous step to perform a Design of Experiments (DOE). You will be able to: * Define the lower and upper bounds for your manipulated variables, that will be used as the limits of the sampling and as box constraints of the optimization problem * Define the number of sampled cases -* Inspect the results of the sampling, for each variable that you selected on the last +* Inspect the results of the sampling, for each variable that you selected on the previous step * Check convergence status of each case @@ -59,7 +59,10 @@ Sampling Assistant *panel* ========================== This panel defines how are you going to supply the DOE data to metacontrol: Using your simulation file (recommended) or -loading an *.CSV file (this is a auxiliary feature). For the first case, you are going to use the Sample Assistant from *Metacontrol*: +loading an *.CSV file (this is an auxiliary feature). For the first case, you are going to use the Sample Assistant from *Metacontrol*: + + +.. _sampling_assistant: Using the Sampling Assistant to sample data from Aspen Plus ------------------------------------------------------------ @@ -117,7 +120,8 @@ The "Sample Data" button now is available. Push it to start running your cases. At each case, *Metacontrol* communicates with the Aspen Plus Engine, and collects the results automatically and in real time. You can literally see the -sampling process in front of you, with the "Sampler Display" panel being updated as the cases run. +sampling process in front of you, with the "Sampler Display" panel being updated as the cases run. Note that there is a progress bar +to show you the overall process. .. figure:: ../images/sampling_running.png :align: center diff --git a/docsrc/source/gui/soc_tab.rst b/docsrc/source/gui/soc_tab.rst index e31f77b..d51211c 100644 --- a/docsrc/source/gui/soc_tab.rst +++ b/docsrc/source/gui/soc_tab.rst @@ -1,5 +1,137 @@ -************************************************** +================================= The "Self-Optimizing Control" tab -************************************************** +================================= + +At this tab the self-optimizing control structure selection is made. You will be able to: + +* Provide the expected *disturbances* and *implementation/measurement* magnitudes to be taken + into account in your study +* Inform *Metacontrol* how many **best** (that incurs in the lowest loss) structures do you want to analyze for each possible control structure subset size +* Inspecting in *ascending* and *descending* order all evaluated control structures +* Inspect the `condition number `_ of each control structure +* Inspect linear combinations of controlled variables, if you chose to analyze more CV candidates than the unconstrained degrees of freedom available. + + +This tab looks like the picture below, before you start to fill the necessary data: + +.. figure:: ../images/soc_main_tab_before_completion.png + :align: center + + *Metacontrol* "Self-Optimizing Control" tab. + +The forms are red because you need to supply the data for the disturbances and implementation/measurement errors magnitudes. + +There are three panels at this tab: + +* Disturbances magnitude *panel* +* Measurement error *panel* +* Subsets sizing options *panel* + +Disturbances magnitude *panel* +=============================== + +At this panel, you will inform to *Metacontrol* the expected magnitude of the disturbances. +As an example, see the figure below, where it was considered 10% of the nominal value for +the variables *fpropan*, *fpropy* and *vfrac*: + + +.. figure:: ../images/soc_disturbances_magnitude_panel.png + :align: center + + Entering disturbances expected magnitudes. + +Measurement error *panel* +========================= + +At this panel, you will enter the expected implementation/measurement error. For the example on the figure +below, it was considered 0.5°C for temperature measurements and 0.001 for flow measurements. + +.. figure:: ../images/soc_measurement_error_panel.png + :align: center + + Entering measurement error expected magnitudes. + + +Subsets sizing options *panel* +=============================== + +At this panel you will determine how many *best* control structures will be reported to you by *Metacontrol*, +for each possible subset size: + + +.. figure:: ../images/soc_subset_sizing_options_panel.png + :align: center + + Entering measurement error expected magnitudes. + + +*Metacontrol* and the maximum number of possible control structures for each subset size +----------------------------------------------------------------------------------------- + +*Metacontrol* automatically calculates the maximum number of possible control structures for +each subset size. + +For the example shown in the previous figure, there are 20 CV candidates and two unconstrained degrees of freedom +available. For a single measurement policy (using one single CV candidate for each MV) there are + +.. math:: + (20! / 2!) = 20!/(2! \times (20-2)!) = 190 + +possible control structures. If the user tries to evaluate 191 (which is impossible), *Metacontrol* will prevent him +from doing this: + + +.. figure:: ../images/soc_subset_sizing_impossible.png + :align: center + + *Metacontrol* avoiding impossible evaluations. + + +Analyzing your results +======================= + +After completing this tab with the all necessary data, you can click on "Generate Results", and a window will +appear: + +.. figure:: ../images/soc_results_review.png + :align: center + +You can select which subset size you want to analyze: + +.. figure:: ../images/soc_analyze_subset.png + :align: center + +The linear combinations generated for the possible control structures: + +.. figure:: ../images/soc_h_matrix.png + :align: center + +And the sensitivity matrices for each possible control structure evaluated: + +.. figure:: ../images/soc_f_matrix.png + :align: center + +In addition, you can arrange the control structures in *ascending* and *descending* loss value order, to ease +your study: + +.. figure:: ../images/soc_ascending_size2.png + :align: center + +.. figure:: ../images/soc_descending_size2.png + :align: center + +For any subset size! For example, linear combinations of 6 measurements for this particular case shown here for +illustration purposes: + + +.. figure:: ../images/soc_size6.png + :align: center + +And inspect other controllability measures, such as the condition number (highlighted with a black-box): + +.. figure:: ../images/soc_condition_number.png + :align: center + + + -Placeholder text... \ No newline at end of file diff --git a/docsrc/source/images/diff_data_completed.PNG b/docsrc/source/images/diff_data_completed.PNG new file mode 100644 index 0000000..56ee0f8 Binary files /dev/null and b/docsrc/source/images/diff_data_completed.PNG differ diff --git a/docsrc/source/images/diff_data_dace_function.PNG b/docsrc/source/images/diff_data_dace_function.PNG new file mode 100644 index 0000000..ad8cd0f Binary files /dev/null and b/docsrc/source/images/diff_data_dace_function.PNG differ diff --git a/docsrc/source/images/diff_data_high_order_data_gen.png b/docsrc/source/images/diff_data_high_order_data_gen.png new file mode 100644 index 0000000..f41d1e4 Binary files /dev/null and b/docsrc/source/images/diff_data_high_order_data_gen.png differ diff --git a/docsrc/source/images/diff_data_main.PNG b/docsrc/source/images/diff_data_main.PNG new file mode 100644 index 0000000..f42f181 Binary files /dev/null and b/docsrc/source/images/diff_data_main.PNG differ diff --git a/docsrc/source/images/diff_data_reading_gains.PNG b/docsrc/source/images/diff_data_reading_gains.PNG new file mode 100644 index 0000000..52658d1 Binary files /dev/null and b/docsrc/source/images/diff_data_reading_gains.PNG differ diff --git a/docsrc/source/images/diff_data_remove_cvs.png b/docsrc/source/images/diff_data_remove_cvs.png new file mode 100644 index 0000000..8828401 Binary files /dev/null and b/docsrc/source/images/diff_data_remove_cvs.png differ diff --git a/docsrc/source/images/diff_data_training_dialog.png b/docsrc/source/images/diff_data_training_dialog.png new file mode 100644 index 0000000..25637da Binary files /dev/null and b/docsrc/source/images/diff_data_training_dialog.png differ diff --git a/docsrc/source/images/diff_data_training_dialog_window.PNG b/docsrc/source/images/diff_data_training_dialog_window.PNG new file mode 100644 index 0000000..864005a Binary files /dev/null and b/docsrc/source/images/diff_data_training_dialog_window.PNG differ diff --git a/docsrc/source/images/plot_soc.svg b/docsrc/source/images/plot_soc.svg index ad3685b..b1c8350 100644 --- a/docsrc/source/images/plot_soc.svg +++ b/docsrc/source/images/plot_soc.svg @@ -1,3 +1,3 @@ -
      Loss for control
      structure 1
      Loss for control...
      Objective
      Function 
      Objective...
      d^*
      Reoptimized   
      Reoptimized J_{opt}(d)  
      Self-Optimizing
      Control Structure 1
      Self-Optimizing...
      Self-Optimizing
      Control Structure 2
      Self-Optimizing...
      Loss for control
      structure 2
      Loss for control...
      Distrubances
      Distrubances d
      Viewer does not support full SVG 1.1
      \ No newline at end of file +
      Loss for control
      structure 1
      Loss for control...
      Objective
      Function 
      Objective...
      d^*
      Reoptimized   
      Reoptimized J_{opt}(d)  
      Self-Optimizing
      Control Structure 1
      Self-Optimizing...
      Self-Optimizing
      Control Structure 2
      Self-Optimizing...
      Loss for control
      structure 2
      Loss for control...
      Disturbances
      Disturbances d
      Viewer does not support full SVG 1.1
      \ No newline at end of file diff --git a/docsrc/source/images/reduced_cases_config.PNG b/docsrc/source/images/reduced_cases_config.PNG new file mode 100644 index 0000000..e316d97 Binary files /dev/null and b/docsrc/source/images/reduced_cases_config.PNG differ diff --git a/docsrc/source/images/reduced_space_completed.PNG b/docsrc/source/images/reduced_space_completed.PNG new file mode 100644 index 0000000..1bf9720 Binary files /dev/null and b/docsrc/source/images/reduced_space_completed.PNG differ diff --git a/docsrc/source/images/reduced_space_dialogbox_sim_file.PNG b/docsrc/source/images/reduced_space_dialogbox_sim_file.PNG new file mode 100644 index 0000000..b6fba7c Binary files /dev/null and b/docsrc/source/images/reduced_space_dialogbox_sim_file.PNG differ diff --git a/docsrc/source/images/reduced_space_main.PNG b/docsrc/source/images/reduced_space_main.PNG new file mode 100644 index 0000000..c6dbf2e Binary files /dev/null and b/docsrc/source/images/reduced_space_main.PNG differ diff --git a/docsrc/source/images/reduced_space_open_sampling_assistant.PNG b/docsrc/source/images/reduced_space_open_sampling_assistant.PNG new file mode 100644 index 0000000..bd1e12e Binary files /dev/null and b/docsrc/source/images/reduced_space_open_sampling_assistant.PNG differ diff --git a/docsrc/source/images/reduced_space_point_sim_file.PNG b/docsrc/source/images/reduced_space_point_sim_file.PNG new file mode 100644 index 0000000..f76e57b Binary files /dev/null and b/docsrc/source/images/reduced_space_point_sim_file.PNG differ diff --git a/docsrc/source/images/reduced_space_range.PNG b/docsrc/source/images/reduced_space_range.PNG new file mode 100644 index 0000000..be764d6 Binary files /dev/null and b/docsrc/source/images/reduced_space_range.PNG differ diff --git a/docsrc/source/images/reduced_space_sampled_data.PNG b/docsrc/source/images/reduced_space_sampled_data.PNG new file mode 100644 index 0000000..0090040 Binary files /dev/null and b/docsrc/source/images/reduced_space_sampled_data.PNG differ diff --git a/docsrc/source/images/reduced_space_sampling_assistant.PNG b/docsrc/source/images/reduced_space_sampling_assistant.PNG new file mode 100644 index 0000000..b1f119a Binary files /dev/null and b/docsrc/source/images/reduced_space_sampling_assistant.PNG differ diff --git a/docsrc/source/images/reduced_space_sampling_finished.png b/docsrc/source/images/reduced_space_sampling_finished.png new file mode 100644 index 0000000..eb4a255 Binary files /dev/null and b/docsrc/source/images/reduced_space_sampling_finished.png differ diff --git a/docsrc/source/images/reduced_space_sampling_running.PNG b/docsrc/source/images/reduced_space_sampling_running.PNG new file mode 100644 index 0000000..5f08679 Binary files /dev/null and b/docsrc/source/images/reduced_space_sampling_running.PNG differ diff --git a/docsrc/source/images/reduced_space_var_act_left_side.PNG b/docsrc/source/images/reduced_space_var_act_left_side.PNG new file mode 100644 index 0000000..4e57327 Binary files /dev/null and b/docsrc/source/images/reduced_space_var_act_left_side.PNG differ diff --git a/docsrc/source/images/reduced_space_var_act_right_side.PNG b/docsrc/source/images/reduced_space_var_act_right_side.PNG new file mode 100644 index 0000000..63b51f3 Binary files /dev/null and b/docsrc/source/images/reduced_space_var_act_right_side.PNG differ diff --git a/docsrc/source/images/soc_analyze_subset.png b/docsrc/source/images/soc_analyze_subset.png new file mode 100644 index 0000000..45f1979 Binary files /dev/null and b/docsrc/source/images/soc_analyze_subset.png differ diff --git a/docsrc/source/images/soc_ascending_size2.PNG b/docsrc/source/images/soc_ascending_size2.PNG new file mode 100644 index 0000000..b96b036 Binary files /dev/null and b/docsrc/source/images/soc_ascending_size2.PNG differ diff --git a/docsrc/source/images/soc_condition_number.PNG b/docsrc/source/images/soc_condition_number.PNG new file mode 100644 index 0000000..ee3057e Binary files /dev/null and b/docsrc/source/images/soc_condition_number.PNG differ diff --git a/docsrc/source/images/soc_descending_size2.PNG b/docsrc/source/images/soc_descending_size2.PNG new file mode 100644 index 0000000..1e3b905 Binary files /dev/null and b/docsrc/source/images/soc_descending_size2.PNG differ diff --git a/docsrc/source/images/soc_disturbances_magnitude_panel.PNG b/docsrc/source/images/soc_disturbances_magnitude_panel.PNG new file mode 100644 index 0000000..0c8cc2b Binary files /dev/null and b/docsrc/source/images/soc_disturbances_magnitude_panel.PNG differ diff --git a/docsrc/source/images/soc_f_matrix.png b/docsrc/source/images/soc_f_matrix.png new file mode 100644 index 0000000..c9acf80 Binary files /dev/null and b/docsrc/source/images/soc_f_matrix.png differ diff --git a/docsrc/source/images/soc_h_matrix.png b/docsrc/source/images/soc_h_matrix.png new file mode 100644 index 0000000..a8c6397 Binary files /dev/null and b/docsrc/source/images/soc_h_matrix.png differ diff --git a/docsrc/source/images/soc_main_tab_before_completion.PNG b/docsrc/source/images/soc_main_tab_before_completion.PNG new file mode 100644 index 0000000..0b64d4b Binary files /dev/null and b/docsrc/source/images/soc_main_tab_before_completion.PNG differ diff --git a/docsrc/source/images/soc_measurement_error_panel.PNG b/docsrc/source/images/soc_measurement_error_panel.PNG new file mode 100644 index 0000000..13aa83d Binary files /dev/null and b/docsrc/source/images/soc_measurement_error_panel.PNG differ diff --git a/docsrc/source/images/soc_results_review.PNG b/docsrc/source/images/soc_results_review.PNG new file mode 100644 index 0000000..2355944 Binary files /dev/null and b/docsrc/source/images/soc_results_review.PNG differ diff --git a/docsrc/source/images/soc_size6.PNG b/docsrc/source/images/soc_size6.PNG new file mode 100644 index 0000000..842505d Binary files /dev/null and b/docsrc/source/images/soc_size6.PNG differ diff --git a/docsrc/source/images/soc_subset_sizing_impossible.PNG b/docsrc/source/images/soc_subset_sizing_impossible.PNG new file mode 100644 index 0000000..9ded572 Binary files /dev/null and b/docsrc/source/images/soc_subset_sizing_impossible.PNG differ diff --git a/docsrc/source/images/soc_subset_sizing_options_panel.PNG b/docsrc/source/images/soc_subset_sizing_options_panel.PNG new file mode 100644 index 0000000..18a4790 Binary files /dev/null and b/docsrc/source/images/soc_subset_sizing_options_panel.PNG differ diff --git a/docsrc/source/index.rst b/docsrc/source/index.rst index 7cc062a..eb1ccaf 100644 --- a/docsrc/source/index.rst +++ b/docsrc/source/index.rst @@ -13,13 +13,40 @@ Control (SOC) technique can be achieved. How to cite us ============== -Please, cite the related paper: -.. code-block:: none +.. _our_papers: - place BibTeX entry here +Our papers +----------- +Please, cite the related papers: -And put a star on GitHub (Star GITHUB HERE) +#. `Metamodel-Based Numerical Techniques for Self-Optimizing Control `_; + + **BibTeX Entry:** + + .. code-block:: none + + @article{alves2018metamodel, + title={Metamodel-Based Numerical Techniques for Self-Optimizing Control}, + author={Alves, Victor MC and Lima, Felipe S and Silva, Sidinei K and Araujo, Antonio CB}, + journal={Industrial \& Engineering Chemistry Research}, + volume={57}, + number={49}, + pages={16817--16840}, + year={2018}, + publisher={ACS Publications} + } + +#. Metacontrol Article + + **BibTeX Entry:** + + .. code-block:: none + + Entry goes here when the paper review is accepted + + +And become a watcher/stargazer on `GitHub `_ to receive updates! Features @@ -27,29 +54,29 @@ Features Open-Source ============== -*Metacontrol* is *open-source*, under the MIT license. We believe that open code just makes -scientific development more clear and generally better. Want to inspect our code? Maybe change it for your +*Metacontrol* is **open-source**, under the **GPL v3.0** license. We believe that open code just makes +scientific development clearer and generally better. Want to inspect our code? Maybe change it for your specific desire? Have a suggestion? Go for it. Share with us! Built in Python ================ The scientific world and data scientists are moving in a accelerated pace to Python programming language. *Metacontrol* was built from scratch using it. Using state-of-the-art packages -such as *Numpy*, *Scipy*, *pyQT* and many others, a concise and standalone software is available. You will not need any other +such as `Numpy `_, `Scipy `_, `pyQT `_, `pandas `_ and many others, a concise and standalone software is available. You will **not** need any other software, apart from the process simulators (obviously), to run our application. Support for Optimization using metamodels ========================================== One crucial step of Self-Optimizing Control methodology is to optimize a process model. -We use the the famous *IpOpt* Optimization package in order to do it. Therefore, you can also use *Metacontrol* -to optimize processes that you modelled in Aspen Plus. +We use the the famous `IpOpt `_ Optimization package (using a `Python Interface `_) in order to do it. Therefore, you can also use *Metacontrol* +to optimize processes that you modeled in Aspen Plus. Usage of Kriging metamodels ============================ Kriging interpolators are widely used in the scientific community for prediction, optimization and data obtainment. -We use it to for optimization and high-order obtainment purposes. It is proven to generate robust precitions and results. -For further details, check our papers. +We use it to for optimization and high-order data obtainment purposes. It is proven to generate robust precitions and results. +For further details, check :ref:`our_papers`. State-of-the-art Self-Optimizing Control techniques @@ -57,7 +84,8 @@ State-of-the-art Self-Optimizing Control techniques Standing on the shoulders of giants, *Metacontrol* uses the most recent formulations in the SOC area available that are capable of quickly pre-screening the most promising candidate controlled variables from a given universe of possible combinations. This includes -the exact local Method with explicit solution from Alstad et al. (2009) and even branch-and-bound algorithms by Cao et al. (2009) under the hood. +the exact local Method with explicit solution from :cite:`alstad09` and even branch-and-bound +algorithms :cite:`kariwala2009` under the hood. Documentation Contents @@ -71,6 +99,7 @@ Documentation Contents gui/gui_index.rst examples/tutorials theory/theory_index + zbibliography diff --git a/docsrc/source/intro.rst b/docsrc/source/intro.rst index 7f051a4..aeed312 100644 --- a/docsrc/source/intro.rst +++ b/docsrc/source/intro.rst @@ -74,7 +74,7 @@ consequently, generating SOC-based control structures. All of that within a comprehensive User Interface, allowing the control structure designer/engineer/scientist (hey, that's you) to keep his/hers focus only on synthesizing the control structure, rather than wasting hours "jumping" between several software environments, such as: Process simulators (Aspen Plus) and -numerical packages (MATLAB, Python, Microsoft Excel, etc.). This tool is made by Engineers that struggled with this (us), +numerical packages (MATLAB, Python, Microsoft Excel, etc.). This tool is made by engineers that struggled with this (us), in order to try to solve such struggle for the scientific community. Installation diff --git a/docsrc/source/mybibfile.bib b/docsrc/source/mybibfile.bib index d9416b4..ad88cbd 100644 --- a/docsrc/source/mybibfile.bib +++ b/docsrc/source/mybibfile.bib @@ -141,7 +141,8 @@ @book{DACE title = "DACE - A Matlab Kriging Toolbox, Version 2.0", author = "Lophaven, {S{\o}ren Nymand} and Nielsen, {Hans Bruun} and Jacob S{\o}ndergaard", year = "2002", -language = "English", +publisher = "DTU Orbit", +language = "English" } @article{hori05, @@ -251,7 +252,7 @@ @book{python2009 @article{kariwala2009, title={Bidirectional branch and bound for controlled variable selection. Part II: Exact local method for self-optimizing control}, author={Kariwala, Vinay and Cao, Yi}, - journal={Computers \& chemical engineering}, + journal={Computers and chemical engineering}, volume={33}, number={8}, pages={1402--1412}, diff --git a/docsrc/source/overview/mtc.rst b/docsrc/source/overview/mtc.rst index 4d40f37..82659cc 100644 --- a/docsrc/source/overview/mtc.rst +++ b/docsrc/source/overview/mtc.rst @@ -56,8 +56,3 @@ available in real-time. Over the next session, each tab of *Metacontrol* will be detail, in order to teach you how to use it! -============ -Bibliography -============ -.. bibliography:: ../mybibfile.bib - :style: plain \ No newline at end of file diff --git a/docsrc/source/theory/theory_index.rst b/docsrc/source/theory/theory_index.rst index 4b090b8..823cbad 100644 --- a/docsrc/source/theory/theory_index.rst +++ b/docsrc/source/theory/theory_index.rst @@ -1,6 +1,8 @@ -********************************************** +.. _theory_tab: + +======================= Theoretical Backgrounds -********************************************** +======================= .. toctree:: :maxdepth: 2 diff --git a/docsrc/source/zbibliography.rst b/docsrc/source/zbibliography.rst new file mode 100644 index 0000000..55384c5 --- /dev/null +++ b/docsrc/source/zbibliography.rst @@ -0,0 +1,9 @@ +============ +Bibliography +============ + +You can found the main literature the allows *Metacontrol* to exist below. +For the complete list, go to :ref:`our_papers`. + +.. bibliography:: mybibfile.bib + :style: plain \ No newline at end of file