diff --git a/docs/source/release_notes.rst b/docs/source/release_notes.rst index 1f9861c4..e1033052 100644 --- a/docs/source/release_notes.rst +++ b/docs/source/release_notes.rst @@ -10,6 +10,7 @@ Development - |version| * Add example script for shielded training with action replacement and action masking in `Shielded training with action masking and action replacement `_. * Add ``bsk`` as a dependency in ``pyproject.toml``. * Update the CI/CD workflows to build BSK-RL using the new ``bsk`` dependency. +* Optimize performance of AEOS environments, especially for high request counts. Version 1.2.0 diff --git a/examples/cloud_environment.ipynb b/examples/cloud_environment.ipynb index 2a21f408..a1595dc6 100644 --- a/examples/cloud_environment.ipynb +++ b/examples/cloud_environment.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -54,7 +54,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -176,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -213,7 +213,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -237,7 +237,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -254,11 +254,11 @@ "\n", " def __init__(\n", " self,\n", - " imaged: Optional[list[\"Target\"]] = None,\n", + " imaged: Optional[set[\"Target\"]] = None,\n", " duplicates: int = 0,\n", - " known: Optional[list[\"Target\"]] = None,\n", - " cloud_covered: Optional[list[\"Target\"]] = None,\n", - " cloud_free: Optional[list[\"Target\"]] = None,\n", + " known: Optional[set[\"Target\"]] = None,\n", + " cloud_covered: Optional[set[\"Target\"]] = None,\n", + " cloud_free: Optional[set[\"Target\"]] = None,\n", " ) -> None:\n", " \"\"\"Construct unit of data to record unique images.\n", "\n", @@ -267,19 +267,19 @@ " ``known`` targets in the environment.\n", "\n", " Args:\n", - " imaged: List of targets that are known to be imaged.\n", + " imaged: Set of targets that are known to be imaged.\n", " duplicates: Count of target imaging duplication.\n", - " known: List of targets that are known to exist (imaged and unimaged).\n", - " cloud_covered: List of imaged targets that are known to be cloud covered.\n", - " cloud_free: List of imaged targets that are known to be cloud free.\n", + " known: Set of targets that are known to exist (imaged and unimaged).\n", + " cloud_covered: Set of imaged targets that are known to be cloud covered.\n", + " cloud_free: Set of imaged targets that are known to be cloud free.\n", " \"\"\"\n", " super().__init__(imaged=imaged, duplicates=duplicates, known=known)\n", " if cloud_covered is None:\n", - " cloud_covered = []\n", + " cloud_covered = set()\n", " if cloud_free is None:\n", - " cloud_free = []\n", - " self.cloud_covered = list(set(cloud_covered))\n", - " self.cloud_free = list(set(cloud_free))\n", + " cloud_free = set()\n", + " self.cloud_covered = set(cloud_covered)\n", + " self.cloud_free = set(cloud_free)\n", "\n", " def __add__(self, other: \"CloudImagePercentData\") -> \"CloudImagePercentData\":\n", " \"\"\"Combine two units of data.\n", @@ -291,7 +291,7 @@ " Combined unit of data.\n", " \"\"\"\n", "\n", - " imaged = list(set(self.imaged + other.imaged))\n", + " imaged = self.imaged | other.imaged\n", " duplicates = (\n", " self.duplicates\n", " + other.duplicates\n", @@ -299,9 +299,10 @@ " + len(other.imaged)\n", " - len(imaged)\n", " )\n", - " known = list(set(self.known + other.known))\n", - " cloud_covered = list(set(self.cloud_covered + other.cloud_covered))\n", - " cloud_free = list(set(self.cloud_free + other.cloud_free))\n", + " known = self.known | other.known\n", + "\n", + " cloud_covered = self.cloud_covered | other.cloud_covered\n", + " cloud_free = self.cloud_free | other.cloud_free\n", "\n", " return self.__class__(\n", " imaged=imaged,\n", @@ -329,34 +330,32 @@ " Returns:\n", " list: Targets imaged at new_state that were unimaged at old_state\n", " \"\"\"\n", - " update_idx = np.where(new_state - old_state > 0)[0]\n", - " imaged = []\n", - " for idx in update_idx:\n", - " message = self.satellite.dynamics.storageUnit.storageUnitDataOutMsg\n", - " target_id = message.read().storedDataName[int(idx)]\n", - " imaged.append(\n", - " [target for target in self.data.known if target.id == target_id][0]\n", - " )\n", - "\n", - " cloud_covered = []\n", - " cloud_free = []\n", - " cloud_threshold = 0.7\n", - " for target in imaged:\n", - " cloud_coverage = target.true_cloud_cover\n", + " data_increase = new_state - old_state\n", + " if data_increase <= 0:\n", + " return CloudImagePercentData()\n", + " else:\n", + " assert self.satellite.latest_target is not None\n", + " self.update_target_colors([self.satellite.latest_target])\n", + "\n", + " cloud_coverage = self.satellite.latest_target.true_cloud_cover\n", + " cloud_threshold = 0.7\n", " if cloud_coverage > cloud_threshold:\n", - " cloud_covered.append(target)\n", + " cloud_covered = [self.satellite.latest_target]\n", + " cloud_free = []\n", " else:\n", - " cloud_free.append(target)\n", - "\n", - " return CloudImagePercentData(\n", - " imaged=imaged, cloud_covered=cloud_covered, cloud_free=cloud_free\n", - " )\n", + " cloud_covered = []\n", + " cloud_free = [self.satellite.latest_target]\n", + " return CloudImagePercentData(\n", + " imaged={self.satellite.latest_target},\n", + " cloud_covered=cloud_covered,\n", + " cloud_free=cloud_free,\n", + " )\n", "\n", "\n", "class CloudImagingPercentRewarder(UniqueImageReward):\n", " \"\"\"DataManager for rewarding unique images.\"\"\"\n", "\n", - " datastore_type = CloudImagePercentDataStore\n", + " data_store_type = CloudImagePercentDataStore\n", "\n", " def calculate_reward(\n", " self, new_data_dict: dict[str, CloudImagePercentData]\n", @@ -370,21 +369,22 @@ " reward: Cumulative reward across satellites for one step\n", " \"\"\"\n", " reward = {}\n", - " imaged_targets = sum(\n", - " [new_data.cloud_free for new_data in new_data_dict.values()], []\n", - " )\n", + " imaged_counts = {}\n", + " for new_data in new_data_dict.values():\n", + " for target in new_data.imaged:\n", + " if target not in imaged_counts:\n", + " imaged_counts[target] = 0\n", + " imaged_counts[target] += 1\n", "\n", " for sat_id, new_data in new_data_dict.items():\n", " reward[sat_id] = 0.0\n", " for target in new_data.cloud_free:\n", - " reward[sat_id] += self.reward_fn(\n", - " target.priority,\n", - " target.true_cloud_cover,\n", - " imaged_targets.count(target),\n", - " )\n", - "\n", - " for new_data in new_data_dict.values():\n", - " self.data += new_data\n", + " if target not in self.data.imaged:\n", + " reward[sat_id] += self.reward_fn(\n", + " target.priority,\n", + " target.true_cloud_cover,\n", + " imaged_counts[target],\n", + " )\n", " return reward\n", "\n", "\n", @@ -411,23 +411,9 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[90;3m2024-07-19 09:54:42,675 \u001b[0m\u001b[m \u001b[0m\u001b[93mWARNING \u001b[0m\u001b[93mCreating logger for new env on PID=46719. Old environments in process may now log times incorrectly.\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:42,677 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[mCalling env.reset() to get observation space\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:42,678 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[mResetting environment with seed=2966020952\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:42,681 \u001b[0m\u001b[mscene.targets \u001b[0m\u001b[mINFO \u001b[0m\u001b[mGenerating 9075 targets\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:43,147 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mFinding opportunity windows from 0.00 to 17100.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:44,142 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:44,143 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[mEnvironment reset\u001b[0m\n" - ] - } - ], + "outputs": [], "source": [ "env = gym.make(\n", " \"GeneralSatelliteTasking-v1\",\n", @@ -455,21 +441,9 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[90;3m2024-07-19 09:54:44,687 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[mResetting environment with seed=1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:44,689 \u001b[0m\u001b[mscene.targets \u001b[0m\u001b[mINFO \u001b[0m\u001b[mGenerating 3895 targets\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:45,044 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mFinding opportunity windows from 0.00 to 17100.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:45,468 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:45,468 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[mEnvironment reset\u001b[0m\n" - ] - } - ], + "outputs": [], "source": [ "observation, info = env.reset(seed=1)" ] @@ -483,24 +457,9 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Actions: ['action_charge', 'action_image_0', 'action_image_1', 'action_image_2', 'action_image_3', 'action_image_4', 'action_image_5', 'action_image_6', 'action_image_7', 'action_image_8', 'action_image_9', 'action_image_10', 'action_image_11', 'action_image_12', 'action_image_13', 'action_image_14', 'action_image_15', 'action_image_16', 'action_image_17', 'action_image_18', 'action_image_19', 'action_image_20', 'action_image_21', 'action_image_22', 'action_image_23', 'action_image_24', 'action_image_25', 'action_image_26', 'action_image_27', 'action_image_28', 'action_image_29', 'action_image_30', 'action_image_31']\n", - "States: ['sat_props.omega_BP_P_normd[0]', 'sat_props.omega_BP_P_normd[1]', 'sat_props.omega_BP_P_normd[2]', 'sat_props.c_hat_P[0]', 'sat_props.c_hat_P[1]', 'sat_props.c_hat_P[2]', 'sat_props.r_BN_P_normd[0]', 'sat_props.r_BN_P_normd[1]', 'sat_props.r_BN_P_normd[2]', 'sat_props.v_BN_P_normd[0]', 'sat_props.v_BN_P_normd[1]', 'sat_props.v_BN_P_normd[2]', 'sat_props.battery_charge_fraction', 'sat_props.solar_angle_norm', 'ground_station.ground_station_0.opportunity_open_normd', 'ground_station.ground_station_0.opportunity_close_normd', 'eclipse[0]', 'eclipse[1]', 'target.target_0.priority', 'target.target_0.prop_1', 'target.target_0.prop_2', 'target.target_1.priority', 'target.target_1.prop_1', 'target.target_1.prop_2', 'target.target_2.priority', 'target.target_2.prop_1', 'target.target_2.prop_2', 'target.target_3.priority', 'target.target_3.prop_1', 'target.target_3.prop_2', 'target.target_4.priority', 'target.target_4.prop_1', 'target.target_4.prop_2', 'target.target_5.priority', 'target.target_5.prop_1', 'target.target_5.prop_2', 'target.target_6.priority', 'target.target_6.prop_1', 'target.target_6.prop_2', 'target.target_7.priority', 'target.target_7.prop_1', 'target.target_7.prop_2', 'target.target_8.priority', 'target.target_8.prop_1', 'target.target_8.prop_2', 'target.target_9.priority', 'target.target_9.prop_1', 'target.target_9.prop_2', 'target.target_10.priority', 'target.target_10.prop_1', 'target.target_10.prop_2', 'target.target_11.priority', 'target.target_11.prop_1', 'target.target_11.prop_2', 'target.target_12.priority', 'target.target_12.prop_1', 'target.target_12.prop_2', 'target.target_13.priority', 'target.target_13.prop_1', 'target.target_13.prop_2', 'target.target_14.priority', 'target.target_14.prop_1', 'target.target_14.prop_2', 'target.target_15.priority', 'target.target_15.prop_1', 'target.target_15.prop_2', 'target.target_16.priority', 'target.target_16.prop_1', 'target.target_16.prop_2', 'target.target_17.priority', 'target.target_17.prop_1', 'target.target_17.prop_2', 'target.target_18.priority', 'target.target_18.prop_1', 'target.target_18.prop_2', 'target.target_19.priority', 'target.target_19.prop_1', 'target.target_19.prop_2', 'target.target_20.priority', 'target.target_20.prop_1', 'target.target_20.prop_2', 'target.target_21.priority', 'target.target_21.prop_1', 'target.target_21.prop_2', 'target.target_22.priority', 'target.target_22.prop_1', 'target.target_22.prop_2', 'target.target_23.priority', 'target.target_23.prop_1', 'target.target_23.prop_2', 'target.target_24.priority', 'target.target_24.prop_1', 'target.target_24.prop_2', 'target.target_25.priority', 'target.target_25.prop_1', 'target.target_25.prop_2', 'target.target_26.priority', 'target.target_26.prop_1', 'target.target_26.prop_2', 'target.target_27.priority', 'target.target_27.prop_1', 'target.target_27.prop_2', 'target.target_28.priority', 'target.target_28.prop_1', 'target.target_28.prop_2', 'target.target_29.priority', 'target.target_29.prop_1', 'target.target_29.prop_2', 'target.target_30.priority', 'target.target_30.prop_1', 'target.target_30.prop_2', 'target.target_31.priority', 'target.target_31.prop_1', 'target.target_31.prop_2', 'time'] \n", - "\n", - "sat_props: {'omega_BP_P_normd': array([-0.00024411, -0.00134208, -0.00198803]), 'c_hat_P': array([-0.89544206, -0.168058 , -0.41223784]), 'r_BN_P_normd': array([-0.10657487, 0.75926752, 0.75675204]), 'v_BN_P_normd': array([-0.92573069, -0.21286484, 0.08319995]), 'battery_charge_fraction': 0.41362955348761493, 'solar_angle_norm': 0.36095740527133613}\n", - "ground_station: {'ground_station_0': {'opportunity_open_normd': 0.5239724373284539, 'opportunity_close_normd': 0.5789268531870276}}\n", - "eclipse: [780.0, 2610.0]\n", - "target: {'target_0': {'priority': 0.35799287916193745, 'prop_1': 0.18732617744449528, 'prop_2': 0.015441775700651368}, 'target_1': {'priority': 0.7956708188805034, 'prop_1': 0.690268078705084, 'prop_2': 0.029740842575974626}, 'target_2': {'priority': 0.47724764256917596, 'prop_1': 0.8213303453744604, 'prop_2': 0.01804408674589266}, 'target_3': {'priority': 0.4338736557976496, 'prop_1': 0.8563272608725011, 'prop_2': 0.047588146360893355}, 'target_4': {'priority': 0.9814543556395275, 'prop_1': 0.8631604140362873, 'prop_2': 0.011674378986940712}, 'target_5': {'priority': 0.7942650253959778, 'prop_1': 0.01015316385183474, 'prop_2': 0.03921899469565209}, 'target_6': {'priority': 0.49338342577868843, 'prop_1': 0.8511665835560023, 'prop_2': 0.046014925256409135}, 'target_7': {'priority': 0.27089996509965464, 'prop_1': 0.38154306003579114, 'prop_2': 0.04767648650306338}, 'target_8': {'priority': 0.2826304755357292, 'prop_1': 0.3489789891331716, 'prop_2': 0.026808599843887053}, 'target_9': {'priority': 0.12389400404867856, 'prop_1': 1.0, 'prop_2': 0.02788337603137992}, 'target_10': {'priority': 0.9932910043253891, 'prop_1': 0.6950141206369852, 'prop_2': 0.049018265786707635}, 'target_11': {'priority': 0.7564906195577824, 'prop_1': 0.9983459163643871, 'prop_2': 0.04569404032267256}, 'target_12': {'priority': 0.7444452092201004, 'prop_1': 0.9681290502720129, 'prop_2': 0.027314330058718944}, 'target_13': {'priority': 0.2636882604601113, 'prop_1': 0.870778715256736, 'prop_2': 0.04416045334992624}, 'target_14': {'priority': 0.248310541142008, 'prop_1': 0.7698113181871278, 'prop_2': 0.045298061442644935}, 'target_15': {'priority': 0.6806511540818309, 'prop_1': 0.9623552940750132, 'prop_2': 0.027072300714261234}, 'target_16': {'priority': 0.929280452382046, 'prop_1': 0.9828462633169273, 'prop_2': 0.04660416590043983}, 'target_17': {'priority': 0.7752981170184967, 'prop_1': 0.0, 'prop_2': 0.04314367313238974}, 'target_18': {'priority': 0.0926971311914182, 'prop_1': 0.10028332438249099, 'prop_2': 0.014675933906358952}, 'target_19': {'priority': 0.6004457980912233, 'prop_1': 0.9753239499132759, 'prop_2': 0.016639140523782653}, 'target_20': {'priority': 0.45305636745872835, 'prop_1': 0.4415736864728513, 'prop_2': 0.014438106667803253}, 'target_21': {'priority': 0.4104504187098065, 'prop_1': 0.42176142091320595, 'prop_2': 0.03738850657711221}, 'target_22': {'priority': 0.2817738215183342, 'prop_1': 0.5667693622116196, 'prop_2': 0.03294545339082754}, 'target_23': {'priority': 0.9681156338062515, 'prop_1': 0.6103254893756423, 'prop_2': 0.015276096739788967}, 'target_24': {'priority': 0.348206804810428, 'prop_1': 0.9792299073625499, 'prop_2': 0.03555376418462278}, 'target_25': {'priority': 0.8514993239532047, 'prop_1': 0.41851541977900913, 'prop_2': 0.030686176325074865}, 'target_26': {'priority': 0.39612121845119197, 'prop_1': 0.7450528103733399, 'prop_2': 0.03526315180335297}, 'target_27': {'priority': 0.1554068368603777, 'prop_1': 0.1837038919814267, 'prop_2': 0.016663514938739393}, 'target_28': {'priority': 0.8240398029706025, 'prop_1': 0.15539991723335303, 'prop_2': 0.047887479978929316}, 'target_29': {'priority': 0.9047200828734902, 'prop_1': 0.8111759624117715, 'prop_2': 0.010756586279688403}, 'target_30': {'priority': 0.6697085145240956, 'prop_1': 0.6700598695572187, 'prop_2': 0.01970058172066188}, 'target_31': {'priority': 0.2652927373869285, 'prop_1': 0.05396448514325962, 'prop_2': 0.010514918684288953}}\n", - "time: 0.0\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Actions:\", satellites[0].action_description)\n", "print(\"States:\", env.unwrapped.satellites[0].observation_description, \"\\n\")\n", @@ -520,420 +479,9 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\u001b[90;3m2024-07-19 09:54:47,608 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,614 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[maction_charge tasked for 60.0 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,614 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 60.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,627 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<0.00> \u001b[0m\u001b[mRunning simulation at most to 300.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,656 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 60.0 for action_charge\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,661 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,664 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,664 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,666 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,666 \u001b[0m\u001b[mgym \u001b[0m\u001b[93mWARNING \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[93mSatellite EO requires retasking but received no task.\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,667 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<60.00> \u001b[0m\u001b[mRunning simulation at most to 360.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,771 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,773 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,773 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,774 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,774 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 0 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,775 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1188) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,778 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1188) window enabled: 326.0 to 375.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,778 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 375.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,779 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<360.00> \u001b[0m\u001b[mRunning simulation at most to 660.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,785 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 375.3 for Target(tgt-1188) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,788 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,790 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,790 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,791 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,791 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 1 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,791 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3852) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,795 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3852) window enabled: 334.4 to 393.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,795 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 393.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,795 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<375.50> \u001b[0m\u001b[mRunning simulation at most to 675.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,804 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 393.9 for Target(tgt-3852) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,806 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,808 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,808 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,809 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,809 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 16 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,810 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-64) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,813 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-64) window enabled: 641.0 to 707.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,813 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 707.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,814 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<394.00> \u001b[0m\u001b[mRunning simulation at most to 694.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,915 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-64)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,918 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[mData reward: {'EO': 0.3754721142626522}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,920 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,921 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[mStep reward: 0.3754721142626522\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,921 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,922 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 23 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,922 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3463) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,925 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3463) window enabled: 1316.0 to 1427.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,925 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 1427.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:47,926 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<642.50> \u001b[0m\u001b[mRunning simulation at most to 942.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,027 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,029 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,030 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,030 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 7 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,030 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3502) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,033 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3502) window enabled: 1121.6 to 1253.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,034 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 1253.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,034 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<942.50> \u001b[0m\u001b[mRunning simulation at most to 1242.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,090 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-3502)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,093 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,095 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,095 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,096 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,096 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 8 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,096 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-601) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,100 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-601) window enabled: 1259.0 to 1387.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,100 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 1387.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,100 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1123.00> \u001b[0m\u001b[mRunning simulation at most to 1423.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,141 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-601)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,144 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,146 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,146 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,147 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,148 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 28 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,148 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1375) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,151 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1375) window enabled: 1937.0 to 2049.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,151 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2049.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,152 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1260.50> \u001b[0m\u001b[mRunning simulation at most to 1560.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,362 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,364 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,365 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,365 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 30 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,365 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1612) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,368 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1612) window enabled: 2331.2 to 2450.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,369 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2450.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,369 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1560.50> \u001b[0m\u001b[mRunning simulation at most to 1860.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,465 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,467 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,468 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,468 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 3 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,468 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-180) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,472 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-180) window enabled: 1914.6 to 1964.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,472 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 1964.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,473 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1860.50> \u001b[0m\u001b[mRunning simulation at most to 2160.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,508 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-180)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,511 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[mData reward: {'EO': 0.0620457304795331}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,513 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,513 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[mStep reward: 0.0620457304795331\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,514 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,514 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 20 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,515 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3401) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,518 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3401) window enabled: 2326.6 to 2447.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,518 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2447.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,519 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<1916.00> \u001b[0m\u001b[mRunning simulation at most to 2216.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,616 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,618 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,619 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,619 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 20 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,620 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3186) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,623 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3186) window enabled: 2687.4 to 2733.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,623 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2733.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,624 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2216.00> \u001b[0m\u001b[mRunning simulation at most to 2516.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,721 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,723 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,724 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,725 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 1 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,725 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-791) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,728 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-791) window enabled: 2436.2 to 2561.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,729 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2561.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,729 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2516.00> \u001b[0m\u001b[mRunning simulation at most to 2816.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,747 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 2561.6 for Target(tgt-791) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,750 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,752 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,752 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,753 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,753 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 4 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,753 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2792) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,757 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2792) window enabled: 2532.4 to 2658.5\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,757 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2658.5\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,758 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2562.00> \u001b[0m\u001b[mRunning simulation at most to 2862.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,776 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-2792)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,780 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,781 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,782 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,783 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,783 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 28 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,783 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1293) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,787 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1293) window enabled: 3271.6 to 3327.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,787 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 3327.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,788 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2606.50> \u001b[0m\u001b[mRunning simulation at most to 2906.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,895 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,897 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,898 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,898 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 0 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,899 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3342) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,902 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3342) window enabled: 2842.5 to 2923.2\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,903 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 2923.2\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,903 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2906.50> \u001b[0m\u001b[mRunning simulation at most to 3206.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,910 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 2923.2 for Target(tgt-3342) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,913 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,914 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,915 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,915 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,916 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 8 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,916 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2542) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,919 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2542) window enabled: 3062.6 to 3175.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,919 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 3175.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,920 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<2923.50> \u001b[0m\u001b[mRunning simulation at most to 3223.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,968 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-2542)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,971 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[mData reward: {'EO': 0.17047349108051557}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,973 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,974 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[mStep reward: 0.17047349108051557\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,974 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,975 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 16 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,975 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3368) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,978 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3368) window enabled: 3281.9 to 3394.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,979 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 3394.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:48,979 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3064.00> \u001b[0m\u001b[mRunning simulation at most to 3364.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,049 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-3368)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,052 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[mData reward: {'EO': 0.5480829099495642}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,054 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,054 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[mStep reward: 0.5480829099495642\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,055 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,055 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 1 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,056 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3190) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,059 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3190) window enabled: 3204.3 to 3285.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,060 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 3285.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,060 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3283.00> \u001b[0m\u001b[mRunning simulation at most to 3583.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,063 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 3285.7 for Target(tgt-3190) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,066 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,067 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,068 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,069 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,069 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 26 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,069 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3658) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,073 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3658) window enabled: 3671.1 to 3795.2\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,135 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 3795.2\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,155 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3286.00> \u001b[0m\u001b[mRunning simulation at most to 3586.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,304 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,305 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,306 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,306 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 11 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,307 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-530) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,310 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-530) window enabled: 3700.7 to 3795.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,311 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 3795.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,311 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3586.00> \u001b[0m\u001b[mRunning simulation at most to 3886.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,349 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-530)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,353 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[mData reward: {'EO': 0.17160945565918637}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,355 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,355 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[mStep reward: 0.17160945565918637\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,356 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,356 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 23 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,357 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2787) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,360 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2787) window enabled: 4338.6 to 4449.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,360 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 4449.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,361 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<3702.00> \u001b[0m\u001b[mRunning simulation at most to 4002.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,456 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,458 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,459 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,459 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 8 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,460 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3589) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,463 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3589) window enabled: 4207.7 to 4321.5\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,463 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 4321.5\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,464 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4002.00> \u001b[0m\u001b[mRunning simulation at most to 4302.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,529 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-3589)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,532 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[mData reward: {'EO': 0.15403143413322856}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,534 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,534 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[mStep reward: 0.15403143413322856\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,535 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,536 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 25 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,536 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1515) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,539 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1515) window enabled: 4574.8 to 4706.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,539 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 4706.3\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,540 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4209.00> \u001b[0m\u001b[mRunning simulation at most to 4509.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,633 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,635 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,636 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,636 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 8 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,637 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3174) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,640 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3174) window enabled: 4542.1 to 4650.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,640 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 4650.9\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,641 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4509.00> \u001b[0m\u001b[mRunning simulation at most to 4809.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,652 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mimaged Target(tgt-3174)\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,655 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,657 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,657 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,658 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,658 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 3 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,658 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2210) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,662 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2210) window enabled: 4516.6 to 4587.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,662 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 4587.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,663 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4543.50> \u001b[0m\u001b[mRunning simulation at most to 4843.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,681 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 4587.1 for Target(tgt-2210) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,685 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,687 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,688 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,688 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,689 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 20 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,689 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3128) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,693 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3128) window enabled: 5019.4 to 5132.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,693 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 5132.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,693 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4587.50> \u001b[0m\u001b[mRunning simulation at most to 4887.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,808 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,809 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,810 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,811 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 6 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,811 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-220) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,814 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-220) window enabled: 5029.1 to 5135.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,815 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 5135.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,815 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<4887.50> \u001b[0m\u001b[mRunning simulation at most to 5187.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,894 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 5135.4 for Target(tgt-220) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,897 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,899 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,899 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,900 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,900 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 31 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,901 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2914) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,904 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2914) window enabled: 5909.0 to 6040.2\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,905 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 6040.2\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:49,905 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5135.50> \u001b[0m\u001b[mRunning simulation at most to 5435.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,002 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,004 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,005 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,006 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 18 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,006 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3303) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,010 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3303) window enabled: 5622.2 to 5736.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,011 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 5736.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,011 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5435.50> \u001b[0m\u001b[mRunning simulation at most to 5735.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,113 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,115 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,115 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,116 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 26 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,116 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2841) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,120 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2841) window enabled: 6391.7 to 6521.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,120 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 6521.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,120 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<5735.50> \u001b[0m\u001b[mRunning simulation at most to 6035.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,233 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,235 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,236 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,236 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 27 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,237 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-905) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,240 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-905) window enabled: 6526.4 to 6598.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,240 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 6598.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,257 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6035.50> \u001b[0m\u001b[mRunning simulation at most to 6335.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,472 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,474 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,475 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,475 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 29 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,476 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-372) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,479 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-372) window enabled: 6824.9 to 6949.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,480 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 6949.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,480 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6335.50> \u001b[0m\u001b[mRunning simulation at most to 6635.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,594 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,596 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,597 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,597 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 15 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,598 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-225) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,601 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-225) window enabled: 6896.2 to 7014.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,601 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7014.1\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,602 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6635.50> \u001b[0m\u001b[mRunning simulation at most to 6935.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,692 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,694 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,695 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,695 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 13 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,695 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2274) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,699 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2274) window enabled: 7136.7 to 7268.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,699 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7268.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,699 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<6935.50> \u001b[0m\u001b[mRunning simulation at most to 7235.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,790 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,792 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,793 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,793 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 9 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,793 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1090) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,796 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1090) window enabled: 7409.2 to 7535.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,796 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7535.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,797 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7235.50> \u001b[0m\u001b[mRunning simulation at most to 7535.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,890 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,892 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,893 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,893 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 7 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,894 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-61) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,897 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-61) window enabled: 7502.4 to 7631.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,897 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7631.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,898 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7535.50> \u001b[0m\u001b[mRunning simulation at most to 7835.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,926 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 7631.0 for Target(tgt-61) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,929 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,931 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,932 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,932 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,933 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 1 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,933 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2115) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,936 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2115) window enabled: 7549.9 to 7671.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,936 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7671.6\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,937 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7631.50> \u001b[0m\u001b[mRunning simulation at most to 7931.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,950 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 7671.6 for Target(tgt-2115) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,953 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,955 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,955 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,956 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,956 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 0 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,956 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2814) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,959 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-2814) window enabled: 7604.9 to 7683.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,960 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7683.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,960 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7672.00> \u001b[0m\u001b[mRunning simulation at most to 7972.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,964 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 7683.7 for Target(tgt-2814) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,967 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,969 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,969 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,969 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,970 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 4 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,970 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1353) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,987 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1353) window enabled: 7641.8 to 7763.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,990 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7763.4\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:50,991 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7684.00> \u001b[0m\u001b[mRunning simulation at most to 7984.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,021 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 7763.4 for Target(tgt-1353) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,024 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,026 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,026 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,027 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,027 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 0 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,028 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3760) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,031 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-3760) window enabled: 7706.4 to 7785.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,031 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 7785.7\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,032 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7763.50> \u001b[0m\u001b[mRunning simulation at most to 8063.50 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,041 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtimed termination at 7785.7 for Target(tgt-3760) window\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,044 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,046 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[mSatellites requiring retasking: ['EO']\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,046 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,047 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,047 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 17 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,047 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1791) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,050 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1791) window enabled: 8270.2 to 8394.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,050 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 8394.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,051 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<7786.00> \u001b[0m\u001b[mRunning simulation at most to 8086.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,147 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,149 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,150 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[93;1m=== STARTING STEP ===\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,150 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mtarget index 26 tasked\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,151 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1316) tasked for imaging\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,154 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[mTarget(tgt-1316) window enabled: 8623.5 to 8739.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,154 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[msetting timed terminal event at 8739.8\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,155 \u001b[0m\u001b[msim.simulator \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8086.00> \u001b[0m\u001b[mRunning simulation at most to 8386.00 seconds\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,264 \u001b[0m\u001b[mdata.base \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8386.00> \u001b[0m\u001b[mData reward: {'EO': 0.0}\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,265 \u001b[0m\u001b[36msats.satellite.EO \u001b[0m\u001b[93mWARNING \u001b[0m\u001b[33m<8386.00> \u001b[0m\u001b[36mEO: \u001b[0m\u001b[93mfailed battery_valid check\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,266 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8386.00> \u001b[0m\u001b[mStep reward: 0.0\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,266 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8386.00> \u001b[0m\u001b[mEpisode terminated: True\u001b[0m\n", - "\u001b[90;3m2024-07-19 09:54:51,266 \u001b[0m\u001b[mgym \u001b[0m\u001b[mINFO \u001b[0m\u001b[33m<8386.00> \u001b[0m\u001b[mEpisode truncated: False\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Episode complete.\n" - ] - } - ], + "outputs": [], "source": [ "count = 0\n", "while True:\n", @@ -972,19 +520,9 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total reward: {'EO': 1.4817151355646798}\n", - "Covered by clouds: [Target(tgt-3174), Target(tgt-3502), Target(tgt-601), Target(tgt-2792)]\n", - "Not covered by clouds: [Target(tgt-530), Target(tgt-64), Target(tgt-180), Target(tgt-3368), Target(tgt-3589), Target(tgt-2542)]\n" - ] - } - ], + "outputs": [], "source": [ "print(\"Total reward:\", env.unwrapped.rewarder.cum_reward)\n", "print(\"Covered by clouds:\", env.unwrapped.rewarder.data.cloud_covered)\n", @@ -994,7 +532,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv_refactor", + "display_name": ".venv_update_cloud_env_JAIS", "language": "python", "name": "python3" }, @@ -1008,7 +546,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.11.9" } }, "nbformat": 4, diff --git a/examples/cloud_environment_with_reimaging.ipynb b/examples/cloud_environment_with_reimaging.ipynb index b5d9caac..ba8b2c20 100644 --- a/examples/cloud_environment_with_reimaging.ipynb +++ b/examples/cloud_environment_with_reimaging.ipynb @@ -160,11 +160,11 @@ "\n", " def __init__(\n", " self,\n", - " imaged: Optional[list[\"Target\"]] = None,\n", + " imaged: Optional[set[\"Target\"]] = None,\n", " duplicates: int = 0,\n", - " known: Optional[list[\"Target\"]] = None,\n", - " cloud_covered: Optional[list[\"Target\"]] = None,\n", - " cloud_free: Optional[list[\"Target\"]] = None,\n", + " known: Optional[set[\"Target\"]] = None,\n", + " cloud_covered: Optional[set[\"Target\"]] = None,\n", + " cloud_free: Optional[set[\"Target\"]] = None,\n", " ) -> None:\n", " \"\"\"Construct unit of data to record unique images.\n", "\n", @@ -174,19 +174,19 @@ " ``cloud_covered`` and ``cloud_free`` based on the specified threshold.\n", "\n", " Args:\n", - " imaged: List of targets that are known to be imaged.\n", + " imaged: Set of targets that are known to be imaged.\n", " duplicates: Count of target imaging duplication.\n", - " known: List of targets that are known to exist (imaged and unimaged).\n", - " cloud_covered: List of imaged targets that are known to be cloud covered.\n", - " cloud_free: List of imaged targets that are known to be cloud free.\n", + " known: Set of targets that are known to exist (imaged and unimaged).\n", + " cloud_covered: Set of imaged targets that are known to be cloud covered.\n", + " cloud_free: Set of imaged targets that are known to be cloud free.\n", " \"\"\"\n", " super().__init__(imaged=imaged, duplicates=duplicates, known=known)\n", " if cloud_covered is None:\n", - " cloud_covered = []\n", + " cloud_covered = set()\n", " if cloud_free is None:\n", - " cloud_free = []\n", - " self.cloud_covered = list(set(cloud_covered))\n", - " self.cloud_free = list(set(cloud_free))\n", + " cloud_free = set()\n", + " self.cloud_covered = set(cloud_covered)\n", + " self.cloud_free = set(cloud_free)\n", "\n", " def __add__(self, other: \"CloudImageBinaryData\") -> \"CloudImageBinaryData\":\n", " \"\"\"Combine two units of data.\n", @@ -198,7 +198,7 @@ " Combined unit of data.\n", " \"\"\"\n", "\n", - " imaged = list(set(self.imaged + other.imaged))\n", + " imaged = self.imaged | other.imaged\n", " duplicates = (\n", " self.duplicates\n", " + other.duplicates\n", @@ -206,9 +206,9 @@ " + len(other.imaged)\n", " - len(imaged)\n", " )\n", - " known = list(set(self.known + other.known))\n", - " cloud_covered = list(set(self.cloud_covered + other.cloud_covered))\n", - " cloud_free = list(set(self.cloud_free + other.cloud_free))\n", + " known = self.known | other.known\n", + " cloud_covered = self.cloud_covered | other.cloud_covered\n", + " cloud_free = self.cloud_free | other.cloud_free\n", "\n", " return self.__class__(\n", " imaged=imaged,\n", @@ -236,27 +236,25 @@ " Returns:\n", " list: Targets imaged at new_state that were unimaged at old_state\n", " \"\"\"\n", - " update_idx = np.where(new_state - old_state > 0)[0]\n", - " imaged = []\n", - " for idx in update_idx:\n", - " message = self.satellite.dynamics.storageUnit.storageUnitDataOutMsg\n", - " target_id = message.read().storedDataName[int(idx)]\n", - " imaged.append(\n", - " [target for target in self.data.known if target.id == target_id][0]\n", - " )\n", - "\n", - " cloud_covered = []\n", - " cloud_free = []\n", - " for target in imaged:\n", - " cloud_coverage = target.cloud_cover_true\n", - " if cloud_coverage > target.reward_threshold:\n", - " cloud_covered.append(target)\n", + " data_increase = new_state - old_state\n", + " if data_increase <= 0:\n", + " return UniqueImageData()\n", + " else:\n", + " assert self.satellite.latest_target is not None\n", + " self.update_target_colors([self.satellite.latest_target])\n", + " cloud_coverage = self.satellite.latest_target.cloud_cover_true\n", + " cloud_threshold = self.satellite.latest_target.reward_threshold\n", + " if cloud_coverage > cloud_threshold:\n", + " cloud_covered = [self.satellite.latest_target]\n", + " cloud_free = []\n", " else:\n", - " cloud_free.append(target)\n", - "\n", - " return CloudImageBinaryData(\n", - " imaged=imaged, cloud_covered=cloud_covered, cloud_free=cloud_free\n", - " )\n", + " cloud_covered = []\n", + " cloud_free = [self.satellite.latest_target]\n", + " return CloudImageBinaryData(\n", + " imaged={self.satellite.latest_target},\n", + " cloud_covered=cloud_covered,\n", + " cloud_free=cloud_free,\n", + " )\n", "\n", "\n", "class CloudImageBinaryRewarder(UniqueImageReward):\n", @@ -276,14 +274,20 @@ " reward: Cumulative reward across satellites for one step\n", " \"\"\"\n", " reward = {}\n", + " imaged_counts = {}\n", + " for new_data in new_data_dict.values():\n", + " for target in new_data.imaged:\n", + " if target not in imaged_counts:\n", + " imaged_counts[target] = 0\n", + " imaged_counts[target] += 1\n", "\n", " for sat_id, new_data in new_data_dict.items():\n", " reward[sat_id] = 0.0\n", " for target in new_data.cloud_free:\n", - " reward[sat_id] += self.reward_fn(target.priority)\n", - "\n", - " for new_data in new_data_dict.values():\n", - " self.data += new_data\n", + " if target not in self.data.imaged:\n", + " reward[sat_id] += (\n", + " self.reward_fn(target.priority) / imaged_counts[target]\n", + " )\n", " return reward\n", "\n", "\n", @@ -326,9 +330,9 @@ " def __init__(\n", " self,\n", " imaged: Optional[list[\"Target\"]] = None,\n", - " imaged_complete: Optional[list[\"Target\"]] = None,\n", + " imaged_complete: Optional[set[\"Target\"]] = None,\n", " list_belief_update_var: Optional[list[float]] = None,\n", - " known: Optional[list[\"Target\"]] = None,\n", + " known: Optional[set[\"Target\"]] = None,\n", " ) -> None:\n", " \"\"\"Construct unit of data to record unique images.\n", "\n", @@ -337,22 +341,22 @@ "\n", " Args:\n", " imaged: List of targets that are known to be imaged.\n", - " imaged_complete: List of targets that are known to be completely imaged (P(S=1) >= reward_threshold).\n", + " imaged_complete: Set of targets that are known to be completely imaged (P(S=1) >= reward_threshold).\n", " list_belief_update_var: List of belief update variations for each target after each picture.\n", " known: List of targets that are known to exist (imaged and not imaged)\n", " \"\"\"\n", " if imaged is None:\n", " imaged = []\n", " if imaged_complete is None:\n", - " imaged_complete = []\n", + " imaged_complete = set()\n", " if list_belief_update_var is None:\n", " list_belief_update_var = []\n", " if known is None:\n", - " known = []\n", - " self.known = list(set(known))\n", + " known = set()\n", + " self.known = set(known)\n", "\n", - " self.imaged = list(imaged)\n", - " self.imaged_complete = list(set(imaged_complete))\n", + " self.imaged = imaged\n", + " self.imaged_complete = imaged_complete\n", " self.list_belief_update_var = list(list_belief_update_var)\n", "\n", " def __add__(\n", @@ -367,13 +371,13 @@ " Combined unit of data.\n", " \"\"\"\n", "\n", - " imaged = list(self.imaged + other.imaged)\n", - " imaged_complete = list(set(self.imaged_complete + other.imaged_complete))\n", - " list_belief_update_var = list(\n", + " imaged = self.imaged + other.imaged\n", + " imaged_complete = self.imaged_complete | other.imaged_complete\n", + " list_belief_update_var = (\n", " self.list_belief_update_var + other.list_belief_update_var\n", " )\n", "\n", - " known = list(set(self.known + other.known))\n", + " known = self.known | other.known\n", " return self.__class__(\n", " imaged=imaged,\n", " imaged_complete=imaged_complete,\n", @@ -401,9 +405,8 @@ " Returns:\n", " array: storedData from satellite storage unit\n", " \"\"\"\n", - " return np.array(\n", - " self.satellite.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData\n", - " )\n", + " msg = self.satellite.dynamics.storageUnit.storageUnitDataOutMsg.read()\n", + " return msg.storedData[0]\n", "\n", " def compare_log_states(\n", " self, old_state: np.ndarray, new_state: np.ndarray\n", @@ -421,22 +424,18 @@ " Returns:\n", " list: Targets imaged at new_state that were unimaged at old_state\n", " \"\"\"\n", - " update_idx = np.where(new_state - old_state > 0)[0]\n", - " imaged = []\n", - " for idx in update_idx:\n", - " message = self.satellite.dynamics.storageUnit.storageUnitDataOutMsg\n", - " target_id = message.read().storedDataName[int(idx)]\n", - " imaged.append(\n", - " [target for target in self.data.known if target.id == target_id][0]\n", - " )\n", "\n", - " list_imaged_complete = []\n", - " list_belief_update_var = []\n", + " data_increase = new_state - old_state\n", + " if data_increase <= 0:\n", + " return CloudImageProbabilityData()\n", + " else:\n", + " assert self.satellite.latest_target is not None\n", + " # return UniqueImageData(imaged={self.satellite.latest_target})\n", "\n", - " current_sim_time = self.satellite.simulator.sim_time\n", - " belief_update_func = self.satellite.belief_update_func\n", + " target = self.satellite.latest_target\n", + " current_sim_time = self.satellite.simulator.sim_time\n", + " belief_update_func = self.satellite.belief_update_func\n", "\n", - " for target in imaged:\n", " target_prev_obs = (\n", " target.prev_obs\n", " ) # Time at which the target was previously observed\n", @@ -457,18 +456,20 @@ " target.prev_obs = current_sim_time # Update the previous observation time\n", "\n", " if updated_belief[1] > target.reward_threshold:\n", - " list_imaged_complete.append(target)\n", - " list_belief_update_var.append(target.belief_update_var)\n", + " list_imaged_complete = [target]\n", + " else:\n", + " list_imaged_complete = []\n", + " list_belief_update_var = target.belief_update_var\n", "\n", - " return CloudImageProbabilityData(\n", - " imaged=imaged,\n", - " imaged_complete=list_imaged_complete,\n", - " list_belief_update_var=list_belief_update_var,\n", - " )\n", + " return CloudImageProbabilityData(\n", + " imaged=[target],\n", + " imaged_complete=set(list_imaged_complete),\n", + " list_belief_update_var=[list_belief_update_var],\n", + " )\n", "\n", "\n", "class CloudImageProbabilityRewarder(GlobalReward):\n", - " datastore_type = CloudImageProbabilityDataStore\n", + " data_store_type = CloudImageProbabilityDataStore\n", "\n", " def __init__(\n", " self,\n", @@ -505,6 +506,7 @@ " Returns:\n", " reward: Cumulative reward across satellites for one step\n", " \"\"\"\n", + "\n", " reward = {}\n", "\n", " for sat_id, new_data in new_data_dict.items():\n", @@ -519,7 +521,6 @@ " reward[sat_id] += self.reward_fn(\n", " target.priority, None, self.alpha, reach_threshold=True\n", " )\n", - "\n", " return reward\n", "\n", "\n", diff --git a/src/bsk_rl/data/unique_image_data.py b/src/bsk_rl/data/unique_image_data.py index 533b5d6a..8f0fe3e2 100644 --- a/src/bsk_rl/data/unique_image_data.py +++ b/src/bsk_rl/data/unique_image_data.py @@ -20,9 +20,9 @@ class UniqueImageData(Data): def __init__( self, - imaged: Optional[list["Target"]] = None, + imaged: Optional[set["Target"]] = None, duplicates: int = 0, - known: Optional[list["Target"]] = None, + known: Optional[set["Target"]] = None, ) -> None: """Construct unit of data to record unique images. @@ -31,17 +31,17 @@ def __init__( ``known`` targets in the environment. Args: - imaged: List of targets that are known to be imaged. + imaged: Set of targets that are known to be imaged. duplicates: Count of target imaging duplication. - known: List of targets that are known to exist (imaged and unimaged). + known: Set of targets that are known to exist (imaged and unimaged). """ if imaged is None: - imaged = [] - self.imaged = list(set(imaged)) + imaged = set() + self.imaged = set(imaged) self.duplicates = duplicates + len(imaged) - len(self.imaged) if known is None: - known = [] - self.known = list(set(known)) + known = set() + self.known = set(known) def __add__(self, other: "UniqueImageData") -> "UniqueImageData": """Combine two units of data. @@ -52,7 +52,7 @@ def __add__(self, other: "UniqueImageData") -> "UniqueImageData": Returns: Combined unit of data. """ - imaged = list(set(self.imaged + other.imaged)) + imaged = self.imaged | other.imaged duplicates = ( self.duplicates + other.duplicates @@ -60,7 +60,7 @@ def __add__(self, other: "UniqueImageData") -> "UniqueImageData": + len(other.imaged) - len(imaged) ) - known = list(set(self.known + other.known)) + known = self.known | other.known return self.__class__(imaged=imaged, duplicates=duplicates, known=known) @@ -77,15 +77,14 @@ def __init__(self, *args, **kwargs) -> None: """ super().__init__(*args, **kwargs) - def get_log_state(self) -> np.ndarray: + def get_log_state(self) -> float: """Log the instantaneous storage unit state at the end of each step. Returns: - array: storedData from satellite storage unit + float: storedData from satellite storage unit """ - return np.array( - self.satellite.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData - ) + msg = self.satellite.dynamics.storageUnit.storageUnitDataOutMsg.read() + return msg.storedData[0] def compare_log_states( self, old_state: np.ndarray, new_state: np.ndarray @@ -99,16 +98,13 @@ def compare_log_states( Returns: list: Targets imaged at new_state that were unimaged at old_state. """ - update_idx = np.where(new_state - old_state > 0)[0] - imaged = [] - for idx in update_idx: - message = self.satellite.dynamics.storageUnit.storageUnitDataOutMsg - target_id = message.read().storedDataName[int(idx)] - imaged.append( - [target for target in self.data.known if target.id == target_id][0] - ) - self.update_target_colors(imaged) - return UniqueImageData(imaged=imaged) + data_increase = new_state - old_state + if data_increase <= 0: + return UniqueImageData() + else: + assert self.satellite.latest_target is not None + self.update_target_colors([self.satellite.latest_target]) + return UniqueImageData(imaged={self.satellite.latest_target}) @vizard.visualize def update_target_colors(self, targets, vizInstance=None, vizSupport=None): @@ -181,17 +177,20 @@ def calculate_reward( reward: Cumulative reward across satellites for one step """ reward = {} - imaged_targets = sum( - [new_data.imaged for new_data in new_data_dict.values()], [] - ) + imaged_counts = {} + for new_data in new_data_dict.values(): + for target in new_data.imaged: + if target not in imaged_counts: + imaged_counts[target] = 0 + imaged_counts[target] += 1 + for sat_id, new_data in new_data_dict.items(): reward[sat_id] = 0.0 for target in new_data.imaged: if target not in self.data.imaged: - reward[sat_id] += self.reward_fn( - target.priority - ) / imaged_targets.count(target) - + reward[sat_id] += ( + self.reward_fn(target.priority) / imaged_counts[target] + ) return reward diff --git a/src/bsk_rl/gym.py b/src/bsk_rl/gym.py index 5cc00715..8ab9f425 100644 --- a/src/bsk_rl/gym.py +++ b/src/bsk_rl/gym.py @@ -402,7 +402,7 @@ def _get_obs(self) -> MultiSatObs: ( satellite.get_obs() if satellite.requires_retasking - else satellite.observation_space.sample() * 0 + else satellite.observation_space.low * 0 ) for satellite in self.satellites ) @@ -474,7 +474,7 @@ def observation_space(self) -> spaces.Space[MultiSatObs]: ) def _step(self, actions: MultiSatAct) -> None: - logger.debug(f"Stepping environment with actions: {actions}") + logger.debug("Stepping environment with actions: %s", actions) if len(actions) != len(self.satellites): raise ValueError("There must be the same number of actions and satellites") for satellite, action in zip(self.satellites, actions): @@ -533,8 +533,8 @@ def step( else: logger.debug(f"Episode terminated: {terminated}") logger.debug(f"Episode truncated: {truncated}") - logger.debug(f"Step info: {info}") - logger.debug(f"Step observation: {observation}") + logger.debug("Step info: %s", info) + logger.debug("Step observation: %s", observation) return observation, reward, terminated, truncated, info def render(self) -> None: # pragma: no cover @@ -777,7 +777,7 @@ def _get_obs(self) -> dict[AgentID, SatObs]: if self.generate_obs_retasking_only and not self._requires_retasking(agent): agent_obs = [ - satellite.observation_space.sample() * 0 for satellite in satellites + satellite.observation_space.low * 0 for satellite in satellites ] else: agent_obs = [satellite.get_obs() for satellite in satellites] @@ -959,8 +959,8 @@ def step( if any(truncated.values()): truncated_true = [k for k, v in truncated.items() if v] logger.info(f"Episode truncated: {truncated_true}") - logger.debug(f"Step info: {info}") - logger.debug(f"Step observation: {observation}") + logger.debug("Step info: %s", info) + logger.debug("Step observation: %s", observation) return observation, reward, terminated, truncated, info diff --git a/src/bsk_rl/obs/observations.py b/src/bsk_rl/obs/observations.py index 4bdc065f..c6363de9 100644 --- a/src/bsk_rl/obs/observations.py +++ b/src/bsk_rl/obs/observations.py @@ -3,6 +3,7 @@ import logging from abc import ABC, abstractmethod from copy import deepcopy +from functools import cached_property from typing import TYPE_CHECKING, Any, Union import numpy as np @@ -145,13 +146,13 @@ def get_obs(self) -> Union[dict, np.ndarray, list]: else: raise ValueError(f"Invalid observation type: {self.obs_type}") - @property + @cached_property def observation_space(self) -> spaces.Space: """Space of the observation.""" obs = self.get_obs() return nested_obs_to_space(obs, dtype=self.dtype) - @property + @cached_property def observation_description(self) -> Any: """Human-interpretable description of observation space.""" return self.obs_array_keys() diff --git a/src/bsk_rl/sats/access_satellite.py b/src/bsk_rl/sats/access_satellite.py index 782f1ad9..6231e348 100644 --- a/src/bsk_rl/sats/access_satellite.py +++ b/src/bsk_rl/sats/access_satellite.py @@ -32,6 +32,7 @@ def __init__( *args, generation_duration: float = 600.0, initial_generation_duration: Optional[float] = None, + max_generation_duration_beyond_initial: Optional[float] = float("inf"), **kwargs, ) -> None: """Satellite that detects access opportunities for ground locations. @@ -49,11 +50,16 @@ def __init__( the simulation is infinite. initial_generation_duration: [s] Period to calculate opportunities for on environment reset. + max_generation_duration_beyond_initial: [s] Maximum time to calculate opportunities + beyond the initial generation duration. kwargs: Passed through to :class:`Satellite` constructor. """ super().__init__(*args, **kwargs) self.generation_duration = generation_duration self.initial_generation_duration = initial_generation_duration + self.max_generation_duration_beyond_initial = ( + max_generation_duration_beyond_initial + ) self.access_filter_functions = [] self.add_access_filter(lambda opportunity: True) @@ -70,6 +76,7 @@ def add_location_for_access_checking( r_LP_P: np.ndarray, min_elev: float, type: str, + start_time: float = 0.0, ) -> None: """Add a location to be included in opportunity calculations. @@ -83,10 +90,12 @@ def add_location_for_access_checking( r_LP_P: [m] Objects planet-fixed location. min_elev: [rad] Minimum elevation angle for access. type: Category of opportunity target provides. + start_time: [s] Time at which to start calculating opportunities for this location. """ location_dict = dict(r_LP_P=r_LP_P, min_elev=min_elev, type=type) location_dict[type] = object # For backwards compatibility, prefer "object" key location_dict["object"] = object + location_dict["start_time"] = start_time self.locations_for_access_checking.append(location_dict) def reset_post_sim_init(self) -> None: @@ -111,11 +120,6 @@ def calculate_additional_windows(self, duration: float) -> None: if duration <= 0: return - self.logger.info( - "Finding opportunity windows from " - f"{self.window_calculation_time:.2f} to " - f"{self.window_calculation_time + duration:.2f} seconds" - ) calculation_start = self.window_calculation_time calculation_end = self.window_calculation_time + max( duration, self.trajectory.dt * 2, self.generation_duration @@ -124,6 +128,12 @@ def calculate_additional_windows(self, duration: float) -> None: calculation_end / self.generation_duration ) + self.logger.info( + "Finding opportunity windows from " + f"{calculation_start:.2f} to " + f"{calculation_end:.2f} seconds" + ) + # Get discrete times and positions for next trajectory segment self.trajectory.extend_to(calculation_end) r_BP_P_interp = self.trajectory.r_BP_P @@ -137,12 +147,18 @@ def calculate_additional_windows(self, duration: float) -> None: r_max = np.max(np.linalg.norm(positions, axis=-1)) access_dist_thresh_multiplier = 1.1 for location in self.locations_for_access_checking: + start_idx = max( + np.searchsorted(times, location["start_time"], side="right") - 1, 0 + ) + times_loc = times[start_idx:] + positions_loc = positions[start_idx:] + alt_est = r_max - np.linalg.norm(location["r_LP_P"]) access_dist_threshold = ( access_dist_thresh_multiplier * alt_est / np.sin(location["min_elev"]) ) candidate_windows = self._find_candidate_windows( - location["r_LP_P"], times, positions, access_dist_threshold + location["r_LP_P"], times_loc, positions_loc, access_dist_threshold ) for candidate_window in candidate_windows: @@ -153,7 +169,7 @@ def calculate_additional_windows(self, duration: float) -> None: candidate_window, ) new_windows = self._refine_window( - roots, candidate_window, (times[0], times[-1]) + roots, candidate_window, (times_loc[0], times_loc[-1]) ) for new_window in new_windows: self._add_window( @@ -161,7 +177,7 @@ def calculate_additional_windows(self, duration: float) -> None: new_window, type=location["type"], r_LP_P=location["r_LP_P"], - merge_time=times[0], + merge_time=times_loc[0], ) self.window_calculation_time = calculation_end @@ -365,6 +381,7 @@ def next_opportunities_dict( self, types: Optional[Union[str, list[str]]] = None, filter: Union[Optional[Callable], list] = None, + min_needed: Optional[int] = None, ) -> dict[Any, tuple[float, float]]: """Make dictionary of opportunities that maps objects to the next open windows. @@ -372,6 +389,7 @@ def next_opportunities_dict( types: Types of opportunities to include. If None, include all types. filter: Function that takes an opportunity dictionary and returns a boolean if the opportunity should be included in the output. + min_needed: Minimum number of opportunities to return. If None, return all """ if isinstance(types, str): types = [types] @@ -384,11 +402,15 @@ def next_opportunities_dict( filter = self.default_access_filter next_windows = {} + total_found = 0 for opportunity in self.upcoming_opportunities: type = opportunity["type"] if (types is None or type in types) and filter(opportunity): if opportunity["object"] not in next_windows: next_windows[opportunity["object"]] = opportunity["window"] + total_found += 1 + if min_needed is not None and total_found >= min_needed: + break return next_windows def find_next_opportunities( @@ -436,8 +458,17 @@ def find_next_opportunities( if len(next_opportunities) >= n: return next_opportunities + if ( + self.window_calculation_time + >= self.initial_generation_duration + + self.max_generation_duration_beyond_initial + ): + break self.calculate_additional_windows(self.generation_duration) if pad and len(next_opportunities) >= 1: + self.logger.info( + f"Only {len(next_opportunities)} opportunities found, padding to {n}." + ) next_opportunities += [next_opportunities[-1]] * ( n - len(next_opportunities) ) @@ -457,7 +488,10 @@ def get_access_filter(self): ) def add_access_filter( - self, access_filter_fn: Callable, types: Optional[Union[str, list[str]]] = None + self, + access_filter_fn: Callable, + types: Optional[Union[str, list[str]]] = None, + prepend: bool = False, ): """Add an access filter function to the list of access filters. @@ -476,9 +510,14 @@ def add_access_filter( def access_filter_type_restricted(opportunity): return opportunity["type"] not in types or access_filter_fn(opportunity) - self.access_filter_functions.append(access_filter_type_restricted) + to_add = access_filter_type_restricted + else: + to_add = access_filter_fn + + if prepend: + self.access_filter_functions.insert(0, to_add) else: - self.access_filter_functions.append(access_filter_fn) + self.access_filter_functions.append(to_add) @property def default_access_filter(self): @@ -488,12 +527,11 @@ def default_access_filter(self): """ def access_filter(opportunity): - return all( - [ - access_filter_fn(opportunity) - for access_filter_fn in self.access_filter_functions - ] - ) + for access_filter_fn in self.access_filter_functions: + if not access_filter_fn(opportunity): + return False + else: + return True return access_filter @@ -501,6 +539,8 @@ def access_filter(opportunity): class ImagingSatellite(AccessSatellite): """Satellite with agile imaging capabilities.""" + buffer_name = "image_buffer" + dyn_type = dyn.ImagingDynModel fsw_type = fsw.ImagingFSWModel @@ -519,6 +559,7 @@ def __init__( self.dynamics: ImagingSatellite.dyn_type self.data_store: "UniqueImageStore" self.target_types = "target" + self.latest_target = None @property def known_targets(self) -> list["Target"]: @@ -541,12 +582,7 @@ def reset_pre_sim_init(self) -> None: :meta private: """ super().reset_pre_sim_init() - self.sat_args["bufferNames"] = [ - loc["object"].id - for loc in self.locations_for_access_checking - if hasattr(loc["object"], "id") - ] - + self.sat_args["bufferNames"] = [self.buffer_name] self.sat_args["transmitterNumBuffers"] = len(self.sat_args["bufferNames"]) def _update_image_event(self, target: "Target") -> None: @@ -561,16 +597,8 @@ def _update_image_event(self, target: "Target") -> None: self._image_event_name = valid_func_name(f"image_{self.name}_{target.id}") if self._image_event_name not in self.simulator.eventMap.keys(): - data_names = np.array( - list( - self.dynamics.storageUnit.storageUnitDataOutMsg.read().storedDataName - ) - ) - data_index = int(np.where(data_names == target.id)[0][0]) current_data_level = ( - self.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData[ - data_index - ] + self.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData[0] ) def side_effect(sim): @@ -584,7 +612,7 @@ def side_effect(sim): macros.sec2nano(self.fsw.fsw_rate), True, conditionFunction=lambda sim: self.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData[ - data_index + 0 ] > current_data_level, actionFunction=side_effect, @@ -638,10 +666,10 @@ def enable_target_window( behavior. """ self._update_image_event(target) - next_window = self.next_opportunities_dict( - types=self.target_types, - filter=self.default_access_filter, - )[target] + for opportunity in self.upcoming_opportunities: + if opportunity["object"] == target: + next_window = opportunity["window"] + break self.logger.info( f"{target} window enabled: {next_window[0]:.1f} to {next_window[1]:.1f}" ) @@ -671,9 +699,10 @@ def task_target_for_imaging( """ msg = f"{target} tasked for imaging" self.logger.info(msg) - self.fsw.action_image(target.r_LP_P, target.id) + self.fsw.action_image(target.r_LP_P, self.buffer_name) self.enable_target_window(target, max_duration=max_duration) self.draw_imaging_line(target) + self.latest_target = target @vizard.visualize def draw_imaging_line( diff --git a/src/bsk_rl/scene/targets.py b/src/bsk_rl/scene/targets.py index 965d99b0..d13772cc 100644 --- a/src/bsk_rl/scene/targets.py +++ b/src/bsk_rl/scene/targets.py @@ -49,10 +49,6 @@ def id(self) -> str: self._id = f"{self.name}_{id(self)}" return self._id - def __hash__(self) -> int: - """Hash target by unique id.""" - return hash((self.id)) - def __repr__(self) -> str: """Get string representation of target. diff --git a/src/bsk_rl/utils/orbital.py b/src/bsk_rl/utils/orbital.py index 62dff3be..6806184f 100644 --- a/src/bsk_rl/utils/orbital.py +++ b/src/bsk_rl/utils/orbital.py @@ -584,9 +584,23 @@ def rv2HN(r_N: np.ndarray, v_N: np.ndarray): Hill frame rotation matrix HN """ o_r_N = r_N / np.linalg.norm(r_N) - h_N = np.cross(r_N, v_N) + # Manually compute h_N = cross(r_N, v_N) + h_N = np.array( + [ + r_N[1] * v_N[2] - r_N[2] * v_N[1], + r_N[2] * v_N[0] - r_N[0] * v_N[2], + r_N[0] * v_N[1] - r_N[1] * v_N[0], + ] + ) o_h_N = h_N / np.linalg.norm(h_N) - o_theta_N = np.cross(o_h_N, o_r_N) + # Manually compute o_theta_N = cross(o_h_N, o_r_N) + o_theta_N = np.array( + [ + o_h_N[1] * o_r_N[2] - o_h_N[2] * o_r_N[1], + o_h_N[2] * o_r_N[0] - o_h_N[0] * o_r_N[2], + o_h_N[0] * o_r_N[1] - o_h_N[1] * o_r_N[0], + ] + ) HN = np.array([o_r_N, o_theta_N, o_h_N]) return HN diff --git a/tests/unittest/data/test_data.py b/tests/unittest/data/test_data.py index 067d05f3..f7ca5509 100644 --- a/tests/unittest/data/test_data.py +++ b/tests/unittest/data/test_data.py @@ -103,68 +103,64 @@ def test_add_null(self): dat1 = UniqueImageData() dat2 = UniqueImageData() dat = dat1 + dat2 - assert dat.imaged == [] + assert dat.imaged == set() assert dat.duplicates == 0 def test_add_to_null(self): dat1 = UniqueImageData(imaged=[1, 2]) dat2 = UniqueImageData() dat = dat1 + dat2 - assert dat.imaged == [1, 2] + assert dat.imaged == {1, 2} assert dat.duplicates == 0 def test_add(self): dat1 = UniqueImageData(imaged=[1, 2]) dat2 = UniqueImageData(imaged=[3, 4]) dat = dat1 + dat2 - assert dat.imaged == [1, 2, 3, 4] + assert dat.imaged == {1, 2, 3, 4} assert dat.duplicates == 0 def test_add_duplicates(self): dat1 = UniqueImageData(imaged=[1, 2]) dat2 = UniqueImageData(imaged=[2, 3]) dat = dat1 + dat2 - assert dat.imaged == [1, 2, 3] + assert dat.imaged == {1, 2, 3} assert dat.duplicates == 1 def test_add_duplicates_existing(self): dat1 = UniqueImageData(imaged=[1, 2], duplicates=2) dat2 = UniqueImageData(imaged=[2, 3], duplicates=3) dat = dat1 + dat2 - assert dat.imaged == [1, 2, 3] + assert dat.imaged == {1, 2, 3} assert dat.duplicates == 6 class TestUniqueImageStore: def test_get_log_state(self): sat = MagicMock() - sat.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData = [1, 2, 3] + sat.dynamics.storageUnit.storageUnitDataOutMsg.read().storedData = [10] ds = UniqueImageStore(sat) - assert (ds.get_log_state() == np.array([1, 2, 3])).all() + assert ds.get_log_state() == 10 @pytest.mark.parametrize( "before,after,imaged", [ - ([0, 0, 0], [0, 0, 0], []), - ([0, 0, 1], [0, 0, 1], []), - ([0, 0, 1], [0, 0, 0], []), - ([0, 0, 0], [1, 0, 0], [0]), - ([0, 0, 0], [0, 1, 1], [1, 2]), + ([0], [0], False), + ([1], [1], False), + ([1], [0], False), + ([0], [1], True), ], ) def test_compare_log_states(self, before, after, imaged): sat = MagicMock() - targets = [MagicMock() for i in range(3)] ds = UniqueImageStore(sat) - ds.data.known = targets - message = sat.dynamics.storageUnit.storageUnitDataOutMsg - message.read.return_value.storedDataName.__getitem__.side_effect = ( - lambda x: targets[x].id - ) + target = MagicMock() + ds.data.known = [target] + sat.latest_target = target dat = ds.compare_log_states(np.array(before), np.array(after)) - assert len(dat.imaged) == len(imaged) - for i in imaged: - assert targets[i] in dat.imaged + assert len(dat.imaged) == imaged + if imaged: + assert target in dat.imaged class TestUniqueImagingManager: diff --git a/tests/unittest/sats/test_access_satellite.py b/tests/unittest/sats/test_access_satellite.py index f9cd297f..d20f004a 100644 --- a/tests/unittest/sats/test_access_satellite.py +++ b/tests/unittest/sats/test_access_satellite.py @@ -39,6 +39,7 @@ def test_add_location_for_access_checking(self): r_LP_P=[0, 0, 0], min_elev=1.0, type="target", + start_time=0.0, ) in sat.locations_for_access_checking ) @@ -87,7 +88,13 @@ def test_calculate_windows(self): ), ) sat.locations_for_access_checking = [ - dict(object=tgt, type="target", min_elev=1.3, r_LP_P=tgt.r_LP_P) + dict( + object=tgt, + type="target", + min_elev=1.3, + r_LP_P=tgt.r_LP_P, + start_time=9.0, + ) ] sat.calculate_additional_windows(100.0) assert tgt in sat.opportunities_dict() @@ -319,8 +326,8 @@ def test_reset_pre_sim_init(self, mock_reset): sat.sat_args = {} sat.reset_pre_sim_init() mock_reset.assert_called_once() - assert sat.sat_args["transmitterNumBuffers"] == 5 - assert len(sat.sat_args["bufferNames"]) == 5 + assert sat.sat_args["transmitterNumBuffers"] == 1 + assert len(sat.sat_args["bufferNames"]) == 1 @pytest.mark.parametrize( "gen_duration,time_limit,expected", @@ -423,9 +430,9 @@ def test_task_target_for_imaging(self): sat.logger = MagicMock() sat.task_target_for_imaging(self.tgt0) sat.fsw.action_image.assert_called_once() - assert sat.fsw.action_image.call_args[0][1].startswith("tgt_0") sat.logger.info.assert_called() sat._update_image_event.assert_called_once() assert sat._update_image_event.call_args[0][0] == self.tgt0 sat.update_timed_terminal_event.assert_called_once() assert sat.update_timed_terminal_event.call_args[0][0] == 50.0 + assert sat.latest_target == self.tgt0