Exercise: Pyomo.DoE#

In this notebook, you will use Pyomo.DoE to compute the A- and D-optimal experiments from the TCLab. In our previous notebook, we used the sine test as a starting point. In this notebook, we will use the step test as the starting point.

Recall, we can computing the next best experiment assuming we already completed one prior experiment. Thus it is important to confirm our optimal experiment design does not change if we change the prior experiment of optimization initial point.

import sys

# If running on Google Colab, install Pyomo and Ipopt via IDAES
on_colab = "google.colab" in sys.modules
if on_colab:
    !wget "https://raw.githubusercontent.com/dowlinglab/pyomo-doe/main/notebooks/tclab_pyomo.py"
else:
    import os

    if "exercise_solutions" in os.getcwd():
        # Add the "notebooks" folder to the path
        # This is needed for running the solutions from a separate folder
        # You only need this if you run locally
        sys.path.append('../notebooks')

# import TCLab model, simulation, and data analysis functions
from tclab_pyomo import (
    TC_Lab_data,
    TC_Lab_experiment,
    extract_results,
    extract_plot_results,
    results_summary,
)

# set default number of states in the TCLab model
number_tclab_states = 2

Load and explore experimental data (step test)#

We will load the step test experimental data, similar to our previous notebooks.

import pandas as pd

if on_colab:
    file = "https://raw.githubusercontent.com/dowlinglab/pyomo-doe/main/data/tclab_step_test.csv"
else:
    file = '../data/tclab_step_test.csv'
df = pd.read_csv(file)
df.head()
Time T1 T2 Q1 Q2
0 0.00 22.84 22.84 50.0 0.0
1 1.00 22.84 22.84 50.0 0.0
2 2.01 23.16 22.84 50.0 0.0
3 3.02 22.84 22.84 50.0 0.0
4 4.01 22.84 22.84 50.0 0.0
ax = df.plot(x='Time', y=['T1', 'T2'], xlabel='Time (s)', ylabel='Temperature (°C)')
ax.grid(True)
../_images/1ee9dd18615153b5a6944ec972e3588406e8b3544ed07c9f3984189658849528.png
ax = df.plot(x='Time', y=['Q1', 'Q2'], xlabel='Time (s)', ylabel='Heater Power (%)')
ax.grid(True)
../_images/a8d901d5fa16a02593dd6bf76153bea54dc8d2a97d4e1a424731a4a6c42fb6bb.png
# Here, we will induce a step size of 10 seconds, as to not give too many 
# degrees of freedom for experimental design.
skip = 10

# Create the data object considering the new control points every 6 seconds
tc_data = TC_Lab_data(
    name="Sine Wave Test for Heater 1",
    time=df['Time'].values[::skip],
    T1=df['T1'].values[::skip],
    u1=df['Q1'].values[::skip],
    P1=200,
    TS1_data=None,
    T2=df['T2'].values[::skip],
    u2=df['Q2'].values[::skip],
    P2=200,
    TS2_data=None,
    Tamb=df['T1'].values[0],
)

Analyze FIM with Pyomo.DoE at initial point (step test)#

To get started, compute and analyze the FIM of the step test experiment.

# Load Pyomo.DoE class
from pyomo.contrib.doe import DesignOfExperiments

from pyomo.environ import SolverFactory

# Copied from previous notebook
theta_values = {
    'Ua': 0.0417051733576387,
    'Ub': 0.009440714239773074,
    'inv_CpH': 0.1659093525658045,
    'inv_CpS': 5.8357556063605465,
}
# Create experiment object for design of experiments
### BEGIN SOLUTION
doe_experiment = TC_Lab_experiment(data=tc_data, theta_initial=theta_values, number_of_states=number_tclab_states)
### END SOLUTION

# Create the design of experiments object using our experiment instance from above
### BEGIN SOLUTION
TC_Lab_DoE = DesignOfExperiments(experiment=doe_experiment, 
                                 step=1e-2,
                                 scale_constant_value=1,
                                 scale_nominal_param_value=True, 
                                 tee=True,)
### END SOLUTION

# Calculate the FIM
### BEGIN SOLUTION
FIM = TC_Lab_DoE.compute_FIM(method='sequential')
### END SOLUTION
# Call our custom function to summarize the results
# and compute the eigendecomposition of the FIM

### BEGIN SOLUTION
results_summary(FIM)
### END SOLUTION
======Results Summary======
Four design criteria log10() value:
A-optimality: 5.479278059341219
D-optimality: 8.809234454721581
E-optimality: -3.1126039391788907
Modified E-optimality: 8.570445782387669

FIM:
 [[280055.18540639  -3320.41889892 -42508.35322699  -4661.44955393]
 [ -3320.41889892    510.68043306   2729.38521901    584.8450854 ]
 [-42508.35322699   2729.38521901  20251.11718816   3322.1354697 ]
 [ -4661.44955393    584.8450854    3322.1354697     676.59046558]]

eigenvalues:
 [2.86973532e+05 1.43167335e+04 2.03307130e+02 7.71606826e-04]

eigenvectors:
 [[-9.87239625e-01  1.58273951e-01 -1.75293670e-02  1.33926737e-06]
 [ 1.29823029e-02  1.58928598e-01  7.03772484e-01 -6.92298672e-01]
 [ 1.57695528e-01  9.56659449e-01 -2.43536246e-01 -2.49983328e-02]
 [ 1.79304963e-02  1.85724948e-01  6.67148491e-01  7.21177948e-01]]

