Skip to content

Commit 5f915fb

Browse files
committed
Updated driver.rst
1 parent 0a5e74b commit 5f915fb

File tree

1 file changed

+17
-64
lines changed
  • doc/OnlineDocs/explanation/analysis/parmest

1 file changed

+17
-64
lines changed

doc/OnlineDocs/explanation/analysis/parmest/driver.rst

Lines changed: 17 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -67,77 +67,30 @@ Section.
6767
columns=['hour', 'y'],
6868
)
6969

70-
# Create the Rooney-Biegler model
71-
def rooney_biegler_model():
72-
"""
73-
Formulates the Pyomo model of the Rooney-Biegler example
74-
75-
Returns:
76-
m: Pyomo model
77-
"""
78-
m = pyo.ConcreteModel()
79-
80-
m.asymptote = pyo.Var(within=pyo.NonNegativeReals, initialize=10)
81-
m.rate_constant = pyo.Var(within=pyo.NonNegativeReals, initialize=0.2)
82-
83-
m.hour = pyo.Var(within=pyo.PositiveReals, initialize=0.1)
84-
m.y = pyo.Var(within=pyo.NonNegativeReals)
85-
86-
@m.Constraint()
87-
def response_rule(m):
88-
return m.y == m.asymptote * (1 - pyo.exp(-m.rate_constant * m.hour))
89-
90-
return m
91-
92-
# Create the Experiment class
93-
from pyomo.contrib.parmest.experiment import Experiment
94-
class RooneyBieglerExperiment(Experiment):
95-
def __init__(self, hour, y):
96-
self.y = y
97-
self.hour = hour
98-
self.model = None
99-
100-
def get_labeled_model(self):
101-
self.create_model()
102-
self.finalize_model()
103-
self.label_model()
104-
105-
return self.model
106-
107-
def create_model(self):
108-
m = self.model = rooney_biegler_model()
109-
110-
return m
111-
112-
def finalize_model(self):
113-
m = self.model
114-
115-
# fix the input variable
116-
m.hour.fix(self.hour)
117-
118-
return m
70+
# Create an experiment list
71+
from pyomo.contrib.parmest.examples.rooney_biegler.rooney_biegler import RooneyBieglerExperiment
11972

120-
def label_model(self):
121-
m = self.model
73+
class NewRooneyBieglerExperiment(RooneyBieglerExperiment):
74+
def label_model(self):
75+
m = self.model
12276

123-
# add experiment outputs
124-
m.experiment_outputs = pyo.Suffix(direction=pyo.Suffix.LOCAL)
125-
m.experiment_outputs.update([(m.y, self.y)])
77+
# create the experiment outputs
78+
m.experiment_outputs = pyo.Suffix(direction=pyo.Suffix.LOCAL)
79+
m.experiment_outputs.update(
80+
[(m.response_function[self.data['hour']], self.data['y'])]
81+
)
12682

127-
# add unknown parameters
128-
m.unknown_parameters = pyo.Suffix(direction=pyo.Suffix.LOCAL)
129-
m.unknown_parameters.update(
130-
(k, pyo.value(k)) for k in [m.asymptote, m.rate_constant]
131-
)
83+
# create the unknown parameters
84+
m.unknown_parameters = pyo.Suffix(direction=pyo.Suffix.LOCAL)
85+
m.unknown_parameters.update((k, pyo.value(k)) for k in [m.asymptote, m.rate_constant])
13286

133-
# create the measurement error
134-
m.measurement_error = pyo.Suffix(direction = pyo.Suffix.LOCAL)
135-
m.measurement_error.update([(m.y, None)])
87+
# create the measurement error
88+
m.measurement_error = pyo.Suffix(direction = pyo.Suffix.LOCAL)
89+
m.measurement_error.update([(m.response_function[self.data['hour']], None)])
13690

137-
# Create an experiment list
13891
exp_list = []
13992
for i in range(data.shape[0]):
140-
exp_list.append(RooneyBieglerExperiment(data["hour"][i], data["y"][i]))
93+
exp_list.append(NewRooneyBieglerExperiment(data.loc[i, :]))
14194

14295
.. doctest::
14396
:skipif: not __import__('pyomo.contrib.parmest.parmest').contrib.parmest.parmest.parmest_available

0 commit comments

Comments
 (0)