Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 33 additions & 16 deletions tests/shard6/test_controltype_none.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
ConfigureVariables,
StateDynamics,
)
from bioptim.gui.graph import OcpToGraph


class NonControlledMethod(StateDynamics):
Expand Down Expand Up @@ -99,10 +100,10 @@ def dynamics(
controls: MX | SX,
parameters: MX | SX,
algebraic_states: MX | SX,
numerical_timeseries: MX | SX,
nlp: NonLinearProgram,
my_ocp,
) -> DynamicsEvaluation:
t_phase = my_ocp.nlp[-1].tf
t_phase = nlp.tf

return DynamicsEvaluation(
dxdt=self.system_dynamics(a=states[0], b=states[1], c=states[2], t=time, t_phase=t_phase),
Expand Down Expand Up @@ -176,18 +177,7 @@ def prepare_ocp(
-------
The OptimalControlProgram ready to be solved
"""
models = (
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
NonControlledMethod(),
)
models = tuple(NonControlledMethod() for _ in range(n_phase))
n_shooting = [5 for i in range(n_phase)] # Gives m node shooting for my n phases problem
final_time = [0.01 for i in range(n_phase)] # Set the final time for all my n phases

Expand All @@ -212,10 +202,22 @@ def prepare_ocp(

objective_functions = ObjectiveList()
objective_functions.add(
ObjectiveFcn.Mayer.MINIMIZE_STATE, target=5, key="c", node=Node.END, quadratic=True, weight=1, phase=9
ObjectiveFcn.Mayer.MINIMIZE_STATE,
target=5,
key="c",
node=Node.END,
quadratic=True,
weight=1,
phase=n_phase - 1,
)
objective_functions.add(
ObjectiveFcn.Mayer.MINIMIZE_STATE, target=100, key="a", node=Node.END, quadratic=True, weight=0.001, phase=9
ObjectiveFcn.Mayer.MINIMIZE_STATE,
target=100,
key="a",
node=Node.END,
quadratic=True,
weight=0.001,
phase=n_phase - 1,
)

# Sets the bound for all the phases
Expand All @@ -237,6 +239,21 @@ def prepare_ocp(
)


def test_print_control_type_none(capsys):
ocp = prepare_ocp(
n_phase=1,
time_min=[0.01],
time_max=[0.1],
use_sx=False,
)

ocp.print(to_console=True, to_graph=False)
graph = OcpToGraph(ocp)._prepare_print()

assert "CONTROLS" in capsys.readouterr().out
assert "cluster_0" in graph.source


@pytest.mark.parametrize("phase_dynamics", [PhaseDynamics.ONE_PER_NODE])
@pytest.mark.parametrize("use_sx", [False, True])
def test_main_control_type_none(use_sx, phase_dynamics):
Expand Down
Loading