Discussion: How does this FIM compare to the sine test experiment we previously analyzed?

Optimize the next experiment (A-optimality)#

Now we are ready to compute the A-optimal next best experiment. Why are we starting with A-optimality? It runs faster so it is better for debugging syntax.

# Create experiment object for design of experiments
### BEGIN SOLUTION
doe_experiment = TC_Lab_experiment(data=tc_data, theta_initial=theta_values, number_of_states=number_tclab_states)
### END SOLUTION

# Create the design of experiments object using our experiment instance from above
### BEGIN SOLUTION
TC_Lab_DoE_A = DesignOfExperiments(experiment=doe_experiment, 
                                 step=1e-2,
                                 scale_constant_value=1,
                                 scale_nominal_param_value=True,
                                 objective_option="trace",  # Now we specify a type of objective, A-opt = "trace"
                                 prior_FIM=FIM,  # We use the prior information from the same existing experiment as in the D-optimal case!
                                 tee=True,)
### END SOLUTION

# Run DoE analysis
### BEGIN SOLUTION
TC_Lab_DoE_A.run_doe()
### END SOLUTION
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1080
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      362
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      180
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-01 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  0.0000000e+00 1.78e-15 5.10e-04  -1.0 5.18e-01    -  9.79e-01 1.00e+00h  1

Number of Iterations....: 1

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   0.0000000000000000e+00    0.0000000000000000e+00
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   0.0000000000000000e+00    0.0000000000000000e+00
Overall NLP error.......:   1.7763568394002505e-15    1.7763568394002505e-15


Number of objective function evaluations             = 2
Number of objective gradient evaluations             = 2
Number of equality constraint evaluations            = 2
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 2
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 1
Total CPU secs in IPOPT (w/o function evaluations)   =      0.000
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 1.94e-04  -1.0 2.57e-01    -  9.84e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 7.29e-17  -1.0 2.13e+00    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 7.05e-18  -2.5 3.48e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.97e-19  -3.8 6.45e-01    -  1.00e+00 1.00e+00f  1
   5  0.0000000e+00 1.80e-15 9.69e-21  -5.7 1.39e-01    -  1.00e+00 1.00e+00h  1
   6  0.0000000e+00 1.39e-15 1.26e-22  -8.6 1.52e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 6

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.2578315189634477e-22    1.2578315189634477e-22
Constraint violation....:   1.3877787807814457e-15    1.3877787807814457e-15
Complementarity.........:   3.2874888828090638e-09    3.2874888828090638e-09
Overall NLP error.......:   3.2874888828090638e-09    3.2874888828090638e-09


Number of objective function evaluations             = 7
Number of objective gradient evaluations             = 7
Number of equality constraint evaluations            = 7
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 7
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 6
Total CPU secs in IPOPT (w/o function evaluations)   =      0.006
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 2.22e-04  -1.0 3.32e-01    -  9.85e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 7.81e-17  -1.0 1.86e+00    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 7.70e-18  -2.5 3.54e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.83e-19  -3.8 6.45e-01    -  1.00e+00 1.00e+00f  1
   5  0.0000000e+00 1.78e-15 1.26e-20  -5.7 1.41e-01    -  1.00e+00 1.00e+00h  1
   6  0.0000000e+00 1.78e-15 1.09e-22  -8.6 1.54e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 6

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.0867085297415401e-22    1.0867085297415401e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.3107750038258920e-09    3.3107750038258920e-09
Overall NLP error.......:   3.3107750038258920e-09    3.3107750038258920e-09


Number of objective function evaluations             = 7
Number of objective gradient evaluations             = 7
Number of equality constraint evaluations            = 7
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 7
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 6
Total CPU secs in IPOPT (w/o function evaluations)   =      0.000
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 1.99e-05  -1.0 3.56e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 6.07e-18  -1.7 6.32e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.86e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.26e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.29e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.2862658525199580e-22    1.2862658525199580e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4533556448167006e-09    3.4533556448167006e-09
Overall NLP error.......:   3.4533556448167006e-09    3.4533556448167006e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.000
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 2.58e-05  -1.0 3.52e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 7.81e-18  -1.7 6.32e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.55e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.68e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.57e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.5695752123193700e-22    1.5695752123193700e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4533025836104998e-09    3.4533025836104998e-09
Overall NLP error.......:   3.4533025836104998e-09    3.4533025836104998e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.000
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 5.36e-05  -1.0 1.27e-01    -  9.89e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 2.69e-17  -1.7 5.40e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.69e-18  -3.8 1.04e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.24e-20  -5.7 1.70e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.18e-22  -8.6 1.84e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.1808003244194470e-22    1.1808003244194470e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4600225074837807e-09    3.4600225074837807e-09
Overall NLP error.......:   3.4600225074837807e-09    3.4600225074837807e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.004
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 4.90e-05  -1.0 1.18e-01    -  9.90e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 2.30e-17  -1.7 5.56e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.53e-18  -3.8 1.04e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.39e-20  -5.7 1.70e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.21e-22  -8.6 1.84e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.2097516458588030e-22    1.2097516458588030e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4581298725181036e-09    3.4581298725181036e-09
Overall NLP error.......:   3.4581298725181036e-09    3.4581298725181036e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 1.99e-05  -1.0 3.64e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 1.86e-15 7.81e-18  -1.7 6.31e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.95e-15 1.46e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.18e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.57e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.5654393092566049e-22    1.5654393092566049e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4534443694469787e-09    3.4534443694469787e-09
Overall NLP error.......:   3.4534443694469787e-09    3.4534443694469787e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.000
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 2.58e-05  -1.0 3.47e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 2.66e-15 5.20e-18  -1.7 6.33e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.23e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.34e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.03e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.0288058868628282e-22    1.0288058868628282e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4532364509691435e-09    3.4532364509691435e-09
Overall NLP error.......:   3.4532364509691435e-09    3.4532364509691435e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.000
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:    12464
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:      910

