{
  "parameters": {
    "mass": 50.0,
    "inertia": 20.0,
    "lever": 0.4,
    "thrust_limit": 25.0,
    "longitudinal_drag": 8.0,
    "lateral_drag": 30.0,
    "angular_drag": 10.0,
    "length": 2.0,
    "width": 0.8,
    "dt": 0.1,
    "steps": 200,
    "berth_x": 0.0,
    "berth_y": 1.0,
    "quay_buffer": 0.2,
    "penalty_smoothing": 0.08
  },
  "provenance": {
    "sha256": {
      "code/trajectory_optimization.py": "f215a6163457e6889064716e9acee7bf6991575c191af0e5b1327103e2c85eae",
      "code/boat_docking.py": "e3934be4767bfa39da443052e2e6a108027ea51d8f4098ef0fe407c3c752f17c",
      "scripts/build_boat_docking_artifacts.py": "f02441232b1876de1c8f14f11fba30bb8f285ac857c0a48f643dde3fe279743d"
    },
    "solver_options": {
      "max_iterations": 120,
      "gradient_tolerance": 1e-05,
      "initial_regularization": 0.0001,
      "minimum_regularization": 1e-09,
      "maximum_regularization": 1000000000000.0,
      "line_search_steps": 12
    }
  },
  "runs": [
    {
      "position_error_m": 0.00012472824663819032,
      "heading_error_deg": 8.97919388472883e-05,
      "terminal_speed_mps": 6.891736384518722e-05,
      "terminal_yaw_rate_degps": 9.23705239932482e-05,
      "minimum_clearance_m": 0.5985312431498162,
      "thrust_violation_N": 0.0,
      "fine_replay_max_position_difference_m": 3.4551087749262364e-08,
      "fine_dt": 0.025,
      "docking_pass": true,
      "scenario": "angled",
      "method": "ilqr",
      "status": "converged",
      "initial_cost": 17401.772637699167,
      "cost": 8.051451583673463,
      "accepted_iterations": 18,
      "projected_gradient": 1.3651374224377122e-06,
      "forward_evaluations": 29,
      "backward_attempts": 26,
      "solver_seconds_excluding_compilation": 0.420827167108655
    },
    {
      "position_error_m": 0.0012477788935415146,
      "heading_error_deg": 0.1392006521749826,
      "terminal_speed_mps": 0.014375816574015413,
      "terminal_yaw_rate_degps": 0.039939739287673574,
      "minimum_clearance_m": 0.3517607104282381,
      "thrust_violation_N": 0.0,
      "fine_replay_max_position_difference_m": 4.3816387290697076e-07,
      "fine_dt": 0.025,
      "docking_pass": true,
      "scenario": "angled",
      "method": "ddp",
      "status": "converged",
      "initial_cost": 17401.772637699167,
      "cost": 11.987919996345846,
      "accepted_iterations": 34,
      "projected_gradient": 3.7957315723868845e-07,
      "forward_evaluations": 46,
      "backward_attempts": 50,
      "solver_seconds_excluding_compilation": 0.741011125035584
    },
    {
      "position_error_m": 3.88861210687639e-05,
      "heading_error_deg": 2.6525626047852856e-06,
      "terminal_speed_mps": 4.2482742858374116e-05,
      "terminal_yaw_rate_degps": 4.717577666272784e-06,
      "minimum_clearance_m": 0.6000388245849323,
      "thrust_violation_N": 0.0,
      "fine_replay_max_position_difference_m": 2.2121084148380596e-07,
      "fine_dt": 0.025,
      "docking_pass": true,
      "scenario": "drifting",
      "method": "ilqr",
      "status": "converged",
      "initial_cost": 12761.700281982394,
      "cost": 7.667399005754184,
      "accepted_iterations": 13,
      "projected_gradient": 3.832332486686241e-06,
      "forward_evaluations": 20,
      "backward_attempts": 13,
      "solver_seconds_excluding_compilation": 0.2273222920484841
    },
    {
      "position_error_m": 3.887700576332985e-05,
      "heading_error_deg": 3.7121293836003206e-06,
      "terminal_speed_mps": 4.2479909244630756e-05,
      "terminal_yaw_rate_degps": 4.174994010295861e-06,
      "minimum_clearance_m": 0.6000387973248186,
      "thrust_violation_N": 0.0,
      "fine_replay_max_position_difference_m": 2.2121076807165387e-07,
      "fine_dt": 0.025,
      "docking_pass": true,
      "scenario": "drifting",
      "method": "ddp",
      "status": "converged",
      "initial_cost": 12761.700281982394,
      "cost": 7.667399005759656,
      "accepted_iterations": 45,
      "projected_gradient": 4.601315394925365e-06,
      "forward_evaluations": 58,
      "backward_attempts": 67,
      "solver_seconds_excluding_compilation": 0.7430852502584457
    }
  ]
}
