def test_for_complete_logging(weather, config): # No weather sim = OffshoreSubstationInstallation(config, weather=weather) sim.run() df = pd.DataFrame(sim.env.actions) df = df.assign(shift=(df["time"] - df["time"].shift(1))) for vessel in df["agent"].unique(): _df = df[df["agent"] == vessel].copy() _df = _df.assign(shift=(_df["time"] - _df["time"].shift(1))) assert (_df["shift"] - _df["duration"]).fillna(0.0).abs().max() < 1e-9 assert ~df["cost"].isnull().any() _ = sim.agent_efficiencies _ = sim.detailed_output
def test_simulation_setup(config): sim = OffshoreSubstationInstallation(config) assert sim.config == config assert sim.env assert sim.port assert sim.port.crane.capacity == config["port"]["num_cranes"] assert sim.num_substations == sim.config["num_substations"] assert len(sim.port.items) == 2 * sim.num_substations
def test_vessel_initialization(config): sim = OffshoreSubstationInstallation(config) assert sim.oss_vessel assert sim.oss_vessel.jacksys assert sim.oss_vessel.crane for feeder in sim.feeders: assert feeder.jacksys assert feeder.storage
def test_kwargs(): sim = OffshoreSubstationInstallation(config_single) sim.run() baseline = sim.total_phase_time keywords = [ "mono_embed_len", "mono_drive_rate", "mono_fasten_time", "mono_release_time", "tp_bolt_time", "site_position_time", "crane_reequip_time", "rov_survey_time", "topside_fasten_time", "topside_release_time", ] failed = [] for kw in keywords: default = pt[kw] if kw == "mono_drive_rate": _new = default - 2 if _new <= 0: raise Exception(f"'{kw}' is less than 0.") kwargs = {kw: _new} else: kwargs = {kw: default + 2} new_sim = OffshoreSubstationInstallation(config_single, **kwargs) new_sim.run() new_time = new_sim.total_phase_time if new_time > baseline: pass else: failed.append(kw) if failed: raise Exception(f"'{failed}' not affecting results.") else: assert True
def test_vessel_initialization(config): sim = OffshoreSubstationInstallation(config) assert sim.oss_vessel assert sim.oss_vessel.crane js = sim.oss_vessel._jacksys_specs dp = sim.oss_vessel._dp_specs if not any([js, dp]): assert False for feeder in sim.feeders: assert feeder.storage