Total number of variables............................:     3907
                     variables with only lower bounds:        0
                variables with lower and upper bounds:     2077
                     variables with only upper bounds:        0
Total number of equality constraints.................:     3907
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.78e+01 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (207913)
   1  0.0000000e+00 2.54e+05 5.60e-03  -1.0 3.56e+01    -  9.35e-01 1.00e+00h  1
   2  0.0000000e+00 1.16e-10 4.65e-12  -1.0 2.54e+05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 2

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   0.0000000000000000e+00    0.0000000000000000e+00
Constraint violation....:   1.1641532182693481e-10    1.1641532182693481e-10
Complementarity.........:   0.0000000000000000e+00    0.0000000000000000e+00
Overall NLP error.......:   1.1641532182693481e-10    1.1641532182693481e-10


Number of objective function evaluations             = 3
Number of objective gradient evaluations             = 3
Number of equality constraint evaluations            = 3
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 3
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 2
Total CPU secs in IPOPT (w/o function evaluations)   =      0.055
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:    13197
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:      911

Reallocating memory for MA57: lfact (249688)
Total number of variables............................:     3999
                     variables with only lower bounds:        1
                variables with lower and upper bounds:     2168
                     variables with only upper bounds:        0
Total number of equality constraints.................:     3908
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -5.4792838e+00 2.72e+05 1.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (262838)
   1 -5.5205848e+00 5.08e+04 1.26e+01  -1.0 2.25e+05    -  6.06e-01 1.00e+00h  1
   2 -5.5604000e+00 1.72e+03 1.70e+00  -1.0 3.18e+04    -  9.03e-01 1.00e+00h  1
   3 -5.5635707e+00 2.91e+00 2.92e-02  -1.0 2.66e+03    -  9.83e-01 1.00e+00h  1
   4 -5.6121304e+00 8.19e+03 9.93e-04  -1.0 4.33e+04    -  8.92e-01 1.00e+00f  1
   5 -5.6754752e+00 6.78e+03 1.73e-04  -1.0 6.43e+04    -  1.00e+00 1.00e+00h  1
   6 -5.6790932e+00 2.37e+01 1.00e-06  -1.0 3.96e+03    -  1.00e+00 1.00e+00h  1
   7 -5.6791515e+00 1.82e-03 1.00e-06  -1.0 6.41e+01    -  1.00e+00 1.00e+00h  1
   8 -5.6796924e+00 4.74e-01 2.89e-07  -2.5 5.95e+02    -  1.00e+00 1.00e+00h  1
   9 -5.6983805e+00 5.90e+02 5.33e-07  -2.5 2.10e+04    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10 -5.6988637e+00 1.41e-02 2.83e-08  -2.5 5.56e+02    -  1.00e+00 1.00e+00h  1
  11 -5.7181112e+00 6.07e+02 1.16e-06  -3.8 2.27e+04    -  9.83e-01 1.00e+00h  1
  12 -5.9507673e+00 6.34e+04 1.80e-03  -3.8 3.77e+05    -  1.00e+00 1.00e+00H  1
  13 -5.9210919e+00 4.53e+03 1.33e-03  -3.8 5.90e+04    -  1.00e+00 1.00e+00h  1
  14 -5.9211003e+00 3.50e+03 3.29e-02  -3.8 1.09e+02  -4.0 9.25e-01 2.41e-01h  1
  15 -5.9121033e+00 2.55e+02 6.73e-03  -3.8 1.90e+04    -  1.00e+00 1.00e+00h  1
  16 -5.9283851e+00 1.30e+03 3.46e-03  -3.8 6.43e+04    -  1.00e+00 4.85e-01h  2
  17 -5.9364352e+00 2.17e+02 1.31e-06  -3.8 1.59e+04    -  1.00e+00 1.00e+00h  1
  18 -5.9365759e+00 3.94e-01 1.88e-08  -3.8 2.80e+02    -  1.00e+00 1.00e+00h  1
  19 -5.9365726e+00 1.32e-04 1.50e-09  -3.8 6.91e+00    -  1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20 -6.0353683e+00 1.98e+04 1.01e-05  -5.7 2.21e+05    -  7.96e-01 1.00e+00f  1
  21 -6.0734174e+00 8.35e+03 1.03e-05  -5.7 1.37e+05    -  5.97e-01 7.24e-01h  1
  22 -6.0804794e+00 4.32e+03 7.64e-06  -5.7 3.92e+04    -  5.60e-01 4.95e-01h  1
  23 -6.0822916e+00 2.97e+03 2.55e-05  -5.7 1.59e+04    -  5.48e-01 3.17e-01h  1
  24 -6.0833848e+00 1.98e+03 5.06e-05  -5.7 9.15e+03    -  7.71e-01 3.33e-01h  1
  25 -6.0833847e+00 1.63e+03 3.52e-03  -5.7 9.56e+00  -4.5 3.08e-03 1.78e-01h  1
  26 -6.0842810e+00 5.47e+02 1.04e-03  -5.7 3.76e+03    -  2.47e-01 6.65e-01h  1
  27 -6.0848595e+00 1.10e+02 2.07e-04  -5.7 2.02e+03    -  8.15e-01 8.01e-01h  1
  28 -6.0851552e+00 2.12e+01 4.02e-05  -5.7 1.26e+03    -  1.00e+00 8.17e-01h  1
  29 -6.0851552e+00 3.05e+00 1.93e-04  -5.7 1.23e+00  -5.0 9.06e-01 8.58e-01h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30 -6.0852583e+00 5.00e+00 1.29e-03  -5.7 8.81e+02    -  1.00e+00 6.24e-01h  1
  31 -6.0853118e+00 2.33e+01 5.11e-05  -5.7 1.25e+03    -  1.00e+00 9.60e-01h  1
  32 -6.0853456e+00 3.26e+01 9.11e-06  -5.7 1.19e+03    -  6.04e-01 1.00e+00h  1
  33 -6.0853679e+00 1.69e+00 7.66e-11  -5.7 2.18e+02    -  1.00e+00 1.00e+00h  1
  34 -6.0853866e+00 1.16e+00 9.63e-11  -5.7 2.46e+02    -  1.00e+00 1.00e+00h  1
  35 -6.0853851e+00 3.15e-02 1.84e-11  -5.7 3.67e+01    -  1.00e+00 1.00e+00h  1
  36 -6.0853851e+00 9.59e-07 1.84e-11  -5.7 2.11e-01    -  1.00e+00 1.00e+00h  1
  37 -6.0857880e+00 1.26e+01 9.32e-06  -8.6 2.75e+03    -  5.49e-01 4.11e-01h  1
  38 -6.0857883e+00 2.01e-02 2.57e-04  -8.6 2.94e+00  -5.4 1.83e-02 1.00e+00h  1
  39 -6.0857896e+00 2.00e-02 2.78e-04  -8.6 1.11e+03    -  7.81e-01 3.27e-03h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40 -6.0860764e+00 3.60e-01 6.18e-05  -8.6 1.03e+03    -  9.44e-01 7.81e-01f  1
  41 -6.0861453e+00 1.37e+00 1.33e-05  -8.6 2.47e+02    -  5.63e-01 7.84e-01h  1
  42 -6.0861494e+00 1.47e+00 4.46e-05  -8.6 1.97e+03    -  1.00e+00 3.30e-02h  1
  43 -6.0861639e+00 4.58e-02 7.89e-06  -8.6 4.20e+01    -  5.07e-01 9.69e-01h  1
  44 -6.0861639e+00 7.87e-08 1.14e-07  -8.6 9.27e-02  -5.9 1.00e+00 1.00e+00h  1
  45 -6.0861641e+00 6.45e-05 1.14e-05  -8.6 5.69e+00    -  3.99e-01 2.10e-01h  1
  46 -6.0861641e+00 3.96e-07 4.75e-08  -8.6 1.15e-01  -6.4 1.00e+00 1.00e+00f  1
  47 -6.0861646e+00 3.14e-03 2.77e-05  -8.6 6.97e+00    -  2.97e-01 1.00e+00h  1
  48 -6.0861646e+00 7.42e-07 1.26e-08  -8.6 9.22e-02  -6.9 1.00e+00 1.00e+00h  1
  49 -6.0861688e+00 2.02e+00 1.01e-05  -8.6 1.73e+02    -  5.17e-02 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  50 -6.0861700e+00 3.44e-06 1.47e-07  -8.6 3.22e+00  -7.3 1.00e+00 1.00e+00h  1
  51 -6.0861703e+00 6.23e-05 1.57e-08  -8.6 1.03e+00  -7.8 1.00e+00 1.00e+00h  1
  52 -6.0861704e+00 7.09e-04 1.66e-08  -8.6 3.26e+00  -8.3 1.00e+00 1.00e+00h  1
  53 -6.0861708e+00 6.63e-03 1.69e-08  -8.6 9.95e+00  -8.8 1.00e+00 1.00e+00h  1
  54 -6.0861722e+00 6.81e-02 1.80e-08  -8.6 3.19e+01  -9.2 1.00e+00 1.00e+00h  1
  55 -6.0861763e+00 5.48e-01 1.84e-07  -8.6 1.18e+02  -9.7 1.00e+00 7.54e-01h  1
  56 -6.0861745e+00 1.06e-01 2.77e-08  -8.6 3.98e+01    -  1.00e+00 1.00e+00h  1
  57 -6.0861766e+00 1.14e-01 2.04e-08  -8.6 4.28e+01    -  1.00e+00 9.32e-01h  1
  58 -6.0861767e+00 2.16e-07 4.66e-06  -8.6 2.09e-01    -  7.21e-01 1.00e+00h  1
  59 -6.0861767e+00 1.82e-07 5.49e-08  -8.6 2.69e-02    -  9.95e-01 1.00e+00h  1
