Cloud Environment
This tutorial demonstrates the configuration and use of a simple BSK-RL environment considering cloud coverage. The satellite has to image targets while managing its battery level. Additionally, reward is inversely proportional to the amount of cloud coverage. Still, the satellite cannot observe the true cloud coverage of each target, only its forecast.
Load Modules
[1]:
import gymnasium as gym
import numpy as np
from typing import Optional
from Basilisk.architecture import bskLogging
from Basilisk.utilities import orbitalMotion
from bsk_rl import act, obs, sats
from bsk_rl.sim import dyn, fsw
from bsk_rl.utils.orbital import random_orbit
from bsk_rl.scene.targets import UniformTargets
from bsk_rl.data.unique_image_data import (
UniqueImageData,
UniqueImageStore,
UniqueImageReward,
)
bskLogging.setDefaultLogLevel(bskLogging.BSK_WARNING)
Configure the Satellite
-
SatProperties: Body angular velocity, instrument pointing direction, body position, body velocity, battery charge (properties in flight software model or dynamics model). Also, customized dynamics property in CustomDynModel below: Angle between the sun and the solar panel.
OpportunityProperties: Target’s priority, cloud coverage forecast, and standard deviation of cloud coverage forecast (upcoming 32 targets). Also, time until the opportunity to ground station opens and closes.
Time: Simulation time.
Eclipse: Next eclipse start and end times.
-
Charge: Enter a sun-pointing charging mode for 60 seconds.
Image: Image target from upcoming 32 targets
Dynamics model: FullFeaturedDynModel is used and a property, angle between sun and solar panel, is added.
Flight software model: SteeringImagerFSWModel is used.
[2]:
class CustomSatComposed(sats.ImagingSatellite):
observation_spec = [
obs.SatProperties(
dict(prop="omega_BP_P", norm=0.03),
dict(prop="c_hat_P"),
dict(prop="r_BN_P", norm=orbitalMotion.REQ_EARTH * 1e3),
dict(prop="v_BN_P", norm=7616.5),
dict(prop="battery_charge_fraction"),
dict(prop="solar_angle_norm"),
),
obs.OpportunityProperties(
# dict(fn=lambda sat, opp: print(opp)),
dict(prop="opportunity_open", norm=5700),
dict(prop="opportunity_close", norm=5700),
type="ground_station",
n_ahead_observe=1,
),
obs.Eclipse(),
obs.OpportunityProperties(
dict(prop="priority"),
dict(fn=lambda sat, opp: opp["object"].cloud_cover_forecast),
dict(fn=lambda sat, opp: opp["object"].cloud_cover_sigma),
type="target",
n_ahead_observe=32,
),
obs.Time(),
]
action_spec = [
act.Charge(duration=60.0),
act.Image(n_ahead_image=32),
]
class CustomDynModel(dyn.FullFeaturedDynModel):
@property
def solar_angle_norm(self) -> float:
sun_vec_N = (
self.world.gravFactory.spiceObject.planetStateOutMsgs[
self.world.sun_index
]
.read()
.PositionVector
)
sun_vec_N_hat = sun_vec_N / np.linalg.norm(sun_vec_N)
solar_panel_vec_B = np.array([0, 0, -1]) # Not default configuration
mat = np.transpose(self.BN)
solar_panel_vec_N = np.matmul(mat, solar_panel_vec_B)
error_angle = np.arccos(np.dot(solar_panel_vec_N, sun_vec_N_hat))
return error_angle / np.pi
dyn_type = CustomDynModel
fsw_type = fsw.SteeringImagerFSWModel
When instantiating a satellite, these parameters can be overriden with a constant or rerandomized every time the environment is reset using the sat_args dictionary.
[3]:
dataStorageCapacity = 20 * 8e6 * 100
sat_args = CustomSatComposed.default_sat_args(
oe=random_orbit,
imageAttErrorRequirement=0.01,
imageRateErrorRequirement=0.01,
batteryStorageCapacity=80.0 * 3600 * 2,
storedCharge_Init=lambda: np.random.uniform(0.4, 1.0) * 80.0 * 3600 * 2,
u_max=0.2,
K1=0.5,
nHat_B=np.array([0, 0, -1]),
imageTargetMinimumElevation=np.radians(45),
rwBasePower=20,
maxWheelSpeed=1500,
storageInit=lambda: np.random.randint(
0 * dataStorageCapacity,
0.01 * dataStorageCapacity,
), # Initialize storage use close to zero
wheelSpeeds=lambda: np.random.uniform(
-1, 1, 3
), # Initialize reaction wheel speeds close to zero
)
# Make the satellites
satellites = []
satellites.append(
CustomSatComposed(
"EO",
sat_args,
)
)
Making a Scenario with Cloud Covered Targets
Using UniformTargets as a base, attach the following information to each target:
true_cloud_coverrepresents the true cloud coverage. Information from external sources, such as historical cloud data, can be used here based on each target’s position.cloud_cover_forecastrepresents the cloud coverage forecast. Forecast from external sources can be plugged in here.cloud_cover_sigmarepresents the standard deviation of the cloud coverage forecast.
[4]:
class CloudTargets(UniformTargets):
mu_data = 0.6740208166434426
sigma_max = 0.05
sigma_min = 0.01
def regenerate_targets(self) -> None:
super().regenerate_targets()
for target in self.targets:
target.true_cloud_cover = np.clip(
np.random.uniform(0.0, self.mu_data * 2), 0.0, 1.0
)
target.cloud_cover_sigma = np.random.uniform(self.sigma_min, self.sigma_max)
target.cloud_cover_forecast = np.clip(
np.random.normal(target.true_cloud_cover, target.cloud_cover_sigma),
0.0,
1.0,
)
n_targets = (1000, 10000)
scenario = CloudTargets(n_targets=n_targets)
Adding a Filter Based on Cloud Coverage Forecast
It is possible to add a filter to the satellite using add_access_filter to remove targets with cloud_cover_forecast higher than a threshold from the observations.
[5]:
def cloud_cover_filter(opportunity):
if opportunity["type"] == "target":
return True if opportunity["object"].cloud_cover_forecast < 0.2 else False
return True
# Uncomment the following line to add the filter to the satellite
# satellites[0].add_access_filter(cloud_cover_filter)
Making a Rewarder Considering Cloud Coverage
A linear reward model is considered, where the reward is proportional to the cloud coverage of the target until a given threshold given by cloud_threshold. It has similar settings as the UniqueImageReward class, but cloud_covered and cloud_free information is added. Additionally, the calculate_reward function is modified for the linear reward model.
[6]:
from typing import TYPE_CHECKING
if TYPE_CHECKING: # pragma: no cover
from bsk_rl.scene.targets import (
Target,
)
class CloudImagePercentData(UniqueImageData):
"""DataType for unique images of targets."""
def __init__(
self,
imaged: Optional[set["Target"]] = None,
duplicates: int = 0,
known: Optional[set["Target"]] = None,
cloud_covered: Optional[set["Target"]] = None,
cloud_free: Optional[set["Target"]] = None,
) -> None:
"""Construct unit of data to record unique images.
Keeps track of ``imaged`` targets, a count of ``duplicates`` (i.e. images that
were not rewarded due to the target already having been imaged), and all
``known`` targets in the environment.
Args:
imaged: Set of targets that are known to be imaged.
duplicates: Count of target imaging duplication.
known: Set of targets that are known to exist (imaged and unimaged).
cloud_covered: Set of imaged targets that are known to be cloud covered.
cloud_free: Set of imaged targets that are known to be cloud free.
"""
super().__init__(imaged=imaged, duplicates=duplicates, known=known)
if cloud_covered is None:
cloud_covered = set()
if cloud_free is None:
cloud_free = set()
self.cloud_covered = set(cloud_covered)
self.cloud_free = set(cloud_free)
def __add__(self, other: "CloudImagePercentData") -> "CloudImagePercentData":
"""Combine two units of data.
Args:
other: Another unit of data to combine with this one.
Returns:
Combined unit of data.
"""
imaged = self.imaged | other.imaged
duplicates = (
self.duplicates
+ other.duplicates
+ len(self.imaged)
+ len(other.imaged)
- len(imaged)
)
known = self.known | other.known
cloud_covered = self.cloud_covered | other.cloud_covered
cloud_free = self.cloud_free | other.cloud_free
return self.__class__(
imaged=imaged,
duplicates=duplicates,
known=known,
cloud_covered=cloud_covered,
cloud_free=cloud_free,
)
class CloudImagePercentDataStore(UniqueImageStore):
"""DataStore for unique images of targets."""
data_type = CloudImagePercentData
def compare_log_states(
self, old_state: np.ndarray, new_state: np.ndarray
) -> CloudImagePercentData:
"""Check for an increase in logged data to identify new images.
Args:
old_state: older storedData from satellite storage unit
new_state: newer storedData from satellite storage unit
Returns:
list: Targets imaged at new_state that were unimaged at old_state
"""
data_increase = new_state - old_state
if data_increase <= 0:
return CloudImagePercentData()
else:
assert self.satellite.latest_target is not None
self.update_target_colors([self.satellite.latest_target])
cloud_coverage = self.satellite.latest_target.true_cloud_cover
cloud_threshold = 0.7
if cloud_coverage > cloud_threshold:
cloud_covered = [self.satellite.latest_target]
cloud_free = []
else:
cloud_covered = []
cloud_free = [self.satellite.latest_target]
return CloudImagePercentData(
imaged={self.satellite.latest_target},
cloud_covered=cloud_covered,
cloud_free=cloud_free,
)
class CloudImagingPercentRewarder(UniqueImageReward):
"""DataManager for rewarding unique images."""
data_store_type = CloudImagePercentDataStore
def calculate_reward(
self, new_data_dict: dict[str, CloudImagePercentData]
) -> dict[str, float]:
"""Reward new each unique image once using self.reward_fn().
Args:
new_data_dict: Record of new images for each satellite
Returns:
reward: Cumulative reward across satellites for one step
"""
reward = {}
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.cloud_free:
if target not in self.data.imaged:
reward[sat_id] += self.reward_fn(
target.priority,
target.true_cloud_cover,
imaged_counts[target],
)
return reward
# Define the reward function as a function of the priority of the target, the cloud cover, and the number of times the target has been imaged
def reward_function(priority, cloud_cover, count_target):
cloud_threshold = 0.7
return priority / count_target * (1 - cloud_cover / cloud_threshold)
rewarder = CloudImagingPercentRewarder(reward_fn=reward_function)
Initializing and Interacting with the Environment
For this example, we will be using the single-agent SatelliteTasking environment. Along with passing the satellite that we configured, the environment takes a scenario, which defines the environment the satellite is acting in, and a rewarder, which defines how data collected from the scenario is rewarded.
[7]:
env = gym.make(
"GeneralSatelliteTasking-v1",
satellites=satellites,
terminate_on_time_limit=True,
scenario=scenario,
rewarder=rewarder,
sim_rate=0.5,
max_step_duration=300.0,
time_limit=95 * 60 * 3,
log_level="INFO",
failure_penalty=0,
# disable_env_checker=True, # For debugging
)
2026-03-09 19:07:29,064 gym INFO Calling env.reset() to get observation space
2026-03-09 19:07:29,064 gym INFO Resetting environment with seed=565513243
2026-03-09 19:07:29,066 scene.targets INFO Generating 7105 targets
2026-03-09 19:07:29,277 sats.satellite.EO INFO <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-03-09 19:07:31,109 gym INFO <0.00> Environment reset
First, reset the environment. It is possible to specify the seed when resetting the environment.
[8]:
observation, info = env.reset(seed=1)
2026-03-09 19:07:31,117 gym INFO Resetting environment with seed=1
2026-03-09 19:07:31,119 scene.targets INFO Generating 9920 targets
2026-03-09 19:07:31,357 sats.satellite.EO INFO <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-03-09 19:07:33,914 gym INFO <0.00> Environment reset
It is possible to printing out the actions and observations. The composed satellite action_description returns a human-readable action map each satellite has the same action space and similar observation space.
[9]:
print("Actions:", satellites[0].action_description)
print("States:", env.unwrapped.satellites[0].observation_description, "\n")
# Using the composed satellite features also provides a human-readable state:
for satellite in env.unwrapped.satellites:
for k, v in satellite.observation_builder.obs_dict().items():
print(f"{k}: {v}")
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']
States: [np.str_('sat_props.omega_BP_P_normd[0]'), np.str_('sat_props.omega_BP_P_normd[1]'), np.str_('sat_props.omega_BP_P_normd[2]'), np.str_('sat_props.c_hat_P[0]'), np.str_('sat_props.c_hat_P[1]'), np.str_('sat_props.c_hat_P[2]'), np.str_('sat_props.r_BN_P_normd[0]'), np.str_('sat_props.r_BN_P_normd[1]'), np.str_('sat_props.r_BN_P_normd[2]'), np.str_('sat_props.v_BN_P_normd[0]'), np.str_('sat_props.v_BN_P_normd[1]'), np.str_('sat_props.v_BN_P_normd[2]'), np.str_('sat_props.battery_charge_fraction'), np.str_('sat_props.solar_angle_norm'), np.str_('ground_station.ground_station_0.opportunity_open_normd'), np.str_('ground_station.ground_station_0.opportunity_close_normd'), np.str_('eclipse[0]'), np.str_('eclipse[1]'), np.str_('target.target_0.priority'), np.str_('target.target_0.prop_1'), np.str_('target.target_0.prop_2'), np.str_('target.target_1.priority'), np.str_('target.target_1.prop_1'), np.str_('target.target_1.prop_2'), np.str_('target.target_2.priority'), np.str_('target.target_2.prop_1'), np.str_('target.target_2.prop_2'), np.str_('target.target_3.priority'), np.str_('target.target_3.prop_1'), np.str_('target.target_3.prop_2'), np.str_('target.target_4.priority'), np.str_('target.target_4.prop_1'), np.str_('target.target_4.prop_2'), np.str_('target.target_5.priority'), np.str_('target.target_5.prop_1'), np.str_('target.target_5.prop_2'), np.str_('target.target_6.priority'), np.str_('target.target_6.prop_1'), np.str_('target.target_6.prop_2'), np.str_('target.target_7.priority'), np.str_('target.target_7.prop_1'), np.str_('target.target_7.prop_2'), np.str_('target.target_8.priority'), np.str_('target.target_8.prop_1'), np.str_('target.target_8.prop_2'), np.str_('target.target_9.priority'), np.str_('target.target_9.prop_1'), np.str_('target.target_9.prop_2'), np.str_('target.target_10.priority'), np.str_('target.target_10.prop_1'), np.str_('target.target_10.prop_2'), np.str_('target.target_11.priority'), np.str_('target.target_11.prop_1'), np.str_('target.target_11.prop_2'), np.str_('target.target_12.priority'), np.str_('target.target_12.prop_1'), np.str_('target.target_12.prop_2'), np.str_('target.target_13.priority'), np.str_('target.target_13.prop_1'), np.str_('target.target_13.prop_2'), np.str_('target.target_14.priority'), np.str_('target.target_14.prop_1'), np.str_('target.target_14.prop_2'), np.str_('target.target_15.priority'), np.str_('target.target_15.prop_1'), np.str_('target.target_15.prop_2'), np.str_('target.target_16.priority'), np.str_('target.target_16.prop_1'), np.str_('target.target_16.prop_2'), np.str_('target.target_17.priority'), np.str_('target.target_17.prop_1'), np.str_('target.target_17.prop_2'), np.str_('target.target_18.priority'), np.str_('target.target_18.prop_1'), np.str_('target.target_18.prop_2'), np.str_('target.target_19.priority'), np.str_('target.target_19.prop_1'), np.str_('target.target_19.prop_2'), np.str_('target.target_20.priority'), np.str_('target.target_20.prop_1'), np.str_('target.target_20.prop_2'), np.str_('target.target_21.priority'), np.str_('target.target_21.prop_1'), np.str_('target.target_21.prop_2'), np.str_('target.target_22.priority'), np.str_('target.target_22.prop_1'), np.str_('target.target_22.prop_2'), np.str_('target.target_23.priority'), np.str_('target.target_23.prop_1'), np.str_('target.target_23.prop_2'), np.str_('target.target_24.priority'), np.str_('target.target_24.prop_1'), np.str_('target.target_24.prop_2'), np.str_('target.target_25.priority'), np.str_('target.target_25.prop_1'), np.str_('target.target_25.prop_2'), np.str_('target.target_26.priority'), np.str_('target.target_26.prop_1'), np.str_('target.target_26.prop_2'), np.str_('target.target_27.priority'), np.str_('target.target_27.prop_1'), np.str_('target.target_27.prop_2'), np.str_('target.target_28.priority'), np.str_('target.target_28.prop_1'), np.str_('target.target_28.prop_2'), np.str_('target.target_29.priority'), np.str_('target.target_29.prop_1'), np.str_('target.target_29.prop_2'), np.str_('target.target_30.priority'), np.str_('target.target_30.prop_1'), np.str_('target.target_30.prop_2'), np.str_('target.target_31.priority'), np.str_('target.target_31.prop_1'), np.str_('target.target_31.prop_2'), np.str_('time')]
sat_props: {'omega_BP_P_normd': array([ 0.00275859, -0.00064194, -0.0038198 ]), 'c_hat_P': array([-0.92971139, -0.08402577, -0.35857551]), 'r_BN_P_normd': array([-0.86709638, 0.63816435, 0.03753885]), 'v_BN_P_normd': array([0.25160036, 0.28603904, 0.94893265]), 'battery_charge_fraction': 0.48805353449026784, 'solar_angle_norm': np.float64(0.3699294044324927)}
ground_station: {'ground_station_0': {'opportunity_open_normd': 0.5643954203724235, 'opportunity_close_normd': 0.6302962032834142}}
eclipse: [1.0, 1.0]
target: {'target_0': {'priority': 0.15188087924578286, 'prop_1': np.float64(0.99621184759255), 'prop_2': 0.01994306637679705}, 'target_1': {'priority': 0.45408991725807724, 'prop_1': np.float64(0.874052642439568), 'prop_2': 0.024897489369114685}, 'target_2': {'priority': 0.9974742584612157, 'prop_1': np.float64(0.23281787763016193), 'prop_2': 0.017187270653050937}, 'target_3': {'priority': 0.6226449255263621, 'prop_1': np.float64(0.16615572477135115), 'prop_2': 0.0397428591914165}, 'target_4': {'priority': 0.64110481456894, 'prop_1': np.float64(0.43956713900862204), 'prop_2': 0.0340473472529546}, 'target_5': {'priority': 0.06188246788512386, 'prop_1': np.float64(1.0), 'prop_2': 0.04915355747465875}, 'target_6': {'priority': 0.41637743150489814, 'prop_1': np.float64(0.6414641561471661), 'prop_2': 0.03964127131943236}, 'target_7': {'priority': 0.11649443653250835, 'prop_1': np.float64(1.0), 'prop_2': 0.030915002844493736}, 'target_8': {'priority': 0.024073691044198653, 'prop_1': np.float64(0.7824145445337269), 'prop_2': 0.012737288328598622}, 'target_9': {'priority': 0.9837855541915604, 'prop_1': np.float64(0.5999478704231446), 'prop_2': 0.041158164826759686}, 'target_10': {'priority': 0.5006195729230891, 'prop_1': np.float64(0.33257922871550927), 'prop_2': 0.030972496793019902}, 'target_11': {'priority': 0.9818994020158649, 'prop_1': np.float64(0.2795779616797209), 'prop_2': 0.014305523848347735}, 'target_12': {'priority': 0.34420130779211366, 'prop_1': np.float64(0.9921866170914561), 'prop_2': 0.025988506848865646}, 'target_13': {'priority': 0.03597928584932897, 'prop_1': np.float64(0.25849229848356386), 'prop_2': 0.02508709527630866}, 'target_14': {'priority': 0.6106826298238791, 'prop_1': np.float64(0.4331358500437723), 'prop_2': 0.04619760042322715}, 'target_15': {'priority': 0.6172276417522594, 'prop_1': np.float64(0.6040285964715363), 'prop_2': 0.021453269167399543}, 'target_16': {'priority': 0.4059609797467638, 'prop_1': np.float64(0.3150991123390838), 'prop_2': 0.026283028618400962}, 'target_17': {'priority': 0.618930423097489, 'prop_1': np.float64(0.26503065014605437), 'prop_2': 0.03970130222062493}, 'target_18': {'priority': 0.4534325175961308, 'prop_1': np.float64(0.1726335068120615), 'prop_2': 0.019029710522383173}, 'target_19': {'priority': 0.2191222392982266, 'prop_1': np.float64(0.6471546794019115), 'prop_2': 0.02363442279473462}, 'target_20': {'priority': 0.0012690216963487932, 'prop_1': np.float64(0.34316798721006386), 'prop_2': 0.024782907724775677}, 'target_21': {'priority': 0.8729048676586963, 'prop_1': np.float64(1.0), 'prop_2': 0.03974937121258252}, 'target_22': {'priority': 0.8112195342113623, 'prop_1': np.float64(1.0), 'prop_2': 0.044297123184459865}, 'target_23': {'priority': 0.7330033732927641, 'prop_1': np.float64(0.527906413489412), 'prop_2': 0.029396772692939825}, 'target_24': {'priority': 0.9621731191427757, 'prop_1': np.float64(1.0), 'prop_2': 0.020288225732818424}, 'target_25': {'priority': 0.9058084167065523, 'prop_1': np.float64(0.3745867778323258), 'prop_2': 0.04866955536519839}, 'target_26': {'priority': 0.7199403969458167, 'prop_1': np.float64(0.45615182138411925), 'prop_2': 0.04409986297714217}, 'target_27': {'priority': 0.0231224939829332, 'prop_1': np.float64(0.42635750848590165), 'prop_2': 0.03331115189104554}, 'target_28': {'priority': 0.8601729369162051, 'prop_1': np.float64(0.9538964971620012), 'prop_2': 0.03781681927036095}, 'target_29': {'priority': 0.0494800239061014, 'prop_1': np.float64(0.2245229655462288), 'prop_2': 0.012364549909917715}, 'target_30': {'priority': 0.19971974218805755, 'prop_1': np.float64(0.08501284636907142), 'prop_2': 0.030059267434030895}, 'target_31': {'priority': 0.9689104709978394, 'prop_1': np.float64(0.9468153199274215), 'prop_2': 0.02370500523690022}}
time: 0.0
Then, run the simulation until timeout or agent failure.
[10]:
count = 0
while True:
if count == 0:
# Vector with an action for each satellite (we can pass different actions for each satellite)
# Tasking all satellites to charge (tasking None as the first action will raise a warning)
action_vector = [0]
elif count == 1:
# None will continue the last action, but will also raise a warning
action_vector = [None]
elif count == 2:
# Tasking different actions for each satellite
action_vector = [1]
else:
# Tasking random actions
action_vector = env.action_space.sample()
count += 1
observation, reward, terminated, truncated, info = env.step(action_vector)
# Show the custom normalized observation vector
# print("\tObservation:", observation)
if terminated or truncated:
print("Episode complete.")
break
2026-03-09 19:07:33,927 gym INFO <0.00> === STARTING STEP ===
2026-03-09 19:07:33,928 sats.satellite.EO INFO <0.00> EO: action_charge tasked for 60.0 seconds
2026-03-09 19:07:33,928 sats.satellite.EO INFO <0.00> EO: setting timed terminal event at 60.0
2026-03-09 19:07:33,937 sats.satellite.EO INFO <60.00> EO: timed termination at 60.0 for action_charge
2026-03-09 19:07:33,939 data.base INFO <60.00> Total reward: {}
2026-03-09 19:07:33,940 comm.communication INFO <60.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:33,941 sats.satellite.EO INFO <60.00> EO: Satellite EO requires retasking
2026-03-09 19:07:33,967 gym INFO <60.00> Step reward: 0.0
2026-03-09 19:07:33,968 gym INFO <60.00> === STARTING STEP ===
2026-03-09 19:07:33,969 sats.satellite.EO WARNING <60.00> EO: Requires retasking but received no task.
2026-03-09 19:07:34,003 sim.simulator INFO <360.00> Max step duration reached
2026-03-09 19:07:34,005 data.base INFO <360.00> Total reward: {}
2026-03-09 19:07:34,005 comm.communication INFO <360.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,006 sats.satellite.EO INFO <360.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,033 gym INFO <360.00> Step reward: 0.0
2026-03-09 19:07:34,033 gym INFO <360.00> === STARTING STEP ===
2026-03-09 19:07:34,034 sats.satellite.EO INFO <360.00> EO: target index 0 tasked
2026-03-09 19:07:34,034 sats.satellite.EO INFO <360.00> EO: Target(tgt-7918) tasked for imaging
2026-03-09 19:07:34,035 sats.satellite.EO INFO <360.00> EO: Target(tgt-7918) window enabled: 256.2 to 377.2
2026-03-09 19:07:34,036 sats.satellite.EO INFO <360.00> EO: setting timed terminal event at 377.2
2026-03-09 19:07:34,042 sats.satellite.EO INFO <377.50> EO: timed termination at 377.2 for Target(tgt-7918) window
2026-03-09 19:07:34,044 data.base INFO <377.50> Total reward: {}
2026-03-09 19:07:34,044 comm.communication INFO <377.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,046 sats.satellite.EO INFO <377.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,073 gym INFO <377.50> Step reward: 0.0
2026-03-09 19:07:34,073 gym INFO <377.50> === STARTING STEP ===
2026-03-09 19:07:34,074 sats.satellite.EO INFO <377.50> EO: target index 19 tasked
2026-03-09 19:07:34,074 sats.satellite.EO INFO <377.50> EO: Target(tgt-8899) tasked for imaging
2026-03-09 19:07:34,075 sats.satellite.EO INFO <377.50> EO: Target(tgt-8899) window enabled: 427.1 to 549.2
2026-03-09 19:07:34,076 sats.satellite.EO INFO <377.50> EO: setting timed terminal event at 549.2
2026-03-09 19:07:34,095 sats.satellite.EO INFO <433.00> EO: imaged Target(tgt-8899)
2026-03-09 19:07:34,096 data.base INFO <433.00> Total reward: {}
2026-03-09 19:07:34,097 comm.communication INFO <433.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,098 sats.satellite.EO INFO <433.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,124 gym INFO <433.00> Step reward: 0.0
2026-03-09 19:07:34,125 gym INFO <433.00> === STARTING STEP ===
2026-03-09 19:07:34,125 sats.satellite.EO INFO <433.00> EO: target index 16 tasked
2026-03-09 19:07:34,126 sats.satellite.EO INFO <433.00> EO: Target(tgt-7365) tasked for imaging
2026-03-09 19:07:34,126 sats.satellite.EO INFO <433.00> EO: Target(tgt-7365) window enabled: 520.7 to 581.1
2026-03-09 19:07:34,127 sats.satellite.EO INFO <433.00> EO: setting timed terminal event at 581.1
2026-03-09 19:07:34,150 sats.satellite.EO INFO <522.00> EO: imaged Target(tgt-7365)
2026-03-09 19:07:34,151 data.base INFO <522.00> Total reward: {}
2026-03-09 19:07:34,152 comm.communication INFO <522.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,153 sats.satellite.EO INFO <522.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,181 gym INFO <522.00> Step reward: 0.0
2026-03-09 19:07:34,181 gym INFO <522.00> === STARTING STEP ===
2026-03-09 19:07:34,182 sats.satellite.EO INFO <522.00> EO: target index 16 tasked
2026-03-09 19:07:34,182 sats.satellite.EO INFO <522.00> EO: Target(tgt-5550) tasked for imaging
2026-03-09 19:07:34,184 sats.satellite.EO INFO <522.00> EO: Target(tgt-5550) window enabled: 516.0 to 636.5
2026-03-09 19:07:34,184 sats.satellite.EO INFO <522.00> EO: setting timed terminal event at 636.5
2026-03-09 19:07:34,193 sats.satellite.EO INFO <553.50> EO: imaged Target(tgt-5550)
2026-03-09 19:07:34,194 data.base INFO <553.50> Total reward: {'EO': np.float64(0.005866034094078391)}
2026-03-09 19:07:34,195 comm.communication INFO <553.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,196 sats.satellite.EO INFO <553.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,224 gym INFO <553.50> Step reward: 0.005866034094078391
2026-03-09 19:07:34,225 gym INFO <553.50> === STARTING STEP ===
2026-03-09 19:07:34,225 sats.satellite.EO INFO <553.50> EO: target index 22 tasked
2026-03-09 19:07:34,226 sats.satellite.EO INFO <553.50> EO: Target(tgt-7055) tasked for imaging
2026-03-09 19:07:34,227 sats.satellite.EO INFO <553.50> EO: Target(tgt-7055) window enabled: 634.9 to 733.2
2026-03-09 19:07:34,227 sats.satellite.EO INFO <553.50> EO: setting timed terminal event at 733.2
2026-03-09 19:07:34,249 sats.satellite.EO INFO <636.00> EO: imaged Target(tgt-7055)
2026-03-09 19:07:34,250 data.base INFO <636.00> Total reward: {}
2026-03-09 19:07:34,250 comm.communication INFO <636.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,252 sats.satellite.EO INFO <636.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,278 gym INFO <636.00> Step reward: 0.0
2026-03-09 19:07:34,278 gym INFO <636.00> === STARTING STEP ===
2026-03-09 19:07:34,279 sats.satellite.EO INFO <636.00> EO: target index 6 tasked
2026-03-09 19:07:34,279 sats.satellite.EO INFO <636.00> EO: Target(tgt-7965) tasked for imaging
2026-03-09 19:07:34,280 sats.satellite.EO INFO <636.00> EO: Target(tgt-7965) window enabled: 577.7 to 687.6
2026-03-09 19:07:34,281 sats.satellite.EO INFO <636.00> EO: setting timed terminal event at 687.6
2026-03-09 19:07:34,291 sats.satellite.EO INFO <672.50> EO: imaged Target(tgt-7965)
2026-03-09 19:07:34,292 data.base INFO <672.50> Total reward: {}
2026-03-09 19:07:34,293 comm.communication INFO <672.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,294 sats.satellite.EO INFO <672.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,321 gym INFO <672.50> Step reward: 0.0
2026-03-09 19:07:34,321 gym INFO <672.50> === STARTING STEP ===
2026-03-09 19:07:34,322 sats.satellite.EO INFO <672.50> EO: target index 16 tasked
2026-03-09 19:07:34,322 sats.satellite.EO INFO <672.50> EO: Target(tgt-849) tasked for imaging
2026-03-09 19:07:34,323 sats.satellite.EO INFO <672.50> EO: Target(tgt-849) window enabled: 705.6 to 822.5
2026-03-09 19:07:34,323 sats.satellite.EO INFO <672.50> EO: setting timed terminal event at 822.5
2026-03-09 19:07:34,339 sats.satellite.EO INFO <729.00> EO: imaged Target(tgt-849)
2026-03-09 19:07:34,340 data.base INFO <729.00> Total reward: {}
2026-03-09 19:07:34,340 comm.communication INFO <729.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,341 sats.satellite.EO INFO <729.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,368 gym INFO <729.00> Step reward: 0.0
2026-03-09 19:07:34,368 gym INFO <729.00> === STARTING STEP ===
2026-03-09 19:07:34,369 sats.satellite.EO INFO <729.00> EO: target index 15 tasked
2026-03-09 19:07:34,369 sats.satellite.EO INFO <729.00> EO: Target(tgt-8473) tasked for imaging
2026-03-09 19:07:34,370 sats.satellite.EO INFO <729.00> EO: Target(tgt-8473) window enabled: 812.5 to 870.1
2026-03-09 19:07:34,371 sats.satellite.EO INFO <729.00> EO: setting timed terminal event at 870.1
2026-03-09 19:07:34,392 sats.satellite.EO INFO <814.00> EO: imaged Target(tgt-8473)
2026-03-09 19:07:34,394 data.base INFO <814.00> Total reward: {}
2026-03-09 19:07:34,394 comm.communication INFO <814.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,395 sats.satellite.EO INFO <814.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,423 gym INFO <814.00> Step reward: 0.0
2026-03-09 19:07:34,423 gym INFO <814.00> === STARTING STEP ===
2026-03-09 19:07:34,424 sats.satellite.EO INFO <814.00> EO: target index 4 tasked
2026-03-09 19:07:34,424 sats.satellite.EO INFO <814.00> EO: Target(tgt-2122) tasked for imaging
2026-03-09 19:07:34,425 sats.satellite.EO INFO <814.00> EO: Target(tgt-2122) window enabled: 748.1 to 865.8
2026-03-09 19:07:34,426 sats.satellite.EO INFO <814.00> EO: setting timed terminal event at 865.8
2026-03-09 19:07:34,438 sats.satellite.EO INFO <856.50> EO: imaged Target(tgt-2122)
2026-03-09 19:07:34,439 data.base INFO <856.50> Total reward: {}
2026-03-09 19:07:34,440 comm.communication INFO <856.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,440 sats.satellite.EO INFO <856.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,467 gym INFO <856.50> Step reward: 0.0
2026-03-09 19:07:34,468 gym INFO <856.50> === STARTING STEP ===
2026-03-09 19:07:34,468 sats.satellite.EO INFO <856.50> EO: target index 3 tasked
2026-03-09 19:07:34,469 sats.satellite.EO INFO <856.50> EO: Target(tgt-3571) tasked for imaging
2026-03-09 19:07:34,469 sats.satellite.EO INFO <856.50> EO: Target(tgt-3571) window enabled: 814.3 to 897.8
2026-03-09 19:07:34,470 sats.satellite.EO INFO <856.50> EO: setting timed terminal event at 897.8
2026-03-09 19:07:34,480 sats.satellite.EO INFO <891.00> EO: imaged Target(tgt-3571)
2026-03-09 19:07:34,481 data.base INFO <891.00> Total reward: {}
2026-03-09 19:07:34,482 comm.communication INFO <891.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,483 sats.satellite.EO INFO <891.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,511 gym INFO <891.00> Step reward: 0.0
2026-03-09 19:07:34,512 gym INFO <891.00> === STARTING STEP ===
2026-03-09 19:07:34,512 sats.satellite.EO INFO <891.00> EO: target index 3 tasked
2026-03-09 19:07:34,513 sats.satellite.EO INFO <891.00> EO: Target(tgt-1146) tasked for imaging
2026-03-09 19:07:34,514 sats.satellite.EO INFO <891.00> EO: Target(tgt-1146) window enabled: 813.0 to 922.3
2026-03-09 19:07:34,514 sats.satellite.EO INFO <891.00> EO: setting timed terminal event at 922.3
2026-03-09 19:07:34,523 sats.satellite.EO INFO <922.50> EO: timed termination at 922.3 for Target(tgt-1146) window
2026-03-09 19:07:34,525 data.base INFO <922.50> Total reward: {}
2026-03-09 19:07:34,525 comm.communication INFO <922.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,526 sats.satellite.EO INFO <922.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,554 gym INFO <922.50> Step reward: 0.0
2026-03-09 19:07:34,554 gym INFO <922.50> === STARTING STEP ===
2026-03-09 19:07:34,555 sats.satellite.EO INFO <922.50> EO: target index 4 tasked
2026-03-09 19:07:34,556 sats.satellite.EO INFO <922.50> EO: Target(tgt-6054) tasked for imaging
2026-03-09 19:07:34,556 sats.satellite.EO INFO <922.50> EO: Target(tgt-6054) window enabled: 870.6 to 991.3
2026-03-09 19:07:34,557 sats.satellite.EO INFO <922.50> EO: setting timed terminal event at 991.3
2026-03-09 19:07:34,568 sats.satellite.EO INFO <962.00> EO: imaged Target(tgt-6054)
2026-03-09 19:07:34,569 data.base INFO <962.00> Total reward: {'EO': np.float64(0.2308835475704117)}
2026-03-09 19:07:34,570 comm.communication INFO <962.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,571 sats.satellite.EO INFO <962.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,598 gym INFO <962.00> Step reward: 0.2308835475704117
2026-03-09 19:07:34,598 gym INFO <962.00> === STARTING STEP ===
2026-03-09 19:07:34,599 sats.satellite.EO INFO <962.00> EO: target index 10 tasked
2026-03-09 19:07:34,600 sats.satellite.EO INFO <962.00> EO: Target(tgt-9302) tasked for imaging
2026-03-09 19:07:34,600 sats.satellite.EO INFO <962.00> EO: Target(tgt-9302) window enabled: 949.4 to 1069.2
2026-03-09 19:07:34,601 sats.satellite.EO INFO <962.00> EO: setting timed terminal event at 1069.2
2026-03-09 19:07:34,613 sats.satellite.EO INFO <1007.50> EO: imaged Target(tgt-9302)
2026-03-09 19:07:34,614 data.base INFO <1007.50> Total reward: {}
2026-03-09 19:07:34,615 comm.communication INFO <1007.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,616 sats.satellite.EO INFO <1007.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,643 gym INFO <1007.50> Step reward: 0.0
2026-03-09 19:07:34,644 gym INFO <1007.50> === STARTING STEP ===
2026-03-09 19:07:34,644 sats.satellite.EO INFO <1007.50> EO: target index 18 tasked
2026-03-09 19:07:34,645 sats.satellite.EO INFO <1007.50> EO: Target(tgt-9381) tasked for imaging
2026-03-09 19:07:34,645 sats.satellite.EO INFO <1007.50> EO: Target(tgt-9381) window enabled: 1088.2 to 1163.2
2026-03-09 19:07:34,646 sats.satellite.EO INFO <1007.50> EO: setting timed terminal event at 1163.2
2026-03-09 19:07:34,670 sats.satellite.EO INFO <1089.50> EO: imaged Target(tgt-9381)
2026-03-09 19:07:34,672 data.base INFO <1089.50> Total reward: {}
2026-03-09 19:07:34,672 comm.communication INFO <1089.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,673 sats.satellite.EO INFO <1089.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,701 gym INFO <1089.50> Step reward: 0.0
2026-03-09 19:07:34,701 gym INFO <1089.50> === STARTING STEP ===
2026-03-09 19:07:34,702 sats.satellite.EO INFO <1089.50> EO: target index 20 tasked
2026-03-09 19:07:34,702 sats.satellite.EO INFO <1089.50> EO: Target(tgt-4368) tasked for imaging
2026-03-09 19:07:34,703 sats.satellite.EO INFO <1089.50> EO: Target(tgt-4368) window enabled: 1122.2 to 1243.4
2026-03-09 19:07:34,703 sats.satellite.EO INFO <1089.50> EO: setting timed terminal event at 1243.4
2026-03-09 19:07:34,715 sats.satellite.EO INFO <1130.50> EO: imaged Target(tgt-4368)
2026-03-09 19:07:34,716 data.base INFO <1130.50> Total reward: {'EO': np.float64(0.2298679947660293)}
2026-03-09 19:07:34,717 comm.communication INFO <1130.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,718 sats.satellite.EO INFO <1130.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,746 gym INFO <1130.50> Step reward: 0.2298679947660293
2026-03-09 19:07:34,747 gym INFO <1130.50> === STARTING STEP ===
2026-03-09 19:07:34,748 sats.satellite.EO INFO <1130.50> EO: target index 25 tasked
2026-03-09 19:07:34,748 sats.satellite.EO INFO <1130.50> EO: Target(tgt-7842) tasked for imaging
2026-03-09 19:07:34,749 sats.satellite.EO INFO <1130.50> EO: Target(tgt-7842) window enabled: 1338.8 to 1349.9
2026-03-09 19:07:34,749 sats.satellite.EO INFO <1130.50> EO: setting timed terminal event at 1349.9
2026-03-09 19:07:34,816 sats.satellite.EO INFO <1340.00> EO: imaged Target(tgt-7842)
2026-03-09 19:07:34,817 data.base INFO <1340.00> Total reward: {}
2026-03-09 19:07:34,818 comm.communication INFO <1340.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,819 sats.satellite.EO INFO <1340.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,846 gym INFO <1340.00> Step reward: 0.0
2026-03-09 19:07:34,847 gym INFO <1340.00> === STARTING STEP ===
2026-03-09 19:07:34,847 sats.satellite.EO INFO <1340.00> EO: target index 21 tasked
2026-03-09 19:07:34,848 sats.satellite.EO INFO <1340.00> EO: Target(tgt-9891) tasked for imaging
2026-03-09 19:07:34,848 sats.satellite.EO INFO <1340.00> EO: Target(tgt-9891) window enabled: 1412.0 to 1505.5
2026-03-09 19:07:34,849 sats.satellite.EO INFO <1340.00> EO: setting timed terminal event at 1505.5
2026-03-09 19:07:34,868 sats.satellite.EO INFO <1413.50> EO: imaged Target(tgt-9891)
2026-03-09 19:07:34,869 data.base INFO <1413.50> Total reward: {'EO': np.float64(0.21120734375904054)}
2026-03-09 19:07:34,870 comm.communication INFO <1413.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,871 sats.satellite.EO INFO <1413.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,898 gym INFO <1413.50> Step reward: 0.21120734375904054
2026-03-09 19:07:34,898 gym INFO <1413.50> === STARTING STEP ===
2026-03-09 19:07:34,899 sats.satellite.EO INFO <1413.50> EO: target index 5 tasked
2026-03-09 19:07:34,900 sats.satellite.EO INFO <1413.50> EO: Target(tgt-174) tasked for imaging
2026-03-09 19:07:34,901 sats.satellite.EO INFO <1413.50> EO: Target(tgt-174) window enabled: 1323.0 to 1440.8
2026-03-09 19:07:34,901 sats.satellite.EO INFO <1413.50> EO: setting timed terminal event at 1440.8
2026-03-09 19:07:34,909 sats.satellite.EO INFO <1441.00> EO: timed termination at 1440.8 for Target(tgt-174) window
2026-03-09 19:07:34,911 data.base INFO <1441.00> Total reward: {}
2026-03-09 19:07:34,911 comm.communication INFO <1441.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,912 sats.satellite.EO INFO <1441.00> EO: Satellite EO requires retasking
2026-03-09 19:07:34,940 gym INFO <1441.00> Step reward: 0.0
2026-03-09 19:07:34,941 gym INFO <1441.00> === STARTING STEP ===
2026-03-09 19:07:34,941 sats.satellite.EO INFO <1441.00> EO: target index 15 tasked
2026-03-09 19:07:34,942 sats.satellite.EO INFO <1441.00> EO: Target(tgt-9152) tasked for imaging
2026-03-09 19:07:34,942 sats.satellite.EO INFO <1441.00> EO: Target(tgt-9152) window enabled: 1497.7 to 1617.4
2026-03-09 19:07:34,944 sats.satellite.EO INFO <1441.00> EO: setting timed terminal event at 1617.4
2026-03-09 19:07:34,966 sats.satellite.EO INFO <1512.50> EO: imaged Target(tgt-9152)
2026-03-09 19:07:34,968 data.base INFO <1512.50> Total reward: {'EO': np.float64(0.20718741393115475)}
2026-03-09 19:07:34,968 comm.communication INFO <1512.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:34,969 sats.satellite.EO INFO <1512.50> EO: Satellite EO requires retasking
2026-03-09 19:07:34,996 gym INFO <1512.50> Step reward: 0.20718741393115475
2026-03-09 19:07:34,997 gym INFO <1512.50> === STARTING STEP ===
2026-03-09 19:07:34,998 sats.satellite.EO INFO <1512.50> EO: target index 18 tasked
2026-03-09 19:07:34,998 sats.satellite.EO INFO <1512.50> EO: Target(tgt-2495) tasked for imaging
2026-03-09 19:07:35,000 sats.satellite.EO INFO <1512.50> EO: Target(tgt-2495) window enabled: 1586.7 to 1703.1
2026-03-09 19:07:35,000 sats.satellite.EO INFO <1512.50> EO: setting timed terminal event at 1703.1
2026-03-09 19:07:35,022 sats.satellite.EO INFO <1588.00> EO: imaged Target(tgt-2495)
2026-03-09 19:07:35,023 data.base INFO <1588.00> Total reward: {'EO': np.float64(0.6940156410912659)}
2026-03-09 19:07:35,023 comm.communication INFO <1588.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,024 sats.satellite.EO INFO <1588.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,053 gym INFO <1588.00> Step reward: 0.6940156410912659
2026-03-09 19:07:35,053 gym INFO <1588.00> === STARTING STEP ===
2026-03-09 19:07:35,054 sats.satellite.EO INFO <1588.00> EO: action_charge tasked for 60.0 seconds
2026-03-09 19:07:35,054 sats.satellite.EO INFO <1588.00> EO: setting timed terminal event at 1648.0
2026-03-09 19:07:35,063 sats.satellite.EO INFO <1648.00> EO: timed termination at 1648.0 for action_charge
2026-03-09 19:07:35,064 data.base INFO <1648.00> Total reward: {}
2026-03-09 19:07:35,065 comm.communication INFO <1648.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,066 sats.satellite.EO INFO <1648.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,094 gym INFO <1648.00> Step reward: 0.0
2026-03-09 19:07:35,095 gym INFO <1648.00> === STARTING STEP ===
2026-03-09 19:07:35,096 sats.satellite.EO INFO <1648.00> EO: target index 9 tasked
2026-03-09 19:07:35,096 sats.satellite.EO INFO <1648.00> EO: Target(tgt-726) tasked for imaging
2026-03-09 19:07:35,097 sats.satellite.EO INFO <1648.00> EO: Target(tgt-726) window enabled: 1638.3 to 1742.5
2026-03-09 19:07:35,098 sats.satellite.EO INFO <1648.00> EO: setting timed terminal event at 1742.5
2026-03-09 19:07:35,114 sats.satellite.EO INFO <1696.00> EO: imaged Target(tgt-726)
2026-03-09 19:07:35,115 data.base INFO <1696.00> Total reward: {'EO': np.float64(0.04877489751309032)}
2026-03-09 19:07:35,115 comm.communication INFO <1696.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,116 sats.satellite.EO INFO <1696.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,143 gym INFO <1696.00> Step reward: 0.04877489751309032
2026-03-09 19:07:35,144 gym INFO <1696.00> === STARTING STEP ===
2026-03-09 19:07:35,145 sats.satellite.EO INFO <1696.00> EO: target index 20 tasked
2026-03-09 19:07:35,145 sats.satellite.EO INFO <1696.00> EO: Target(tgt-545) tasked for imaging
2026-03-09 19:07:35,146 sats.satellite.EO INFO <1696.00> EO: Target(tgt-545) window enabled: 1859.7 to 1921.8
2026-03-09 19:07:35,146 sats.satellite.EO INFO <1696.00> EO: setting timed terminal event at 1921.8
2026-03-09 19:07:35,192 sats.satellite.EO INFO <1861.00> EO: imaged Target(tgt-545)
2026-03-09 19:07:35,193 data.base INFO <1861.00> Total reward: {'EO': np.float64(0.09674169217802171)}
2026-03-09 19:07:35,193 comm.communication INFO <1861.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,194 sats.satellite.EO INFO <1861.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,222 gym INFO <1861.00> Step reward: 0.09674169217802171
2026-03-09 19:07:35,223 gym INFO <1861.00> === STARTING STEP ===
2026-03-09 19:07:35,223 sats.satellite.EO INFO <1861.00> EO: target index 4 tasked
2026-03-09 19:07:35,224 sats.satellite.EO INFO <1861.00> EO: Target(tgt-4676) tasked for imaging
2026-03-09 19:07:35,224 sats.satellite.EO INFO <1861.00> EO: Target(tgt-4676) window enabled: 1842.3 to 1923.8
2026-03-09 19:07:35,225 sats.satellite.EO INFO <1861.00> EO: setting timed terminal event at 1923.8
2026-03-09 19:07:35,242 sats.satellite.EO INFO <1924.00> EO: timed termination at 1923.8 for Target(tgt-4676) window
2026-03-09 19:07:35,243 data.base INFO <1924.00> Total reward: {}
2026-03-09 19:07:35,244 comm.communication INFO <1924.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,245 sats.satellite.EO INFO <1924.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,272 gym INFO <1924.00> Step reward: 0.0
2026-03-09 19:07:35,273 gym INFO <1924.00> === STARTING STEP ===
2026-03-09 19:07:35,273 sats.satellite.EO INFO <1924.00> EO: target index 8 tasked
2026-03-09 19:07:35,274 sats.satellite.EO INFO <1924.00> EO: Target(tgt-5769) tasked for imaging
2026-03-09 19:07:35,274 sats.satellite.EO INFO <1924.00> EO: Target(tgt-5769) window enabled: 1909.0 to 2012.3
2026-03-09 19:07:35,275 sats.satellite.EO INFO <1924.00> EO: setting timed terminal event at 2012.3
2026-03-09 19:07:35,298 sats.satellite.EO INFO <2012.50> EO: timed termination at 2012.3 for Target(tgt-5769) window
2026-03-09 19:07:35,300 data.base INFO <2012.50> Total reward: {}
2026-03-09 19:07:35,300 comm.communication INFO <2012.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,301 sats.satellite.EO INFO <2012.50> EO: Satellite EO requires retasking
2026-03-09 19:07:35,330 gym INFO <2012.50> Step reward: 0.0
2026-03-09 19:07:35,330 gym INFO <2012.50> === STARTING STEP ===
2026-03-09 19:07:35,331 sats.satellite.EO INFO <2012.50> EO: target index 13 tasked
2026-03-09 19:07:35,331 sats.satellite.EO INFO <2012.50> EO: Target(tgt-3550) tasked for imaging
2026-03-09 19:07:35,333 sats.satellite.EO INFO <2012.50> EO: Target(tgt-3550) window enabled: 2060.7 to 2181.2
2026-03-09 19:07:35,333 sats.satellite.EO INFO <2012.50> EO: setting timed terminal event at 2181.2
2026-03-09 19:07:35,377 sats.satellite.EO INFO <2181.50> EO: timed termination at 2181.2 for Target(tgt-3550) window
2026-03-09 19:07:35,378 data.base INFO <2181.50> Total reward: {}
2026-03-09 19:07:35,379 comm.communication INFO <2181.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,380 sats.satellite.EO INFO <2181.50> EO: Satellite EO requires retasking
2026-03-09 19:07:35,409 gym INFO <2181.50> Step reward: 0.0
2026-03-09 19:07:35,409 gym INFO <2181.50> === STARTING STEP ===
2026-03-09 19:07:35,410 sats.satellite.EO INFO <2181.50> EO: target index 14 tasked
2026-03-09 19:07:35,410 sats.satellite.EO INFO <2181.50> EO: Target(tgt-1288) tasked for imaging
2026-03-09 19:07:35,411 sats.satellite.EO INFO <2181.50> EO: Target(tgt-1288) window enabled: 2145.3 to 2249.2
2026-03-09 19:07:35,411 sats.satellite.EO INFO <2181.50> EO: setting timed terminal event at 2249.2
2026-03-09 19:07:35,430 sats.satellite.EO INFO <2249.50> EO: timed termination at 2249.2 for Target(tgt-1288) window
2026-03-09 19:07:35,432 data.base INFO <2249.50> Total reward: {}
2026-03-09 19:07:35,432 comm.communication INFO <2249.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,433 sats.satellite.EO INFO <2249.50> EO: Satellite EO requires retasking
2026-03-09 19:07:35,462 gym INFO <2249.50> Step reward: 0.0
2026-03-09 19:07:35,462 gym INFO <2249.50> === STARTING STEP ===
2026-03-09 19:07:35,463 sats.satellite.EO INFO <2249.50> EO: target index 18 tasked
2026-03-09 19:07:35,464 sats.satellite.EO INFO <2249.50> EO: Target(tgt-4104) tasked for imaging
2026-03-09 19:07:35,464 sats.satellite.EO INFO <2249.50> EO: Target(tgt-4104) window enabled: 2276.2 to 2374.8
2026-03-09 19:07:35,465 sats.satellite.EO INFO <2249.50> EO: setting timed terminal event at 2374.8
2026-03-09 19:07:35,496 sats.satellite.EO INFO <2375.00> EO: timed termination at 2374.8 for Target(tgt-4104) window
2026-03-09 19:07:35,497 data.base INFO <2375.00> Total reward: {}
2026-03-09 19:07:35,498 comm.communication INFO <2375.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,499 sats.satellite.EO INFO <2375.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,527 gym INFO <2375.00> Step reward: 0.0
2026-03-09 19:07:35,528 gym INFO <2375.00> === STARTING STEP ===
2026-03-09 19:07:35,528 sats.satellite.EO INFO <2375.00> EO: target index 25 tasked
2026-03-09 19:07:35,529 sats.satellite.EO INFO <2375.00> EO: Target(tgt-5222) tasked for imaging
2026-03-09 19:07:35,530 sats.satellite.EO INFO <2375.00> EO: Target(tgt-5222) window enabled: 2426.6 to 2536.6
2026-03-09 19:07:35,531 sats.satellite.EO INFO <2375.00> EO: setting timed terminal event at 2536.6
2026-03-09 19:07:35,571 sats.satellite.EO INFO <2537.00> EO: timed termination at 2536.6 for Target(tgt-5222) window
2026-03-09 19:07:35,572 data.base INFO <2537.00> Total reward: {}
2026-03-09 19:07:35,572 comm.communication INFO <2537.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,573 sats.satellite.EO INFO <2537.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,602 gym INFO <2537.00> Step reward: 0.0
2026-03-09 19:07:35,603 gym INFO <2537.00> === STARTING STEP ===
2026-03-09 19:07:35,603 sats.satellite.EO INFO <2537.00> EO: target index 9 tasked
2026-03-09 19:07:35,604 sats.satellite.EO INFO <2537.00> EO: Target(tgt-3867) tasked for imaging
2026-03-09 19:07:35,604 sats.satellite.EO INFO <2537.00> EO: Target(tgt-3867) window enabled: 2597.3 to 2621.2
2026-03-09 19:07:35,605 sats.satellite.EO INFO <2537.00> EO: setting timed terminal event at 2621.2
2026-03-09 19:07:35,627 sats.satellite.EO INFO <2621.50> EO: timed termination at 2621.2 for Target(tgt-3867) window
2026-03-09 19:07:35,628 data.base INFO <2621.50> Total reward: {}
2026-03-09 19:07:35,629 comm.communication INFO <2621.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,630 sats.satellite.EO INFO <2621.50> EO: Satellite EO requires retasking
2026-03-09 19:07:35,658 gym INFO <2621.50> Step reward: 0.0
2026-03-09 19:07:35,659 gym INFO <2621.50> === STARTING STEP ===
2026-03-09 19:07:35,659 sats.satellite.EO INFO <2621.50> EO: target index 16 tasked
2026-03-09 19:07:35,660 sats.satellite.EO INFO <2621.50> EO: Target(tgt-4745) tasked for imaging
2026-03-09 19:07:35,661 sats.satellite.EO INFO <2621.50> EO: Target(tgt-4745) window enabled: 2657.6 to 2776.0
2026-03-09 19:07:35,661 sats.satellite.EO INFO <2621.50> EO: setting timed terminal event at 2776.0
2026-03-09 19:07:35,704 sats.satellite.EO INFO <2776.00> EO: timed termination at 2776.0 for Target(tgt-4745) window
2026-03-09 19:07:35,706 data.base INFO <2776.00> Total reward: {}
2026-03-09 19:07:35,706 comm.communication INFO <2776.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,707 sats.satellite.EO INFO <2776.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,736 gym INFO <2776.00> Step reward: 0.0
2026-03-09 19:07:35,737 gym INFO <2776.00> === STARTING STEP ===
2026-03-09 19:07:35,737 sats.satellite.EO INFO <2776.00> EO: target index 22 tasked
2026-03-09 19:07:35,737 sats.satellite.EO INFO <2776.00> EO: Target(tgt-8397) tasked for imaging
2026-03-09 19:07:35,738 sats.satellite.EO INFO <2776.00> EO: Target(tgt-8397) window enabled: 2859.9 to 2908.8
2026-03-09 19:07:35,739 sats.satellite.EO INFO <2776.00> EO: setting timed terminal event at 2908.8
2026-03-09 19:07:35,772 sats.satellite.EO INFO <2909.00> EO: timed termination at 2908.8 for Target(tgt-8397) window
2026-03-09 19:07:35,773 data.base INFO <2909.00> Total reward: {}
2026-03-09 19:07:35,774 comm.communication INFO <2909.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,775 sats.satellite.EO INFO <2909.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,803 gym INFO <2909.00> Step reward: 0.0
2026-03-09 19:07:35,804 gym INFO <2909.00> === STARTING STEP ===
2026-03-09 19:07:35,805 sats.satellite.EO INFO <2909.00> EO: target index 26 tasked
2026-03-09 19:07:35,805 sats.satellite.EO INFO <2909.00> EO: Target(tgt-8670) tasked for imaging
2026-03-09 19:07:35,806 sats.satellite.EO INFO <2909.00> EO: Target(tgt-8670) window enabled: 3048.9 to 3154.1
2026-03-09 19:07:35,806 sats.satellite.EO INFO <2909.00> EO: setting timed terminal event at 3154.1
2026-03-09 19:07:35,866 sats.satellite.EO INFO <3154.50> EO: timed termination at 3154.1 for Target(tgt-8670) window
2026-03-09 19:07:35,867 data.base INFO <3154.50> Total reward: {}
2026-03-09 19:07:35,868 comm.communication INFO <3154.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,869 sats.satellite.EO INFO <3154.50> EO: Satellite EO requires retasking
2026-03-09 19:07:35,897 gym INFO <3154.50> Step reward: 0.0
2026-03-09 19:07:35,898 gym INFO <3154.50> === STARTING STEP ===
2026-03-09 19:07:35,899 sats.satellite.EO INFO <3154.50> EO: target index 9 tasked
2026-03-09 19:07:35,899 sats.satellite.EO INFO <3154.50> EO: Target(tgt-1264) tasked for imaging
2026-03-09 19:07:35,900 sats.satellite.EO INFO <3154.50> EO: Target(tgt-1264) window enabled: 3087.3 to 3207.5
2026-03-09 19:07:35,900 sats.satellite.EO INFO <3154.50> EO: setting timed terminal event at 3207.5
2026-03-09 19:07:35,915 sats.satellite.EO INFO <3208.00> EO: timed termination at 3207.5 for Target(tgt-1264) window
2026-03-09 19:07:35,916 data.base INFO <3208.00> Total reward: {}
2026-03-09 19:07:35,917 comm.communication INFO <3208.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:35,918 sats.satellite.EO INFO <3208.00> EO: Satellite EO requires retasking
2026-03-09 19:07:35,946 gym INFO <3208.00> Step reward: 0.0
2026-03-09 19:07:35,946 gym INFO <3208.00> === STARTING STEP ===
2026-03-09 19:07:35,947 sats.satellite.EO INFO <3208.00> EO: target index 30 tasked
2026-03-09 19:07:35,948 sats.satellite.EO INFO <3208.00> EO: Target(tgt-7387) tasked for imaging
2026-03-09 19:07:35,949 sats.satellite.EO INFO <3208.00> EO: Target(tgt-7387) window enabled: 3428.0 to 3534.7
2026-03-09 19:07:35,949 sats.satellite.EO INFO <3208.00> EO: setting timed terminal event at 3534.7
2026-03-09 19:07:36,039 sim.simulator INFO <3508.00> Max step duration reached
2026-03-09 19:07:36,040 data.base INFO <3508.00> Total reward: {}
2026-03-09 19:07:36,041 comm.communication INFO <3508.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,071 gym INFO <3508.00> Step reward: 0.0
2026-03-09 19:07:36,072 gym INFO <3508.00> === STARTING STEP ===
2026-03-09 19:07:36,072 sats.satellite.EO INFO <3508.00> EO: target index 15 tasked
2026-03-09 19:07:36,073 sats.satellite.EO INFO <3508.00> EO: Target(tgt-7716) tasked for imaging
2026-03-09 19:07:36,073 sats.satellite.EO INFO <3508.00> EO: Target(tgt-7716) window enabled: 3529.6 to 3636.7
2026-03-09 19:07:36,074 sats.satellite.EO INFO <3508.00> EO: setting timed terminal event at 3636.7
2026-03-09 19:07:36,115 sats.satellite.EO INFO <3637.00> EO: timed termination at 3636.7 for Target(tgt-7716) window
2026-03-09 19:07:36,116 data.base INFO <3637.00> Total reward: {}
2026-03-09 19:07:36,116 comm.communication INFO <3637.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,117 sats.satellite.EO INFO <3637.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,146 gym INFO <3637.00> Step reward: 0.0
2026-03-09 19:07:36,147 gym INFO <3637.00> === STARTING STEP ===
2026-03-09 19:07:36,147 sats.satellite.EO INFO <3637.00> EO: target index 29 tasked
2026-03-09 19:07:36,148 sats.satellite.EO INFO <3637.00> EO: Target(tgt-856) tasked for imaging
2026-03-09 19:07:36,148 sats.satellite.EO INFO <3637.00> EO: Target(tgt-856) window enabled: 3734.4 to 3840.6
2026-03-09 19:07:36,149 sats.satellite.EO INFO <3637.00> EO: setting timed terminal event at 3840.6
2026-03-09 19:07:36,199 sats.satellite.EO INFO <3841.00> EO: timed termination at 3840.6 for Target(tgt-856) window
2026-03-09 19:07:36,201 data.base INFO <3841.00> Total reward: {}
2026-03-09 19:07:36,201 comm.communication INFO <3841.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,202 sats.satellite.EO INFO <3841.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,232 gym INFO <3841.00> Step reward: 0.0
2026-03-09 19:07:36,233 gym INFO <3841.00> === STARTING STEP ===
2026-03-09 19:07:36,234 sats.satellite.EO INFO <3841.00> EO: target index 20 tasked
2026-03-09 19:07:36,234 sats.satellite.EO INFO <3841.00> EO: Target(tgt-2332) tasked for imaging
2026-03-09 19:07:36,236 sats.satellite.EO INFO <3841.00> EO: Target(tgt-2332) window enabled: 3918.4 to 4037.0
2026-03-09 19:07:36,236 sats.satellite.EO INFO <3841.00> EO: setting timed terminal event at 4037.0
2026-03-09 19:07:36,293 sats.satellite.EO INFO <4037.00> EO: timed termination at 4037.0 for Target(tgt-2332) window
2026-03-09 19:07:36,295 data.base INFO <4037.00> Total reward: {}
2026-03-09 19:07:36,295 comm.communication INFO <4037.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,296 sats.satellite.EO INFO <4037.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,325 gym INFO <4037.00> Step reward: 0.0
2026-03-09 19:07:36,326 gym INFO <4037.00> === STARTING STEP ===
2026-03-09 19:07:36,326 sats.satellite.EO INFO <4037.00> EO: target index 25 tasked
2026-03-09 19:07:36,327 sats.satellite.EO INFO <4037.00> EO: Target(tgt-4532) tasked for imaging
2026-03-09 19:07:36,327 sats.satellite.EO INFO <4037.00> EO: Target(tgt-4532) window enabled: 4234.5 to 4256.5
2026-03-09 19:07:36,328 sats.satellite.EO INFO <4037.00> EO: setting timed terminal event at 4256.5
2026-03-09 19:07:36,381 sats.satellite.EO INFO <4257.00> EO: timed termination at 4256.5 for Target(tgt-4532) window
2026-03-09 19:07:36,383 data.base INFO <4257.00> Total reward: {}
2026-03-09 19:07:36,383 comm.communication INFO <4257.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,384 sats.satellite.EO INFO <4257.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,413 gym INFO <4257.00> Step reward: 0.0
2026-03-09 19:07:36,414 gym INFO <4257.00> === STARTING STEP ===
2026-03-09 19:07:36,415 sats.satellite.EO INFO <4257.00> EO: target index 10 tasked
2026-03-09 19:07:36,415 sats.satellite.EO INFO <4257.00> EO: Target(tgt-294) tasked for imaging
2026-03-09 19:07:36,416 sats.satellite.EO INFO <4257.00> EO: Target(tgt-294) window enabled: 4252.6 to 4330.6
2026-03-09 19:07:36,416 sats.satellite.EO INFO <4257.00> EO: setting timed terminal event at 4330.6
2026-03-09 19:07:36,436 sats.satellite.EO INFO <4331.00> EO: timed termination at 4330.6 for Target(tgt-294) window
2026-03-09 19:07:36,438 data.base INFO <4331.00> Total reward: {}
2026-03-09 19:07:36,438 comm.communication INFO <4331.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,439 sats.satellite.EO INFO <4331.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,468 gym INFO <4331.00> Step reward: 0.0
2026-03-09 19:07:36,468 gym INFO <4331.00> === STARTING STEP ===
2026-03-09 19:07:36,469 sats.satellite.EO INFO <4331.00> EO: target index 24 tasked
2026-03-09 19:07:36,469 sats.satellite.EO INFO <4331.00> EO: Target(tgt-5893) tasked for imaging
2026-03-09 19:07:36,470 sats.satellite.EO INFO <4331.00> EO: Target(tgt-5893) window enabled: 4397.7 to 4492.2
2026-03-09 19:07:36,471 sats.satellite.EO INFO <4331.00> EO: setting timed terminal event at 4492.2
2026-03-09 19:07:36,515 sats.satellite.EO INFO <4492.50> EO: timed termination at 4492.2 for Target(tgt-5893) window
2026-03-09 19:07:36,516 data.base INFO <4492.50> Total reward: {}
2026-03-09 19:07:36,516 comm.communication INFO <4492.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,517 sats.satellite.EO INFO <4492.50> EO: Satellite EO requires retasking
2026-03-09 19:07:36,547 gym INFO <4492.50> Step reward: 0.0
2026-03-09 19:07:36,547 gym INFO <4492.50> === STARTING STEP ===
2026-03-09 19:07:36,548 sats.satellite.EO INFO <4492.50> EO: target index 9 tasked
2026-03-09 19:07:36,549 sats.satellite.EO INFO <4492.50> EO: Target(tgt-1370) tasked for imaging
2026-03-09 19:07:36,549 sats.satellite.EO INFO <4492.50> EO: Target(tgt-1370) window enabled: 4457.6 to 4578.4
2026-03-09 19:07:36,550 sats.satellite.EO INFO <4492.50> EO: setting timed terminal event at 4578.4
2026-03-09 19:07:36,572 sats.satellite.EO INFO <4578.50> EO: timed termination at 4578.4 for Target(tgt-1370) window
2026-03-09 19:07:36,573 data.base INFO <4578.50> Total reward: {}
2026-03-09 19:07:36,574 comm.communication INFO <4578.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,575 sats.satellite.EO INFO <4578.50> EO: Satellite EO requires retasking
2026-03-09 19:07:36,605 gym INFO <4578.50> Step reward: 0.0
2026-03-09 19:07:36,606 gym INFO <4578.50> === STARTING STEP ===
2026-03-09 19:07:36,606 sats.satellite.EO INFO <4578.50> EO: target index 25 tasked
2026-03-09 19:07:36,607 sats.satellite.EO INFO <4578.50> EO: Target(tgt-1991) tasked for imaging
2026-03-09 19:07:36,608 sats.satellite.EO INFO <4578.50> EO: Target(tgt-1991) window enabled: 4689.6 to 4809.5
2026-03-09 19:07:36,608 sats.satellite.EO INFO <4578.50> EO: setting timed terminal event at 4809.5
2026-03-09 19:07:36,664 sats.satellite.EO INFO <4810.00> EO: timed termination at 4809.5 for Target(tgt-1991) window
2026-03-09 19:07:36,665 data.base INFO <4810.00> Total reward: {}
2026-03-09 19:07:36,666 comm.communication INFO <4810.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,667 sats.satellite.EO INFO <4810.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,698 gym INFO <4810.00> Step reward: 0.0
2026-03-09 19:07:36,699 gym INFO <4810.00> === STARTING STEP ===
2026-03-09 19:07:36,699 sats.satellite.EO INFO <4810.00> EO: target index 17 tasked
2026-03-09 19:07:36,700 sats.satellite.EO INFO <4810.00> EO: Target(tgt-7146) tasked for imaging
2026-03-09 19:07:36,701 sats.satellite.EO INFO <4810.00> EO: Target(tgt-7146) window enabled: 4777.4 to 4897.0
2026-03-09 19:07:36,701 sats.satellite.EO INFO <4810.00> EO: setting timed terminal event at 4897.0
2026-03-09 19:07:36,723 sats.satellite.EO INFO <4897.50> EO: timed termination at 4897.0 for Target(tgt-7146) window
2026-03-09 19:07:36,724 data.base INFO <4897.50> Total reward: {}
2026-03-09 19:07:36,725 comm.communication INFO <4897.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,726 sats.satellite.EO INFO <4897.50> EO: Satellite EO requires retasking
2026-03-09 19:07:36,755 gym INFO <4897.50> Step reward: 0.0
2026-03-09 19:07:36,756 gym INFO <4897.50> === STARTING STEP ===
2026-03-09 19:07:36,757 sats.satellite.EO INFO <4897.50> EO: target index 13 tasked
2026-03-09 19:07:36,757 sats.satellite.EO INFO <4897.50> EO: Target(tgt-197) tasked for imaging
2026-03-09 19:07:36,758 sats.satellite.EO INFO <4897.50> EO: Target(tgt-197) window enabled: 5001.5 to 5019.1
2026-03-09 19:07:36,759 sats.satellite.EO INFO <4897.50> EO: setting timed terminal event at 5019.1
2026-03-09 19:07:36,793 sats.satellite.EO INFO <5019.50> EO: timed termination at 5019.1 for Target(tgt-197) window
2026-03-09 19:07:36,795 data.base INFO <5019.50> Total reward: {}
2026-03-09 19:07:36,795 comm.communication INFO <5019.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,796 sats.satellite.EO INFO <5019.50> EO: Satellite EO requires retasking
2026-03-09 19:07:36,827 gym INFO <5019.50> Step reward: 0.0
2026-03-09 19:07:36,828 gym INFO <5019.50> === STARTING STEP ===
2026-03-09 19:07:36,828 sats.satellite.EO INFO <5019.50> EO: target index 16 tasked
2026-03-09 19:07:36,829 sats.satellite.EO INFO <5019.50> EO: Target(tgt-9567) tasked for imaging
2026-03-09 19:07:36,829 sats.satellite.EO INFO <5019.50> EO: Target(tgt-9567) window enabled: 5004.6 to 5112.6
2026-03-09 19:07:36,830 sats.satellite.EO INFO <5019.50> EO: setting timed terminal event at 5112.6
2026-03-09 19:07:36,858 sats.satellite.EO INFO <5113.00> EO: timed termination at 5112.6 for Target(tgt-9567) window
2026-03-09 19:07:36,859 data.base INFO <5113.00> Total reward: {}
2026-03-09 19:07:36,859 comm.communication INFO <5113.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,860 sats.satellite.EO INFO <5113.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,891 gym INFO <5113.00> Step reward: 0.0
2026-03-09 19:07:36,891 gym INFO <5113.00> === STARTING STEP ===
2026-03-09 19:07:36,892 sats.satellite.EO INFO <5113.00> EO: target index 27 tasked
2026-03-09 19:07:36,892 sats.satellite.EO INFO <5113.00> EO: Target(tgt-1584) tasked for imaging
2026-03-09 19:07:36,894 sats.satellite.EO INFO <5113.00> EO: Target(tgt-1584) window enabled: 5326.2 to 5364.6
2026-03-09 19:07:36,894 sats.satellite.EO INFO <5113.00> EO: setting timed terminal event at 5364.6
2026-03-09 19:07:36,955 sats.satellite.EO INFO <5365.00> EO: timed termination at 5364.6 for Target(tgt-1584) window
2026-03-09 19:07:36,956 data.base INFO <5365.00> Total reward: {}
2026-03-09 19:07:36,957 comm.communication INFO <5365.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:36,958 sats.satellite.EO INFO <5365.00> EO: Satellite EO requires retasking
2026-03-09 19:07:36,987 gym INFO <5365.00> Step reward: 0.0
2026-03-09 19:07:36,988 gym INFO <5365.00> === STARTING STEP ===
2026-03-09 19:07:36,988 sats.satellite.EO INFO <5365.00> EO: target index 21 tasked
2026-03-09 19:07:36,989 sats.satellite.EO INFO <5365.00> EO: Target(tgt-5262) tasked for imaging
2026-03-09 19:07:36,990 sats.satellite.EO INFO <5365.00> EO: Target(tgt-5262) window enabled: 5497.8 to 5523.4
2026-03-09 19:07:36,990 sats.satellite.EO INFO <5365.00> EO: setting timed terminal event at 5523.4
2026-03-09 19:07:37,038 sats.satellite.EO INFO <5523.50> EO: timed termination at 5523.4 for Target(tgt-5262) window
2026-03-09 19:07:37,039 data.base INFO <5523.50> Total reward: {}
2026-03-09 19:07:37,040 comm.communication INFO <5523.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,041 sats.satellite.EO INFO <5523.50> EO: Satellite EO requires retasking
2026-03-09 19:07:37,071 gym INFO <5523.50> Step reward: 0.0
2026-03-09 19:07:37,071 gym INFO <5523.50> === STARTING STEP ===
2026-03-09 19:07:37,072 sats.satellite.EO INFO <5523.50> EO: target index 20 tasked
2026-03-09 19:07:37,072 sats.satellite.EO INFO <5523.50> EO: Target(tgt-610) tasked for imaging
2026-03-09 19:07:37,073 sats.satellite.EO INFO <5523.50> EO: Target(tgt-610) window enabled: 5648.8 to 5663.9
2026-03-09 19:07:37,074 sats.satellite.EO INFO <5523.50> EO: setting timed terminal event at 5663.9
2026-03-09 19:07:37,108 sats.satellite.EO INFO <5664.00> EO: timed termination at 5663.9 for Target(tgt-610) window
2026-03-09 19:07:37,110 data.base INFO <5664.00> Total reward: {}
2026-03-09 19:07:37,110 comm.communication INFO <5664.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,112 sats.satellite.EO INFO <5664.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,142 gym INFO <5664.00> Step reward: 0.0
2026-03-09 19:07:37,143 gym INFO <5664.00> === STARTING STEP ===
2026-03-09 19:07:37,144 sats.satellite.EO INFO <5664.00> EO: target index 21 tasked
2026-03-09 19:07:37,145 sats.satellite.EO INFO <5664.00> EO: Target(tgt-3579) tasked for imaging
2026-03-09 19:07:37,145 sats.satellite.EO INFO <5664.00> EO: Target(tgt-3579) window enabled: 5787.8 to 5835.6
2026-03-09 19:07:37,146 sats.satellite.EO INFO <5664.00> EO: setting timed terminal event at 5835.6
2026-03-09 19:07:37,197 sats.satellite.EO INFO <5836.00> EO: timed termination at 5835.6 for Target(tgt-3579) window
2026-03-09 19:07:37,198 data.base INFO <5836.00> Total reward: {}
2026-03-09 19:07:37,199 comm.communication INFO <5836.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,200 sats.satellite.EO INFO <5836.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,230 gym INFO <5836.00> Step reward: 0.0
2026-03-09 19:07:37,231 gym INFO <5836.00> === STARTING STEP ===
2026-03-09 19:07:37,231 sats.satellite.EO INFO <5836.00> EO: target index 17 tasked
2026-03-09 19:07:37,232 sats.satellite.EO INFO <5836.00> EO: Target(tgt-3920) tasked for imaging
2026-03-09 19:07:37,233 sats.satellite.EO INFO <5836.00> EO: Target(tgt-3920) window enabled: 5854.3 to 5948.2
2026-03-09 19:07:37,233 sats.satellite.EO INFO <5836.00> EO: setting timed terminal event at 5948.2
2026-03-09 19:07:37,269 sats.satellite.EO INFO <5948.50> EO: timed termination at 5948.2 for Target(tgt-3920) window
2026-03-09 19:07:37,271 data.base INFO <5948.50> Total reward: {}
2026-03-09 19:07:37,271 comm.communication INFO <5948.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,272 sats.satellite.EO INFO <5948.50> EO: Satellite EO requires retasking
2026-03-09 19:07:37,302 gym INFO <5948.50> Step reward: 0.0
2026-03-09 19:07:37,303 gym INFO <5948.50> === STARTING STEP ===
2026-03-09 19:07:37,304 sats.satellite.EO INFO <5948.50> EO: target index 27 tasked
2026-03-09 19:07:37,304 sats.satellite.EO INFO <5948.50> EO: Target(tgt-9343) tasked for imaging
2026-03-09 19:07:37,305 sats.satellite.EO INFO <5948.50> EO: Target(tgt-9343) window enabled: 6050.9 to 6159.6
2026-03-09 19:07:37,306 sats.satellite.EO INFO <5948.50> EO: setting timed terminal event at 6159.6
2026-03-09 19:07:37,371 sats.satellite.EO INFO <6160.00> EO: timed termination at 6159.6 for Target(tgt-9343) window
2026-03-09 19:07:37,372 data.base INFO <6160.00> Total reward: {}
2026-03-09 19:07:37,373 comm.communication INFO <6160.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,374 sats.satellite.EO INFO <6160.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,405 gym INFO <6160.00> Step reward: 0.0
2026-03-09 19:07:37,405 gym INFO <6160.00> === STARTING STEP ===
2026-03-09 19:07:37,405 sats.satellite.EO INFO <6160.00> EO: target index 20 tasked
2026-03-09 19:07:37,406 sats.satellite.EO INFO <6160.00> EO: Target(tgt-954) tasked for imaging
2026-03-09 19:07:37,407 sats.satellite.EO INFO <6160.00> EO: Target(tgt-954) window enabled: 6168.7 to 6290.9
2026-03-09 19:07:37,407 sats.satellite.EO INFO <6160.00> EO: setting timed terminal event at 6290.9
2026-03-09 19:07:37,442 sats.satellite.EO INFO <6291.00> EO: timed termination at 6290.9 for Target(tgt-954) window
2026-03-09 19:07:37,444 data.base INFO <6291.00> Total reward: {}
2026-03-09 19:07:37,444 comm.communication INFO <6291.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,445 sats.satellite.EO INFO <6291.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,476 gym INFO <6291.00> Step reward: 0.0
2026-03-09 19:07:37,476 gym INFO <6291.00> === STARTING STEP ===
2026-03-09 19:07:37,477 sats.satellite.EO INFO <6291.00> EO: target index 29 tasked
2026-03-09 19:07:37,477 sats.satellite.EO INFO <6291.00> EO: Target(tgt-4461) tasked for imaging
2026-03-09 19:07:37,478 sats.satellite.EO INFO <6291.00> EO: Target(tgt-4461) window enabled: 6412.4 to 6518.3
2026-03-09 19:07:37,479 sats.satellite.EO INFO <6291.00> EO: setting timed terminal event at 6518.3
2026-03-09 19:07:37,539 sats.satellite.EO INFO <6518.50> EO: timed termination at 6518.3 for Target(tgt-4461) window
2026-03-09 19:07:37,541 data.base INFO <6518.50> Total reward: {}
2026-03-09 19:07:37,541 comm.communication INFO <6518.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,542 sats.satellite.EO INFO <6518.50> EO: Satellite EO requires retasking
2026-03-09 19:07:37,575 gym INFO <6518.50> Step reward: 0.0
2026-03-09 19:07:37,575 gym INFO <6518.50> === STARTING STEP ===
2026-03-09 19:07:37,576 sats.satellite.EO INFO <6518.50> EO: target index 3 tasked
2026-03-09 19:07:37,576 sats.satellite.EO INFO <6518.50> EO: Target(tgt-4276) tasked for imaging
2026-03-09 19:07:37,578 sats.satellite.EO INFO <6518.50> EO: Target(tgt-4276) window enabled: 6424.4 to 6536.6
2026-03-09 19:07:37,579 sats.satellite.EO INFO <6518.50> EO: setting timed terminal event at 6536.6
2026-03-09 19:07:37,584 sats.satellite.EO INFO <6537.00> EO: timed termination at 6536.6 for Target(tgt-4276) window
2026-03-09 19:07:37,586 data.base INFO <6537.00> Total reward: {}
2026-03-09 19:07:37,586 comm.communication INFO <6537.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,587 sats.satellite.EO INFO <6537.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,619 gym INFO <6537.00> Step reward: 0.0
2026-03-09 19:07:37,620 gym INFO <6537.00> === STARTING STEP ===
2026-03-09 19:07:37,620 sats.satellite.EO INFO <6537.00> EO: target index 13 tasked
2026-03-09 19:07:37,620 sats.satellite.EO INFO <6537.00> EO: Target(tgt-8840) tasked for imaging
2026-03-09 19:07:37,621 sats.satellite.EO INFO <6537.00> EO: Target(tgt-8840) window enabled: 6650.2 to 6703.5
2026-03-09 19:07:37,622 sats.satellite.EO INFO <6537.00> EO: setting timed terminal event at 6703.5
2026-03-09 19:07:37,663 sats.satellite.EO INFO <6703.50> EO: timed termination at 6703.5 for Target(tgt-8840) window
2026-03-09 19:07:37,664 data.base INFO <6703.50> Total reward: {}
2026-03-09 19:07:37,665 comm.communication INFO <6703.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,666 sats.satellite.EO INFO <6703.50> EO: Satellite EO requires retasking
2026-03-09 19:07:37,697 gym INFO <6703.50> Step reward: 0.0
2026-03-09 19:07:37,698 gym INFO <6703.50> === STARTING STEP ===
2026-03-09 19:07:37,698 sats.satellite.EO INFO <6703.50> EO: target index 22 tasked
2026-03-09 19:07:37,699 sats.satellite.EO INFO <6703.50> EO: Target(tgt-392) tasked for imaging
2026-03-09 19:07:37,700 sats.satellite.EO INFO <6703.50> EO: Target(tgt-392) window enabled: 6783.7 to 6904.0
2026-03-09 19:07:37,700 sats.satellite.EO INFO <6703.50> EO: setting timed terminal event at 6904.0
2026-03-09 19:07:37,754 sats.satellite.EO INFO <6904.00> EO: timed termination at 6904.0 for Target(tgt-392) window
2026-03-09 19:07:37,757 data.base INFO <6904.00> Total reward: {}
2026-03-09 19:07:37,758 comm.communication INFO <6904.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,760 sats.satellite.EO INFO <6904.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,792 gym INFO <6904.00> Step reward: 0.0
2026-03-09 19:07:37,793 gym INFO <6904.00> === STARTING STEP ===
2026-03-09 19:07:37,794 sats.satellite.EO INFO <6904.00> EO: target index 15 tasked
2026-03-09 19:07:37,794 sats.satellite.EO INFO <6904.00> EO: Target(tgt-2515) tasked for imaging
2026-03-09 19:07:37,795 sats.satellite.EO INFO <6904.00> EO: Target(tgt-2515) window enabled: 6880.2 to 6988.7
2026-03-09 19:07:37,796 sats.satellite.EO INFO <6904.00> EO: setting timed terminal event at 6988.7
2026-03-09 19:07:37,819 sats.satellite.EO INFO <6989.00> EO: timed termination at 6988.7 for Target(tgt-2515) window
2026-03-09 19:07:37,821 data.base INFO <6989.00> Total reward: {}
2026-03-09 19:07:37,822 comm.communication INFO <6989.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,823 sats.satellite.EO INFO <6989.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,853 gym INFO <6989.00> Step reward: 0.0
2026-03-09 19:07:37,854 gym INFO <6989.00> === STARTING STEP ===
2026-03-09 19:07:37,855 sats.satellite.EO INFO <6989.00> EO: target index 12 tasked
2026-03-09 19:07:37,856 sats.satellite.EO INFO <6989.00> EO: Target(tgt-8715) tasked for imaging
2026-03-09 19:07:37,856 sats.satellite.EO INFO <6989.00> EO: Target(tgt-8715) window enabled: 7047.9 to 7117.7
2026-03-09 19:07:37,857 sats.satellite.EO INFO <6989.00> EO: setting timed terminal event at 7117.7
2026-03-09 19:07:37,889 sats.satellite.EO INFO <7118.00> EO: timed termination at 7117.7 for Target(tgt-8715) window
2026-03-09 19:07:37,890 data.base INFO <7118.00> Total reward: {}
2026-03-09 19:07:37,891 comm.communication INFO <7118.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,892 sats.satellite.EO INFO <7118.00> EO: Satellite EO requires retasking
2026-03-09 19:07:37,924 gym INFO <7118.00> Step reward: 0.0
2026-03-09 19:07:37,925 gym INFO <7118.00> === STARTING STEP ===
2026-03-09 19:07:37,926 sats.satellite.EO INFO <7118.00> EO: target index 24 tasked
2026-03-09 19:07:37,926 sats.satellite.EO INFO <7118.00> EO: Target(tgt-5845) tasked for imaging
2026-03-09 19:07:37,927 sats.satellite.EO INFO <7118.00> EO: Target(tgt-5845) window enabled: 7297.0 to 7327.2
2026-03-09 19:07:37,927 sats.satellite.EO INFO <7118.00> EO: setting timed terminal event at 7327.2
2026-03-09 19:07:37,978 sats.satellite.EO INFO <7327.50> EO: timed termination at 7327.2 for Target(tgt-5845) window
2026-03-09 19:07:37,980 data.base INFO <7327.50> Total reward: {}
2026-03-09 19:07:37,980 comm.communication INFO <7327.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:37,981 sats.satellite.EO INFO <7327.50> EO: Satellite EO requires retasking
2026-03-09 19:07:38,015 gym INFO <7327.50> Step reward: 0.0
2026-03-09 19:07:38,015 gym INFO <7327.50> === STARTING STEP ===
2026-03-09 19:07:38,016 sats.satellite.EO INFO <7327.50> EO: target index 27 tasked
2026-03-09 19:07:38,017 sats.satellite.EO INFO <7327.50> EO: Target(tgt-3275) tasked for imaging
2026-03-09 19:07:38,017 sats.satellite.EO INFO <7327.50> EO: Target(tgt-3275) window enabled: 7630.0 to 7665.9
2026-03-09 19:07:38,018 sats.satellite.EO INFO <7327.50> EO: setting timed terminal event at 7665.9
2026-03-09 19:07:38,090 sim.simulator INFO <7627.50> Max step duration reached
2026-03-09 19:07:38,092 data.base INFO <7627.50> Total reward: {}
2026-03-09 19:07:38,092 comm.communication INFO <7627.50> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:38,124 gym INFO <7627.50> Step reward: 0.0
2026-03-09 19:07:38,125 gym INFO <7627.50> === STARTING STEP ===
2026-03-09 19:07:38,125 sats.satellite.EO INFO <7627.50> EO: target index 31 tasked
2026-03-09 19:07:38,126 sats.satellite.EO INFO <7627.50> EO: Target(tgt-6131) tasked for imaging
2026-03-09 19:07:38,127 sats.satellite.EO INFO <7627.50> EO: Target(tgt-6131) window enabled: 7835.4 to 7922.9
2026-03-09 19:07:38,127 sats.satellite.EO INFO <7627.50> EO: setting timed terminal event at 7922.9
2026-03-09 19:07:38,198 sats.satellite.EO INFO <7923.00> EO: timed termination at 7922.9 for Target(tgt-6131) window
2026-03-09 19:07:38,200 data.base INFO <7923.00> Total reward: {}
2026-03-09 19:07:38,200 comm.communication INFO <7923.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:38,201 sats.satellite.EO INFO <7923.00> EO: Satellite EO requires retasking
2026-03-09 19:07:38,234 gym INFO <7923.00> Step reward: 0.0
2026-03-09 19:07:38,234 gym INFO <7923.00> === STARTING STEP ===
2026-03-09 19:07:38,235 sats.satellite.EO INFO <7923.00> EO: target index 14 tasked
2026-03-09 19:07:38,235 sats.satellite.EO INFO <7923.00> EO: Target(tgt-2304) tasked for imaging
2026-03-09 19:07:38,236 sats.satellite.EO INFO <7923.00> EO: Target(tgt-2304) window enabled: 7977.5 to 8055.9
2026-03-09 19:07:38,236 sats.satellite.EO INFO <7923.00> EO: setting timed terminal event at 8055.9
2026-03-09 19:07:38,269 sats.satellite.EO INFO <8056.00> EO: timed termination at 8055.9 for Target(tgt-2304) window
2026-03-09 19:07:38,271 data.base INFO <8056.00> Total reward: {}
2026-03-09 19:07:38,271 comm.communication INFO <8056.00> Optimizing data communication between all pairs of satellites
2026-03-09 19:07:38,272 sats.satellite.EO INFO <8056.00> EO: Satellite EO requires retasking
2026-03-09 19:07:38,304 sats.satellite.EO WARNING <8056.00> EO: failed battery_valid check
2026-03-09 19:07:38,305 gym INFO <8056.00> Step reward: 0.0
2026-03-09 19:07:38,305 gym INFO <8056.00> Episode terminated: True
2026-03-09 19:07:38,306 gym INFO <8056.00> Episode truncated: False
Episode complete.
After the running the simulation, we can check the reward, number of imaged targets that were covered by clouds and that were not covered by clouds (according to the threshold set in the rewarder).
[11]:
print("Total reward:", env.unwrapped.rewarder.cum_reward)
print("Covered by clouds:", env.unwrapped.rewarder.data.cloud_covered)
print("Not covered by clouds:", env.unwrapped.rewarder.data.cloud_free)
Total reward: {'EO': np.float64(1.7245445649030926)}
Covered by clouds: {Target(tgt-7365), Target(tgt-8899), Target(tgt-9381), Target(tgt-3571), Target(tgt-8473), Target(tgt-9302), Target(tgt-7055), Target(tgt-849), Target(tgt-2122), Target(tgt-7965), Target(tgt-7842)}
Not covered by clouds: {Target(tgt-5550), Target(tgt-9891), Target(tgt-2495), Target(tgt-545), Target(tgt-4368), Target(tgt-6054), Target(tgt-9152), Target(tgt-726)}