@@ -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