Reallocating memory for MA57: lfact (287702)
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  60 -6.0861767e+00 2.61e-08 2.51e-14  -8.6 9.61e-03    -  1.00e+00 1.00e+00h  1
  61 -6.0861767e+00 9.17e-10 2.51e-14  -8.6 1.77e-03    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 61

                                   (scaled)                 (unscaled)
Objective...............:  -6.0861766779793482e+00   -6.0861766779793482e+00
Dual infeasibility......:   2.5059035581162194e-14    2.5059035581162194e-14
Constraint violation....:   9.0273285995244442e-10    9.1677065938711166e-10
Complementarity.........:   2.5190955416012936e-09    2.5190955416012936e-09
Overall NLP error.......:   2.5190955416012936e-09    2.5190955416012936e-09


Number of objective function evaluations             = 66
Number of objective gradient evaluations             = 62
Number of equality constraint evaluations            = 66
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 62
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 61
Total CPU secs in IPOPT (w/o function evaluations)   =      1.648
Total CPU secs in NLP function evaluations           =      0.024

EXIT: Optimal Solution Found.
# Extract and plot the results using our custom function
### BEGIN SOLUTION
aopt_pyomo_doe_results = extract_plot_results(None, TC_Lab_DoE_A.model.scenario_blocks[0])
### END SOLUTION
../_images/f589f2204a0e27decb1bd392434286489cf5de693fc04ce13f1e19af82b899f6.png
Model parameters:
Ua = 0.0421 Watts/degC
Ub = 0.0094 Watts/degC
CpH = 6.0274 Joules/degC
CpS = 0.1714 Joules/degC
 
