Skip to content

Commit df6d901

Browse files
committed
Normalize variables.
1 parent e999ecd commit df6d901

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

wedoco_optimo/model.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,14 @@ def initialize_optimization(self, ipopt_options: dict=None, prescribed_inputs: d
207207
# Let rockit know which symbols that are prescribed inputs and which are controls
208208
for u_name in self.dae.u():
209209
if prescribed_inputs and u_name in prescribed_inputs:
210-
self.ocp.register_parameter(self.dae.var(u_name), grid="control+")
210+
self.ocp.register_parameter(self.dae.var(u_name), grid="control+", scale=self.dae.nominal(u_name))
211211
else:
212212
self.ocp.register_control(self.dae.var(u_name), scale=self.dae.nominal(u_name))
213213

214214
# Let rockit know what the state dynamics are
215-
self.ocp.set_der(self.x, self.f_xu_xyu(x=self.x, u=self.u)["ode"])
215+
derivatives = self.f_xu_xyu(x=self.x, u=self.u)["ode"]
216+
for idx, x_name in enumerate(self.dae.x()):
217+
self.ocp.set_der(self.dae.var(x_name), derivatives[idx], scale=self.dae.nominal(x_name))
216218

217219
def define_optimization(self,
218220
x0: np.array=None,
@@ -234,7 +236,7 @@ def define_optimization(self,
234236

235237
# Set initial state values
236238
for x_name in self.dae.x():
237-
self.ocp.subject_to(self.ocp.at_t0(self.dae.var(x_name)) == x0[x_name])
239+
self.ocp.subject_to(self.ocp.at_t0(self.dae.var(x_name)) == x0[x_name], scale=self.dae.nominal(x_name))
238240

239241
# Set the initial guess based on the initial state values
240242
for x_name in self.dae.x():

0 commit comments

Comments
 (0)