Skip to content

Commit d178015

Browse files
committed
OCP: towards first functional API
1 parent 4645ff6 commit d178015

2 files changed

Lines changed: 24 additions & 17 deletions

File tree

open-codegen/opengen/ocp/solution.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,17 @@ def __init__(self, raw, inputs, states):
1010
self.exit_status = getattr(raw, "exit_status", None)
1111
self.solve_time_ms = getattr(raw, "solve_time_ms", None)
1212
self.lagrange_multipliers = getattr(raw, "lagrange_multipliers", None)
13+
14+
def __repr__(self):
15+
return "\n".join([
16+
"OCP Solution:",
17+
f" Exit status.......... {self.exit_status}",
18+
f" Cost................. {self.cost}",
19+
f" Solve time [ms]...... {self.solve_time_ms}",
20+
f" Decision variables... {self.solution}",
21+
f" Inputs............... {self.inputs}",
22+
f" States............... {self.states}",
23+
f" Lagrange multipliers. {self.lagrange_multipliers}",
24+
])
25+
26+
__str__ = __repr__

open-codegen/test/test_ocp.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ def test_ocp_generates_rust_solver_and_calls_tcp_interface(self):
160160
.with_initial_tolerance(1e-5) \
161161
.with_delta_tolerance(1e-5) \
162162
.with_initial_penalty(10.0) \
163-
.with_penalty_weight_update_factor(5.0) \
164-
.with_max_inner_iterations(50) \
163+
.with_penalty_weight_update_factor(1.2) \
164+
.with_max_inner_iterations(500) \
165165
.with_max_outer_iterations(10)
166166

167167
builder = og.ocp.OCPBuilder(
@@ -170,24 +170,17 @@ def test_ocp_generates_rust_solver_and_calls_tcp_interface(self):
170170
build_configuration=build_config,
171171
solver_configuration=solver_config,
172172
)
173-
builder.build()
174-
175-
mng = og.tcp.OptimizerTcpManager(
176-
optimizer_path=os.path.join(OcpTestCase.TEST_DIR, optimizer_name)
177-
)
178-
mng.start()
173+
optimizer = builder.build()
179174

180175
try:
181-
pong = mng.ping()
182-
self.assertEqual(1, pong["Pong"])
183-
184-
response = mng.call(p=[1.0, 0.0])
185-
self.assertTrue(response.is_ok())
186-
status = response.get()
187-
self.assertEqual("Converged", status.exit_status)
188-
self.assertEqual(2, len(status.solution))
176+
result = optimizer.solve(x0=[1.0], xref=[0.0])
177+
print(result)
178+
self.assertEqual("Converged", result.exit_status)
179+
self.assertEqual(2, len(result.solution))
180+
self.assertEqual(2, len(result.inputs))
181+
self.assertEqual(3, len(result.states))
189182
finally:
190-
mng.kill()
183+
optimizer.kill()
191184

192185

193186
if __name__ == "__main__":

0 commit comments

Comments
 (0)