# Compute the FIM at the optimal solution
### BEGIN SOLUTION
results_summary(TC_Lab_DoE_A.results['FIM'])
### END SOLUTION
======Results Summary======
Four design criteria log10() value:
A-optimality: 6.086176677979348
D-optimality: 12.10216308145059
E-optimality: -1.8430490851995411
Modified E-optimality: 7.903999360724161

FIM:
 [[1128333.9541418809, -10344.660945130825, -152904.22848832433, -15046.559242758245], [-10344.660945130825, 2401.6027739254746, 11862.047413143466, 2711.232065796269], [-152904.22848832433, 11862.047413143466, 85659.76582339974, 14284.600287465535], [-15046.559242758245, 2711.232065796269, 14284.600287465535, 3090.281642352252]]

eigenvalues:
 [1.15066864e+06 6.76851576e+04 1.13179676e+03 1.43532720e-02]

eigenvectors:
 [[-9.89644319e-01  1.42450825e-01 -1.76602664e-02  9.29188738e-06]
 [ 1.04215507e-02  1.59402422e-01  7.01400722e-01 -6.94636082e-01]
 [ 1.42398295e-01  9.59088274e-01 -2.43539221e-01 -2.36866202e-02]
 [ 1.47729345e-02  1.85602567e-01  6.69637059e-01  7.18971249e-01]]

Discussion: How do these compare to our previous A-optimal results considering the sine test as the prior experiment?

Optimize the next experiment (D-optimality)#

Finally, we are ready to solve the D-optimality problem. This may take 2 minutes to run.

# Create experiment object for design of experiments
### BEGIN SOLUTION
doe_experiment = TC_Lab_experiment(data=tc_data, theta_initial=theta_values, number_of_states=number_tclab_states)
### END SOLUTION

# Create the design of experiments object using our experiment instance from above
### BEGIN SOLUTION
TC_Lab_DoE_D = DesignOfExperiments(experiment=doe_experiment, 
                                 step=1e-2,
                                 scale_constant_value=1,
                                 scale_nominal_param_value=True,
                                 objective_option="determinant",  # Now we specify a type of objective, D-opt = "determinant"
                                 prior_FIM=FIM,  # We use the prior information from the existing experiment!
                                 tee=True,)
### END SOLUTION

### BEGIN SOLUTION
TC_Lab_DoE_D.run_doe()
### END SOLUTION
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1080
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      362
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      180
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-01 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1  0.0000000e+00 1.78e-15 5.10e-04  -1.0 5.18e-01    -  9.79e-01 1.00e+00h  1

Number of Iterations....: 1

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   0.0000000000000000e+00    0.0000000000000000e+00
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   0.0000000000000000e+00    0.0000000000000000e+00
Overall NLP error.......:   1.7763568394002505e-15    1.7763568394002505e-15


Number of objective function evaluations             = 2
Number of objective gradient evaluations             = 2
Number of equality constraint evaluations            = 2
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 2
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 1
Total CPU secs in IPOPT (w/o function evaluations)   =      0.001
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 1.94e-04  -1.0 2.57e-01    -  9.84e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 7.29e-17  -1.0 2.13e+00    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 7.05e-18  -2.5 3.48e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.97e-19  -3.8 6.45e-01    -  1.00e+00 1.00e+00f  1
   5  0.0000000e+00 1.80e-15 9.69e-21  -5.7 1.39e-01    -  1.00e+00 1.00e+00h  1
   6  0.0000000e+00 1.39e-15 1.26e-22  -8.6 1.52e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 6

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.2578315189634477e-22    1.2578315189634477e-22
Constraint violation....:   1.3877787807814457e-15    1.3877787807814457e-15
Complementarity.........:   3.2874888828090638e-09    3.2874888828090638e-09
Overall NLP error.......:   3.2874888828090638e-09    3.2874888828090638e-09


Number of objective function evaluations             = 7
Number of objective gradient evaluations             = 7
Number of equality constraint evaluations            = 7
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 7
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 6
Total CPU secs in IPOPT (w/o function evaluations)   =      0.006
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 2.22e-04  -1.0 3.32e-01    -  9.85e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 7.81e-17  -1.0 1.86e+00    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 7.70e-18  -2.5 3.54e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.83e-19  -3.8 6.45e-01    -  1.00e+00 1.00e+00f  1
   5  0.0000000e+00 1.78e-15 1.26e-20  -5.7 1.41e-01    -  1.00e+00 1.00e+00h  1
   6  0.0000000e+00 1.78e-15 1.09e-22  -8.6 1.54e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 6

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.0867085297415401e-22    1.0867085297415401e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.3107750038258920e-09    3.3107750038258920e-09
Overall NLP error.......:   3.3107750038258920e-09    3.3107750038258920e-09


Number of objective function evaluations             = 7
Number of objective gradient evaluations             = 7
Number of equality constraint evaluations            = 7
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 7
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 6
Total CPU secs in IPOPT (w/o function evaluations)   =      0.006
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 1.99e-05  -1.0 3.56e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 6.07e-18  -1.7 6.32e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.86e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.26e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.29e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.2862658525199580e-22    1.2862658525199580e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4533556448167006e-09    3.4533556448167006e-09
Overall NLP error.......:   3.4533556448167006e-09    3.4533556448167006e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 2.58e-05  -1.0 3.52e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 7.81e-18  -1.7 6.32e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.55e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.68e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.57e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.5695752123193700e-22    1.5695752123193700e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4533025836104998e-09    3.4533025836104998e-09
Overall NLP error.......:   3.4533025836104998e-09    3.4533025836104998e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 5.36e-05  -1.0 1.27e-01    -  9.89e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 2.69e-17  -1.7 5.40e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.69e-18  -3.8 1.04e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.24e-20  -5.7 1.70e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.18e-22  -8.6 1.84e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.1808003244194470e-22    1.1808003244194470e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4600225074837807e-09    3.4600225074837807e-09
Overall NLP error.......:   3.4600225074837807e-09    3.4600225074837807e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.65e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 4.90e-05  -1.0 1.18e-01    -  9.90e-01 1.00e+00h  1
   2  0.0000000e+00 1.78e-15 2.30e-17  -1.7 5.56e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.53e-18  -3.8 1.04e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.39e-20  -5.7 1.70e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.21e-22  -8.6 1.84e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.2097516458588030e-22    1.2097516458588030e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4581298725181036e-09    3.4581298725181036e-09
Overall NLP error.......:   3.4581298725181036e-09    3.4581298725181036e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 1.99e-05  -1.0 3.64e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 1.86e-15 7.81e-18  -1.7 6.31e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.95e-15 1.46e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.18e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.57e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.5654393092566049e-22    1.5654393092566049e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4534443694469787e-09    3.4534443694469787e-09
Overall NLP error.......:   3.4534443694469787e-09    3.4534443694469787e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.005
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:     1171
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:        0

Total number of variables............................:      453
                     variables with only lower bounds:        0
                variables with lower and upper bounds:      271
                     variables with only upper bounds:        0
Total number of equality constraints.................:      362
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 1.80e-03 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (11025)
   1  0.0000000e+00 1.78e-15 2.58e-05  -1.0 3.47e-02    -  9.91e-01 1.00e+00h  1
   2  0.0000000e+00 2.66e-15 5.20e-18  -1.7 6.33e-01    -  1.00e+00 1.00e+00f  1
   3  0.0000000e+00 1.78e-15 1.23e-18  -3.8 1.03e-01    -  1.00e+00 1.00e+00f  1
   4  0.0000000e+00 1.78e-15 1.34e-20  -5.7 1.68e-01    -  1.00e+00 1.00e+00h  1
   5  0.0000000e+00 1.78e-15 1.03e-22  -8.6 1.83e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 5

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   1.0288058868628282e-22    1.0288058868628282e-22
Constraint violation....:   1.7763568394002505e-15    1.7763568394002505e-15
Complementarity.........:   3.4532364509691435e-09    3.4532364509691435e-09
Overall NLP error.......:   3.4532364509691435e-09    3.4532364509691435e-09


Number of objective function evaluations             = 6
Number of objective gradient evaluations             = 6
Number of equality constraint evaluations            = 6
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 6
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 5
Total CPU secs in IPOPT (w/o function evaluations)   =      0.015
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:    12464
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:      910

Total number of variables............................:     3907
                     variables with only lower bounds:        0
                variables with lower and upper bounds:     2077
                     variables with only upper bounds:        0
Total number of equality constraints.................:     3907
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0  0.0000000e+00 2.78e+01 0.00e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
Reallocating memory for MA57: lfact (207913)
   1  0.0000000e+00 2.54e+05 5.60e-03  -1.0 3.56e+01    -  9.35e-01 1.00e+00h  1
   2  0.0000000e+00 1.16e-10 4.65e-12  -1.0 2.54e+05    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 2

                                   (scaled)                 (unscaled)
Objective...............:   0.0000000000000000e+00    0.0000000000000000e+00
Dual infeasibility......:   0.0000000000000000e+00    0.0000000000000000e+00
Constraint violation....:   1.1641532182693481e-10    1.1641532182693481e-10
Complementarity.........:   0.0000000000000000e+00    0.0000000000000000e+00
Overall NLP error.......:   1.1641532182693481e-10    1.1641532182693481e-10


Number of objective function evaluations             = 3
Number of objective gradient evaluations             = 3
Number of equality constraint evaluations            = 3
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 3
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 2
Total CPU secs in IPOPT (w/o function evaluations)   =      0.053
Total CPU secs in NLP function evaluations           =      0.000

EXIT: Optimal Solution Found.
Ipopt 3.13.2: linear_solver=ma57
halt_on_ampl_error=yes
max_iter=3000


******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt

This version of Ipopt was compiled from source code available at
    https://github.com/IDAES/Ipopt as part of the Institute for the Design of
    Advanced Energy Systems Process Systems Engineering Framework (IDAES PSE
    Framework) Copyright (c) 2018-2019. See https://github.com/IDAES/idaes-pse.

This version of Ipopt was compiled using HSL, a collection of Fortran codes
    for large-scale scientific computation.  All technical papers, sales and
    publicity material resulting from use of the HSL codes within IPOPT must
    contain the following acknowledgement:
        HSL, a collection of Fortran codes for large-scale scientific
        computation. See http://www.hsl.rl.ac.uk.
******************************************************************************

This is Ipopt version 3.13.2, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...:    13232
Number of nonzeros in inequality constraint Jacobian.:        0
Number of nonzeros in Lagrangian Hessian.............:      930

Reallocating memory for MA57: lfact (249922)
Total number of variables............................:     4008
                     variables with only lower bounds:        4
                variables with lower and upper bounds:     2168
                     variables with only upper bounds:        0
Total number of equality constraints.................:     3917
Total number of inequality constraints...............:        0
        inequality constraints with only lower bounds:        0
   inequality constraints with lower and upper bounds:        0
        inequality constraints with only upper bounds:        0

iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
   0 -1.0736863e+01 1.16e-10 7.55e+00  -1.0 0.00e+00    -  0.00e+00 0.00e+00   0
   1 -1.0736366e+01 5.64e-02 1.09e-02  -1.0 2.33e+02    -  9.90e-01 1.00e+00f  1
   2 -1.0694857e+01 3.87e+02 1.04e-02  -1.0 1.93e+04    -  1.00e+00 1.00e+00f  1
   3 -1.0528361e+01 6.17e+03 1.76e-01  -1.0 7.36e+04    -  1.00e+00 1.00e+00h  1
   4 -1.0540616e+01 6.68e+00 1.21e-03  -1.0 6.09e+03    -  1.00e+00 1.00e+00h  1
   5 -1.0567725e+01 1.33e+01 1.40e-02  -1.7 2.28e+03    -  1.00e+00 1.00e+00h  1
   6 -1.0678122e+01 2.09e+02 5.07e-02  -1.7 8.83e+03    -  1.00e+00 1.00e+00h  1
   7 -1.0678363e+01 8.88e-02 1.30e-04  -1.7 1.33e+02    -  1.00e+00 1.00e+00h  1
   8 -1.0821350e+01 3.45e+02 9.07e-02  -2.5 1.18e+04    -  9.94e-01 1.00e+00h  1
   9 -1.0815878e+01 2.00e+00 6.97e-04  -2.5 1.06e+00  -4.0 1.00e+00 1.00e+00h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  10 -1.1149998e+01 2.83e+03 3.65e-01  -2.5 4.32e+04    -  1.00e+00 1.00e+00h  1
  11 -1.1123669e+01 1.97e+01 9.17e-03  -2.5 2.38e+00  -4.5 1.00e+00 1.00e+00h  1
  12 -1.1262302e+01 3.68e+02 5.38e-02  -2.5 6.86e+03    -  1.00e+00 1.00e+00h  1
  13 -1.1266670e+01 3.66e+02 5.29e-02  -2.5 8.86e+03    -  3.80e-01 1.79e-02h  5
  14 -1.1261373e+01 5.51e+00 6.69e-04  -2.5 1.35e+00  -5.0 1.00e+00 1.00e+00h  1
  15 -1.1342731e+01 2.49e+01 2.02e-02  -2.5 1.90e+03    -  1.00e+00 1.00e+00H  1
  16 -1.1351632e+01 2.25e+01 3.55e-04  -2.5 3.08e+02    -  1.00e+00 1.00e+00h  1
  17 -1.1351558e+01 4.46e-01 5.84e-06  -2.5 6.80e+01    -  1.00e+00 1.00e+00h  1
  18 -1.1351567e+01 1.39e-05 2.83e-08  -2.5 8.47e-01    -  1.00e+00 1.00e+00h  1
  19 -1.1789730e+01 3.78e+03 4.15e-01  -3.8 5.30e+04    -  6.12e-01 1.00e+00f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  20 -1.2120142e+01 4.73e+03 1.99e-01  -3.8 8.96e+04    -  6.46e-01 6.33e-01h  1
  21 -1.2316219e+01 4.19e+03 1.05e-01  -3.8 9.60e+04    -  5.04e-01 5.83e-01h  1
  22 -1.2294937e+01 5.53e+01 2.94e-03  -3.8 1.03e+01  -5.4 1.00e+00 1.00e+00h  1
  23 -1.2486000e+01 2.11e+03 3.47e-02  -3.8 1.04e+05    -  5.98e-01 5.53e-01h  1
  24 -1.2499469e+01 1.21e+03 1.42e-02  -3.8 3.65e+04    -  7.33e-01 5.90e-01h  1
  25 -1.2503729e+01 1.88e+01 2.39e-04  -3.8 6.46e+03    -  1.00e+00 1.00e+00h  1
  26 -1.2504801e+01 1.03e+00 4.60e-06  -3.8 7.78e+02    -  1.00e+00 1.00e+00h  1
  27 -1.2505229e+01 8.56e-03 9.85e-06  -3.8 1.11e+03    -  1.00e+00 1.00e+00H  1
  28 -1.2505145e+01 3.20e-05 3.49e-08  -3.8 5.71e+01    -  1.00e+00 1.00e+00H  1
  29 -1.2548502e+01 2.04e+02 1.30e-03  -5.7 5.97e+04    -  3.37e-01 3.23e-01f  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  30 -1.2550590e+01 2.23e+02 1.42e-03  -5.7 7.73e+05    -  1.41e-02 5.55e-03h  1
  31 -1.2552042e+01 9.65e-01 2.56e-04  -5.7 1.44e+01  -5.9 5.67e-01 1.00e+00h  1
  32 -1.2552612e+01 9.68e-01 2.97e-04  -5.7 6.68e+04    -  1.40e-01 3.46e-03h  1
  33 -1.2573342e+01 3.88e+01 4.29e-04  -5.7 5.88e+04    -  2.12e-01 1.49e-01f  1
  34 -1.2584389e+01 4.80e+01 4.44e-04  -5.7 4.34e+04    -  2.18e-01 1.23e-01h  1
  35 -1.2591849e+01 8.81e+01 5.49e-04  -5.7 7.39e+04    -  3.17e-01 9.98e-02h  1
  36 -1.2604297e+01 7.52e+01 4.61e-04  -5.7 1.48e+04    -  3.51e-01 2.70e-01h  1
  37 -1.2607331e+01 6.59e+01 5.56e-04  -5.7 1.72e+03    -  3.36e-01 1.26e-01h  1
  38 -1.2613652e+01 4.54e+01 5.69e-04  -5.7 1.56e+03    -  5.59e-01 3.28e-01h  1
  39 -1.2625245e+01 6.37e+00 9.36e-05  -5.7 8.64e+02    -  1.00e+00 9.83e-01h  1
iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
  40 -1.2624822e+01 6.53e-02 4.15e-07  -5.7 3.20e+02    -  1.00e+00 1.00e+00h  1
  41 -1.2624828e+01 6.53e-05 1.17e-09  -5.7 1.00e+01    -  1.00e+00 1.00e+00h  1
  42 -1.2624828e+01 1.89e-10 1.90e-11  -5.7 1.40e-02    -  1.00e+00 1.00e+00h  1
  43 -1.2625975e+01 7.36e-02 9.08e-07  -8.6 1.84e+02    -  9.54e-01 9.46e-01f  1
  44 -1.2626039e+01 4.59e-04 5.48e-09  -8.6 2.31e+01    -  1.00e+00 1.00e+00h  1
  45 -1.2626040e+01 1.98e-09 6.18e-11  -8.6 5.79e-02    -  1.00e+00 1.00e+00h  1

Number of Iterations....: 45

                                   (scaled)                 (unscaled)
Objective...............:  -1.2626039562353837e+01   -1.2626039562353837e+01
Dual infeasibility......:   6.1759819480755596e-11    6.1759819480755596e-11
Constraint violation....:   1.1176692551792170e-09    1.9790604710578918e-09
Complementarity.........:   2.5059118530201231e-09    2.5059118530201231e-09
Overall NLP error.......:   2.5059118530201231e-09    2.5059118530201231e-09


Number of objective function evaluations             = 54
Number of objective gradient evaluations             = 46
Number of equality constraint evaluations            = 55
Number of inequality constraint evaluations          = 0
Number of equality constraint Jacobian evaluations   = 46
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations             = 45
Total CPU secs in IPOPT (w/o function evaluations)   =      0.905
Total CPU secs in NLP function evaluations           =      0.009

EXIT: Optimal Solution Found.
# Extract and plot the results using our custom function
### BEGIN SOLUTION
dopt_pyomo_doe_results = extract_plot_results(None, TC_Lab_DoE_D.model.scenario_blocks[0])
### END SOLUTION
../_images/34f05752baaa37748e892d4315cb8483d7d827e7c3d2aea101c7a1b8c3e10aa7.png
Model parameters:
Ua = 0.0421 Watts/degC
Ub = 0.0094 Watts/degC
CpH = 6.0274 Joules/degC
CpS = 0.1714 Joules/degC
 
# Compute the FIM at the optimal solution
### BEGIN SOLUTION
results_summary(TC_Lab_DoE_D.results['FIM'])
### END SOLUTION
======Results Summary======
Four design criteria log10() value:
A-optimality: 5.967636028118886
D-optimality: 12.62603956232522
E-optimality: -1.8550827141000377
Modified E-optimality: 7.772789117677075

FIM:
 [[818563.0801634969, -620.1786056149823, -79956.24482342416, -3266.450673590944], [-620.1786056149823, 4866.710384232659, 15971.220200977912, 5229.79120056382], [-79956.24482342416, 15971.220200977912, 99087.96962372029, 18696.801379926546], [-3266.450673590944, 5229.79120056382, 18696.801379926546, 5670.408112132706]]

eigenvalues:
 [8.27382639e+05 9.70342163e+04 3.77129903e+03 1.39610244e-02]

eigenvectors:
 [[-9.93977609e-01  1.07151272e-01 -2.29590047e-02  4.07808937e-05]
 [ 2.91390791e-03  1.76638285e-01  6.96995197e-01 -6.94973468e-01]
 [ 1.09354088e-01  9.57308108e-01 -2.66548727e-01 -2.35509312e-02]
 [ 6.45796596e-03  2.02184836e-01  6.65298697e-01  7.18649588e-01]]

Discussion: How do these results compare to our previous analysis?