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, world
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

  • Observations:

    • 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.

  • Actions:

    • 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_cover represents 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_forecast represents the cloud coverage forecast. Forecast from external sources can be plugged in here.

  • cloud_cover_sigma represents 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,
    world_type=world.GroundStationWorldModel,
    world_args=world.GroundStationWorldModel.default_world_args(),
    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
)
2025-10-16 18:32:08,067 gym                            INFO       Calling env.reset() to get observation space
2025-10-16 18:32:08,067 gym                            INFO       Resetting environment with seed=2415645385
2025-10-16 18:32:08,069 scene.targets                  INFO       Generating 5397 targets
2025-10-16 18:32:08,345 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2025-10-16 18:32:09,563 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)
2025-10-16 18:32:09,627 gym                            INFO       Resetting environment with seed=1
2025-10-16 18:32:09,629 scene.targets                  INFO       Generating 9920 targets
2025-10-16 18:32:09,945 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2025-10-16 18:32:12,333 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
2025-10-16 18:32:12,346 gym                            INFO       <0.00> === STARTING STEP ===
2025-10-16 18:32:12,346 sats.satellite.EO              INFO       <0.00> EO: action_charge tasked for 60.0 seconds
2025-10-16 18:32:12,347 sats.satellite.EO              INFO       <0.00> EO: setting timed terminal event at 60.0
2025-10-16 18:32:12,361 sats.satellite.EO              INFO       <60.00> EO: timed termination at 60.0 for action_charge
2025-10-16 18:32:12,362 data.base                      INFO       <60.00> Total reward: {}
2025-10-16 18:32:12,363 comm.communication             INFO       <60.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,364 sats.satellite.EO              INFO       <60.00> EO: Satellite EO requires retasking
2025-10-16 18:32:12,389 gym                            INFO       <60.00> Step reward: 0.0
2025-10-16 18:32:12,390 gym                            INFO       <60.00> === STARTING STEP ===
2025-10-16 18:32:12,391 sats.satellite.EO              WARNING    <60.00> EO: Requires retasking but received no task.
2025-10-16 18:32:12,459 sim.simulator                  INFO       <360.00> Max step duration reached
2025-10-16 18:32:12,461 data.base                      INFO       <360.00> Total reward: {}
2025-10-16 18:32:12,461 comm.communication             INFO       <360.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,462 sats.satellite.EO              INFO       <360.00> EO: Satellite EO requires retasking
2025-10-16 18:32:12,488 gym                            INFO       <360.00> Step reward: 0.0
2025-10-16 18:32:12,489 gym                            INFO       <360.00> === STARTING STEP ===
2025-10-16 18:32:12,489 sats.satellite.EO              INFO       <360.00> EO: target index 0 tasked
2025-10-16 18:32:12,490 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) tasked for imaging
2025-10-16 18:32:12,491 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) window enabled: 256.2 to 377.2
2025-10-16 18:32:12,492 sats.satellite.EO              INFO       <360.00> EO: setting timed terminal event at 377.2
2025-10-16 18:32:12,498 sats.satellite.EO              INFO       <377.50> EO: timed termination at 377.2 for Target(tgt-7918) window
2025-10-16 18:32:12,499 data.base                      INFO       <377.50> Total reward: {}
2025-10-16 18:32:12,500 comm.communication             INFO       <377.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,501 sats.satellite.EO              INFO       <377.50> EO: Satellite EO requires retasking
2025-10-16 18:32:12,526 gym                            INFO       <377.50> Step reward: 0.0
2025-10-16 18:32:12,526 gym                            INFO       <377.50> === STARTING STEP ===
2025-10-16 18:32:12,527 sats.satellite.EO              INFO       <377.50> EO: target index 26 tasked
2025-10-16 18:32:12,528 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-436) tasked for imaging
2025-10-16 18:32:12,528 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-436) window enabled: 503.2 to 605.9
2025-10-16 18:32:12,529 sats.satellite.EO              INFO       <377.50> EO: setting timed terminal event at 605.9
2025-10-16 18:32:12,563 sats.satellite.EO              INFO       <504.50> EO: imaged Target(tgt-436)
2025-10-16 18:32:12,565 data.base                      INFO       <504.50> Total reward: {'EO': np.float64(0.06129826789359197)}
2025-10-16 18:32:12,565 comm.communication             INFO       <504.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,566 sats.satellite.EO              INFO       <504.50> EO: Satellite EO requires retasking
2025-10-16 18:32:12,592 gym                            INFO       <504.50> Step reward: 0.06129826789359197
2025-10-16 18:32:12,593 gym                            INFO       <504.50> === STARTING STEP ===
2025-10-16 18:32:12,594 sats.satellite.EO              INFO       <504.50> EO: target index 14 tasked
2025-10-16 18:32:12,594 sats.satellite.EO              INFO       <504.50> EO: Target(tgt-3644) tasked for imaging
2025-10-16 18:32:12,595 sats.satellite.EO              INFO       <504.50> EO: Target(tgt-3644) window enabled: 510.3 to 581.5
2025-10-16 18:32:12,596 sats.satellite.EO              INFO       <504.50> EO: setting timed terminal event at 581.5
2025-10-16 18:32:12,609 sats.satellite.EO              INFO       <547.00> EO: imaged Target(tgt-3644)
2025-10-16 18:32:12,610 data.base                      INFO       <547.00> Total reward: {}
2025-10-16 18:32:12,611 comm.communication             INFO       <547.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,611 sats.satellite.EO              INFO       <547.00> EO: Satellite EO requires retasking
2025-10-16 18:32:12,638 gym                            INFO       <547.00> Step reward: 0.0
2025-10-16 18:32:12,638 gym                            INFO       <547.00> === STARTING STEP ===
2025-10-16 18:32:12,639 sats.satellite.EO              INFO       <547.00> EO: target index 23 tasked
2025-10-16 18:32:12,639 sats.satellite.EO              INFO       <547.00> EO: Target(tgt-369) tasked for imaging
2025-10-16 18:32:12,640 sats.satellite.EO              INFO       <547.00> EO: Target(tgt-369) window enabled: 600.7 to 722.4
2025-10-16 18:32:12,641 sats.satellite.EO              INFO       <547.00> EO: setting timed terminal event at 722.4
2025-10-16 18:32:12,658 sats.satellite.EO              INFO       <602.00> EO: imaged Target(tgt-369)
2025-10-16 18:32:12,659 data.base                      INFO       <602.00> Total reward: {'EO': np.float64(0.27483499365889086)}
2025-10-16 18:32:12,660 comm.communication             INFO       <602.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,661 sats.satellite.EO              INFO       <602.00> EO: Satellite EO requires retasking
2025-10-16 18:32:12,687 gym                            INFO       <602.00> Step reward: 0.27483499365889086
2025-10-16 18:32:12,688 gym                            INFO       <602.00> === STARTING STEP ===
2025-10-16 18:32:12,688 sats.satellite.EO              INFO       <602.00> EO: target index 9 tasked
2025-10-16 18:32:12,690 sats.satellite.EO              INFO       <602.00> EO: Target(tgt-4585) tasked for imaging
2025-10-16 18:32:12,690 sats.satellite.EO              INFO       <602.00> EO: Target(tgt-4585) window enabled: 603.1 to 654.6
2025-10-16 18:32:12,691 sats.satellite.EO              INFO       <602.00> EO: setting timed terminal event at 654.6
2025-10-16 18:32:12,703 sats.satellite.EO              INFO       <644.00> EO: imaged Target(tgt-4585)
2025-10-16 18:32:12,704 data.base                      INFO       <644.00> Total reward: {}
2025-10-16 18:32:12,705 comm.communication             INFO       <644.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,705 sats.satellite.EO              INFO       <644.00> EO: Satellite EO requires retasking
2025-10-16 18:32:12,732 gym                            INFO       <644.00> Step reward: 0.0
2025-10-16 18:32:12,732 gym                            INFO       <644.00> === STARTING STEP ===
2025-10-16 18:32:12,733 sats.satellite.EO              INFO       <644.00> EO: target index 19 tasked
2025-10-16 18:32:12,733 sats.satellite.EO              INFO       <644.00> EO: Target(tgt-7646) tasked for imaging
2025-10-16 18:32:12,734 sats.satellite.EO              INFO       <644.00> EO: Target(tgt-7646) window enabled: 796.1 to 838.3
2025-10-16 18:32:12,734 sats.satellite.EO              INFO       <644.00> EO: setting timed terminal event at 838.3
2025-10-16 18:32:12,771 sats.satellite.EO              INFO       <797.50> EO: imaged Target(tgt-7646)
2025-10-16 18:32:12,772 data.base                      INFO       <797.50> Total reward: {'EO': np.float64(0.032833602313931586)}
2025-10-16 18:32:12,772 comm.communication             INFO       <797.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,773 sats.satellite.EO              INFO       <797.50> EO: Satellite EO requires retasking
2025-10-16 18:32:12,800 gym                            INFO       <797.50> Step reward: 0.032833602313931586
2025-10-16 18:32:12,800 gym                            INFO       <797.50> === STARTING STEP ===
2025-10-16 18:32:12,801 sats.satellite.EO              INFO       <797.50> EO: target index 4 tasked
2025-10-16 18:32:12,801 sats.satellite.EO              INFO       <797.50> EO: Target(tgt-2122) tasked for imaging
2025-10-16 18:32:12,802 sats.satellite.EO              INFO       <797.50> EO: Target(tgt-2122) window enabled: 748.1 to 865.8
2025-10-16 18:32:12,803 sats.satellite.EO              INFO       <797.50> EO: setting timed terminal event at 865.8
2025-10-16 18:32:12,814 sats.satellite.EO              INFO       <841.50> EO: imaged Target(tgt-2122)
2025-10-16 18:32:12,815 data.base                      INFO       <841.50> Total reward: {}
2025-10-16 18:32:12,815 comm.communication             INFO       <841.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,816 sats.satellite.EO              INFO       <841.50> EO: Satellite EO requires retasking
2025-10-16 18:32:12,842 gym                            INFO       <841.50> Step reward: 0.0
2025-10-16 18:32:12,843 gym                            INFO       <841.50> === STARTING STEP ===
2025-10-16 18:32:12,843 sats.satellite.EO              INFO       <841.50> EO: target index 15 tasked
2025-10-16 18:32:12,844 sats.satellite.EO              INFO       <841.50> EO: Target(tgt-3706) tasked for imaging
2025-10-16 18:32:12,844 sats.satellite.EO              INFO       <841.50> EO: Target(tgt-3706) window enabled: 895.0 to 992.3
2025-10-16 18:32:12,845 sats.satellite.EO              INFO       <841.50> EO: setting timed terminal event at 992.3
2025-10-16 18:32:12,860 sats.satellite.EO              INFO       <899.50> EO: imaged Target(tgt-3706)
2025-10-16 18:32:12,861 data.base                      INFO       <899.50> Total reward: {'EO': np.float64(0.2015710953760095)}
2025-10-16 18:32:12,862 comm.communication             INFO       <899.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,863 sats.satellite.EO              INFO       <899.50> EO: Satellite EO requires retasking
2025-10-16 18:32:12,889 gym                            INFO       <899.50> Step reward: 0.2015710953760095
2025-10-16 18:32:12,890 gym                            INFO       <899.50> === STARTING STEP ===
2025-10-16 18:32:12,890 sats.satellite.EO              INFO       <899.50> EO: target index 30 tasked
2025-10-16 18:32:12,891 sats.satellite.EO              INFO       <899.50> EO: Target(tgt-9381) tasked for imaging
2025-10-16 18:32:12,892 sats.satellite.EO              INFO       <899.50> EO: Target(tgt-9381) window enabled: 1088.2 to 1163.2
2025-10-16 18:32:12,892 sats.satellite.EO              INFO       <899.50> EO: setting timed terminal event at 1163.2
2025-10-16 18:32:12,936 sats.satellite.EO              INFO       <1089.50> EO: imaged Target(tgt-9381)
2025-10-16 18:32:12,937 data.base                      INFO       <1089.50> Total reward: {}
2025-10-16 18:32:12,938 comm.communication             INFO       <1089.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,938 sats.satellite.EO              INFO       <1089.50> EO: Satellite EO requires retasking
2025-10-16 18:32:12,965 gym                            INFO       <1089.50> Step reward: 0.0
2025-10-16 18:32:12,965 gym                            INFO       <1089.50> === STARTING STEP ===
2025-10-16 18:32:12,966 sats.satellite.EO              INFO       <1089.50> EO: target index 6 tasked
2025-10-16 18:32:12,967 sats.satellite.EO              INFO       <1089.50> EO: Target(tgt-437) tasked for imaging
2025-10-16 18:32:12,967 sats.satellite.EO              INFO       <1089.50> EO: Target(tgt-437) window enabled: 1049.0 to 1153.9
2025-10-16 18:32:12,968 sats.satellite.EO              INFO       <1089.50> EO: setting timed terminal event at 1153.9
2025-10-16 18:32:12,983 sats.satellite.EO              INFO       <1135.50> EO: imaged Target(tgt-437)
2025-10-16 18:32:12,984 data.base                      INFO       <1135.50> Total reward: {'EO': np.float64(0.26854420782719546)}
2025-10-16 18:32:12,984 comm.communication             INFO       <1135.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:12,985 sats.satellite.EO              INFO       <1135.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,014 gym                            INFO       <1135.50> Step reward: 0.26854420782719546
2025-10-16 18:32:13,015 gym                            INFO       <1135.50> === STARTING STEP ===
2025-10-16 18:32:13,015 sats.satellite.EO              INFO       <1135.50> EO: target index 12 tasked
2025-10-16 18:32:13,016 sats.satellite.EO              INFO       <1135.50> EO: Target(tgt-8845) tasked for imaging
2025-10-16 18:32:13,017 sats.satellite.EO              INFO       <1135.50> EO: Target(tgt-8845) window enabled: 1127.0 to 1237.8
2025-10-16 18:32:13,017 sats.satellite.EO              INFO       <1135.50> EO: setting timed terminal event at 1237.8
2025-10-16 18:32:13,032 sats.satellite.EO              INFO       <1181.50> EO: imaged Target(tgt-8845)
2025-10-16 18:32:13,033 data.base                      INFO       <1181.50> Total reward: {'EO': np.float64(0.0883640119228472)}
2025-10-16 18:32:13,034 comm.communication             INFO       <1181.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,035 sats.satellite.EO              INFO       <1181.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,063 gym                            INFO       <1181.50> Step reward: 0.0883640119228472
2025-10-16 18:32:13,063 gym                            INFO       <1181.50> === STARTING STEP ===
2025-10-16 18:32:13,064 sats.satellite.EO              INFO       <1181.50> EO: target index 0 tasked
2025-10-16 18:32:13,064 sats.satellite.EO              INFO       <1181.50> EO: Target(tgt-2118) tasked for imaging
2025-10-16 18:32:13,065 sats.satellite.EO              INFO       <1181.50> EO: Target(tgt-2118) window enabled: 1114.4 to 1182.3
2025-10-16 18:32:13,065 sats.satellite.EO              INFO       <1181.50> EO: setting timed terminal event at 1182.3
2025-10-16 18:32:13,067 sats.satellite.EO              INFO       <1182.50> EO: timed termination at 1182.3 for Target(tgt-2118) window
2025-10-16 18:32:13,068 data.base                      INFO       <1182.50> Total reward: {}
2025-10-16 18:32:13,069 comm.communication             INFO       <1182.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,070 sats.satellite.EO              INFO       <1182.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,097 gym                            INFO       <1182.50> Step reward: 0.0
2025-10-16 18:32:13,098 gym                            INFO       <1182.50> === STARTING STEP ===
2025-10-16 18:32:13,098 sats.satellite.EO              INFO       <1182.50> EO: action_charge tasked for 60.0 seconds
2025-10-16 18:32:13,099 sats.satellite.EO              INFO       <1182.50> EO: setting timed terminal event at 1242.5
2025-10-16 18:32:13,114 sats.satellite.EO              INFO       <1242.50> EO: timed termination at 1242.5 for action_charge
2025-10-16 18:32:13,115 data.base                      INFO       <1242.50> Total reward: {}
2025-10-16 18:32:13,116 comm.communication             INFO       <1242.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,117 sats.satellite.EO              INFO       <1242.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,144 gym                            INFO       <1242.50> Step reward: 0.0
2025-10-16 18:32:13,145 gym                            INFO       <1242.50> === STARTING STEP ===
2025-10-16 18:32:13,146 sats.satellite.EO              INFO       <1242.50> EO: target index 23 tasked
2025-10-16 18:32:13,146 sats.satellite.EO              INFO       <1242.50> EO: Target(tgt-989) tasked for imaging
2025-10-16 18:32:13,147 sats.satellite.EO              INFO       <1242.50> EO: Target(tgt-989) window enabled: 1353.6 to 1440.5
2025-10-16 18:32:13,148 sats.satellite.EO              INFO       <1242.50> EO: setting timed terminal event at 1440.5
2025-10-16 18:32:13,181 sats.satellite.EO              INFO       <1355.00> EO: imaged Target(tgt-989)
2025-10-16 18:32:13,183 data.base                      INFO       <1355.00> Total reward: {}
2025-10-16 18:32:13,183 comm.communication             INFO       <1355.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,184 sats.satellite.EO              INFO       <1355.00> EO: Satellite EO requires retasking
2025-10-16 18:32:13,210 gym                            INFO       <1355.00> Step reward: 0.0
2025-10-16 18:32:13,211 gym                            INFO       <1355.00> === STARTING STEP ===
2025-10-16 18:32:13,211 sats.satellite.EO              INFO       <1355.00> EO: target index 4 tasked
2025-10-16 18:32:13,212 sats.satellite.EO              INFO       <1355.00> EO: Target(tgt-5474) tasked for imaging
2025-10-16 18:32:13,213 sats.satellite.EO              INFO       <1355.00> EO: Target(tgt-5474) window enabled: 1289.4 to 1402.9
2025-10-16 18:32:13,214 sats.satellite.EO              INFO       <1355.00> EO: setting timed terminal event at 1402.9
2025-10-16 18:32:13,224 sats.satellite.EO              INFO       <1387.50> EO: imaged Target(tgt-5474)
2025-10-16 18:32:13,226 data.base                      INFO       <1387.50> Total reward: {'EO': np.float64(0.06800202038733048)}
2025-10-16 18:32:13,226 comm.communication             INFO       <1387.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,227 sats.satellite.EO              INFO       <1387.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,253 gym                            INFO       <1387.50> Step reward: 0.06800202038733048
2025-10-16 18:32:13,254 gym                            INFO       <1387.50> === STARTING STEP ===
2025-10-16 18:32:13,254 sats.satellite.EO              INFO       <1387.50> EO: target index 4 tasked
2025-10-16 18:32:13,255 sats.satellite.EO              INFO       <1387.50> EO: Target(tgt-7233) tasked for imaging
2025-10-16 18:32:13,256 sats.satellite.EO              INFO       <1387.50> EO: Target(tgt-7233) window enabled: 1306.2 to 1422.3
2025-10-16 18:32:13,256 sats.satellite.EO              INFO       <1387.50> EO: setting timed terminal event at 1422.3
2025-10-16 18:32:13,263 sats.satellite.EO              INFO       <1404.50> EO: imaged Target(tgt-7233)
2025-10-16 18:32:13,264 data.base                      INFO       <1404.50> Total reward: {}
2025-10-16 18:32:13,264 comm.communication             INFO       <1404.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,265 sats.satellite.EO              INFO       <1404.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,291 gym                            INFO       <1404.50> Step reward: 0.0
2025-10-16 18:32:13,292 gym                            INFO       <1404.50> === STARTING STEP ===
2025-10-16 18:32:13,292 sats.satellite.EO              INFO       <1404.50> EO: target index 11 tasked
2025-10-16 18:32:13,293 sats.satellite.EO              INFO       <1404.50> EO: Target(tgt-8239) tasked for imaging
2025-10-16 18:32:13,294 sats.satellite.EO              INFO       <1404.50> EO: Target(tgt-8239) window enabled: 1398.2 to 1492.5
2025-10-16 18:32:13,294 sats.satellite.EO              INFO       <1404.50> EO: setting timed terminal event at 1492.5
2025-10-16 18:32:13,307 sats.satellite.EO              INFO       <1454.50> EO: imaged Target(tgt-8239)
2025-10-16 18:32:13,308 data.base                      INFO       <1454.50> Total reward: {'EO': np.float64(0.14074851117678325)}
2025-10-16 18:32:13,308 comm.communication             INFO       <1454.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,309 sats.satellite.EO              INFO       <1454.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,336 gym                            INFO       <1454.50> Step reward: 0.14074851117678325
2025-10-16 18:32:13,337 gym                            INFO       <1454.50> === STARTING STEP ===
2025-10-16 18:32:13,337 sats.satellite.EO              INFO       <1454.50> EO: target index 25 tasked
2025-10-16 18:32:13,338 sats.satellite.EO              INFO       <1454.50> EO: Target(tgt-1821) tasked for imaging
2025-10-16 18:32:13,338 sats.satellite.EO              INFO       <1454.50> EO: Target(tgt-1821) window enabled: 1619.9 to 1713.7
2025-10-16 18:32:13,339 sats.satellite.EO              INFO       <1454.50> EO: setting timed terminal event at 1713.7
2025-10-16 18:32:13,377 sats.satellite.EO              INFO       <1621.00> EO: imaged Target(tgt-1821)
2025-10-16 18:32:13,378 data.base                      INFO       <1621.00> Total reward: {'EO': np.float64(0.7958356353245222)}
2025-10-16 18:32:13,378 comm.communication             INFO       <1621.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,379 sats.satellite.EO              INFO       <1621.00> EO: Satellite EO requires retasking
2025-10-16 18:32:13,407 gym                            INFO       <1621.00> Step reward: 0.7958356353245222
2025-10-16 18:32:13,408 gym                            INFO       <1621.00> === STARTING STEP ===
2025-10-16 18:32:13,408 sats.satellite.EO              INFO       <1621.00> EO: target index 2 tasked
2025-10-16 18:32:13,409 sats.satellite.EO              INFO       <1621.00> EO: Target(tgt-1516) tasked for imaging
2025-10-16 18:32:13,410 sats.satellite.EO              INFO       <1621.00> EO: Target(tgt-1516) window enabled: 1548.9 to 1641.5
2025-10-16 18:32:13,410 sats.satellite.EO              INFO       <1621.00> EO: setting timed terminal event at 1641.5
2025-10-16 18:32:13,416 sats.satellite.EO              INFO       <1641.50> EO: timed termination at 1641.5 for Target(tgt-1516) window
2025-10-16 18:32:13,417 data.base                      INFO       <1641.50> Total reward: {}
2025-10-16 18:32:13,418 comm.communication             INFO       <1641.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,419 sats.satellite.EO              INFO       <1641.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,446 gym                            INFO       <1641.50> Step reward: 0.0
2025-10-16 18:32:13,446 gym                            INFO       <1641.50> === STARTING STEP ===
2025-10-16 18:32:13,447 sats.satellite.EO              INFO       <1641.50> EO: target index 20 tasked
2025-10-16 18:32:13,448 sats.satellite.EO              INFO       <1641.50> EO: Target(tgt-2988) tasked for imaging
2025-10-16 18:32:13,449 sats.satellite.EO              INFO       <1641.50> EO: Target(tgt-2988) window enabled: 1727.5 to 1833.8
2025-10-16 18:32:13,449 sats.satellite.EO              INFO       <1641.50> EO: setting timed terminal event at 1833.8
2025-10-16 18:32:13,470 sats.satellite.EO              INFO       <1728.50> EO: imaged Target(tgt-2988)
2025-10-16 18:32:13,471 data.base                      INFO       <1728.50> Total reward: {'EO': np.float64(0.40967858833619836)}
2025-10-16 18:32:13,471 comm.communication             INFO       <1728.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,472 sats.satellite.EO              INFO       <1728.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,499 gym                            INFO       <1728.50> Step reward: 0.40967858833619836
2025-10-16 18:32:13,500 gym                            INFO       <1728.50> === STARTING STEP ===
2025-10-16 18:32:13,500 sats.satellite.EO              INFO       <1728.50> EO: target index 26 tasked
2025-10-16 18:32:13,501 sats.satellite.EO              INFO       <1728.50> EO: Target(tgt-5856) tasked for imaging
2025-10-16 18:32:13,502 sats.satellite.EO              INFO       <1728.50> EO: Target(tgt-5856) window enabled: 1895.3 to 2008.8
2025-10-16 18:32:13,502 sats.satellite.EO              INFO       <1728.50> EO: setting timed terminal event at 2008.8
2025-10-16 18:32:13,551 sats.satellite.EO              INFO       <1896.50> EO: imaged Target(tgt-5856)
2025-10-16 18:32:13,553 data.base                      INFO       <1896.50> Total reward: {'EO': np.float64(0.24272750159886783)}
2025-10-16 18:32:13,553 comm.communication             INFO       <1896.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,554 sats.satellite.EO              INFO       <1896.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,582 gym                            INFO       <1896.50> Step reward: 0.24272750159886783
2025-10-16 18:32:13,582 gym                            INFO       <1896.50> === STARTING STEP ===
2025-10-16 18:32:13,583 sats.satellite.EO              INFO       <1896.50> EO: target index 19 tasked
2025-10-16 18:32:13,583 sats.satellite.EO              INFO       <1896.50> EO: Target(tgt-5792) tasked for imaging
2025-10-16 18:32:13,584 sats.satellite.EO              INFO       <1896.50> EO: Target(tgt-5792) window enabled: 2009.1 to 2123.2
2025-10-16 18:32:13,585 sats.satellite.EO              INFO       <1896.50> EO: setting timed terminal event at 2123.2
2025-10-16 18:32:13,611 sats.satellite.EO              INFO       <2010.50> EO: imaged Target(tgt-5792)
2025-10-16 18:32:13,612 data.base                      INFO       <2010.50> Total reward: {'EO': np.float64(0.4613837197309192)}
2025-10-16 18:32:13,613 comm.communication             INFO       <2010.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,614 sats.satellite.EO              INFO       <2010.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,641 gym                            INFO       <2010.50> Step reward: 0.4613837197309192
2025-10-16 18:32:13,642 gym                            INFO       <2010.50> === STARTING STEP ===
2025-10-16 18:32:13,642 sats.satellite.EO              INFO       <2010.50> EO: target index 24 tasked
2025-10-16 18:32:13,643 sats.satellite.EO              INFO       <2010.50> EO: Target(tgt-2872) tasked for imaging
2025-10-16 18:32:13,644 sats.satellite.EO              INFO       <2010.50> EO: Target(tgt-2872) window enabled: 2209.7 to 2232.7
2025-10-16 18:32:13,644 sats.satellite.EO              INFO       <2010.50> EO: setting timed terminal event at 2232.7
2025-10-16 18:32:13,702 sats.satellite.EO              INFO       <2211.00> EO: imaged Target(tgt-2872)
2025-10-16 18:32:13,703 data.base                      INFO       <2211.00> Total reward: {}
2025-10-16 18:32:13,703 comm.communication             INFO       <2211.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,704 sats.satellite.EO              INFO       <2211.00> EO: Satellite EO requires retasking
2025-10-16 18:32:13,732 gym                            INFO       <2211.00> Step reward: 0.0
2025-10-16 18:32:13,733 gym                            INFO       <2211.00> === STARTING STEP ===
2025-10-16 18:32:13,734 sats.satellite.EO              INFO       <2211.00> EO: target index 26 tasked
2025-10-16 18:32:13,734 sats.satellite.EO              INFO       <2211.00> EO: Target(tgt-4104) tasked for imaging
2025-10-16 18:32:13,735 sats.satellite.EO              INFO       <2211.00> EO: Target(tgt-4104) window enabled: 2276.2 to 2374.8
2025-10-16 18:32:13,736 sats.satellite.EO              INFO       <2211.00> EO: setting timed terminal event at 2374.8
2025-10-16 18:32:13,774 sats.satellite.EO              INFO       <2375.00> EO: timed termination at 2374.8 for Target(tgt-4104) window
2025-10-16 18:32:13,775 data.base                      INFO       <2375.00> Total reward: {}
2025-10-16 18:32:13,776 comm.communication             INFO       <2375.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,777 sats.satellite.EO              INFO       <2375.00> EO: Satellite EO requires retasking
2025-10-16 18:32:13,805 gym                            INFO       <2375.00> Step reward: 0.0
2025-10-16 18:32:13,805 gym                            INFO       <2375.00> === STARTING STEP ===
2025-10-16 18:32:13,806 sats.satellite.EO              INFO       <2375.00> EO: target index 2 tasked
2025-10-16 18:32:13,806 sats.satellite.EO              INFO       <2375.00> EO: Target(tgt-1861) tasked for imaging
2025-10-16 18:32:13,807 sats.satellite.EO              INFO       <2375.00> EO: Target(tgt-1861) window enabled: 2278.1 to 2387.7
2025-10-16 18:32:13,808 sats.satellite.EO              INFO       <2375.00> EO: setting timed terminal event at 2387.7
2025-10-16 18:32:13,813 sats.satellite.EO              INFO       <2388.00> EO: timed termination at 2387.7 for Target(tgt-1861) window
2025-10-16 18:32:13,814 data.base                      INFO       <2388.00> Total reward: {}
2025-10-16 18:32:13,815 comm.communication             INFO       <2388.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,816 sats.satellite.EO              INFO       <2388.00> EO: Satellite EO requires retasking
2025-10-16 18:32:13,843 gym                            INFO       <2388.00> Step reward: 0.0
2025-10-16 18:32:13,843 gym                            INFO       <2388.00> === STARTING STEP ===
2025-10-16 18:32:13,844 sats.satellite.EO              INFO       <2388.00> EO: target index 15 tasked
2025-10-16 18:32:13,844 sats.satellite.EO              INFO       <2388.00> EO: Target(tgt-6739) tasked for imaging
2025-10-16 18:32:13,845 sats.satellite.EO              INFO       <2388.00> EO: Target(tgt-6739) window enabled: 2387.7 to 2486.7
2025-10-16 18:32:13,846 sats.satellite.EO              INFO       <2388.00> EO: setting timed terminal event at 2486.7
2025-10-16 18:32:13,870 sats.satellite.EO              INFO       <2487.00> EO: timed termination at 2486.7 for Target(tgt-6739) window
2025-10-16 18:32:13,871 data.base                      INFO       <2487.00> Total reward: {}
2025-10-16 18:32:13,871 comm.communication             INFO       <2487.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,872 sats.satellite.EO              INFO       <2487.00> EO: Satellite EO requires retasking
2025-10-16 18:32:13,900 gym                            INFO       <2487.00> Step reward: 0.0
2025-10-16 18:32:13,900 gym                            INFO       <2487.00> === STARTING STEP ===
2025-10-16 18:32:13,901 sats.satellite.EO              INFO       <2487.00> EO: target index 3 tasked
2025-10-16 18:32:13,902 sats.satellite.EO              INFO       <2487.00> EO: Target(tgt-6735) tasked for imaging
2025-10-16 18:32:13,902 sats.satellite.EO              INFO       <2487.00> EO: Target(tgt-6735) window enabled: 2404.7 to 2525.1
2025-10-16 18:32:13,903 sats.satellite.EO              INFO       <2487.00> EO: setting timed terminal event at 2525.1
2025-10-16 18:32:13,913 sats.satellite.EO              INFO       <2525.50> EO: timed termination at 2525.1 for Target(tgt-6735) window
2025-10-16 18:32:13,914 data.base                      INFO       <2525.50> Total reward: {}
2025-10-16 18:32:13,915 comm.communication             INFO       <2525.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,916 sats.satellite.EO              INFO       <2525.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,944 gym                            INFO       <2525.50> Step reward: 0.0
2025-10-16 18:32:13,945 gym                            INFO       <2525.50> === STARTING STEP ===
2025-10-16 18:32:13,945 sats.satellite.EO              INFO       <2525.50> EO: target index 6 tasked
2025-10-16 18:32:13,946 sats.satellite.EO              INFO       <2525.50> EO: Target(tgt-1980) tasked for imaging
2025-10-16 18:32:13,946 sats.satellite.EO              INFO       <2525.50> EO: Target(tgt-1980) window enabled: 2478.3 to 2568.4
2025-10-16 18:32:13,947 sats.satellite.EO              INFO       <2525.50> EO: setting timed terminal event at 2568.4
2025-10-16 18:32:13,958 sats.satellite.EO              INFO       <2568.50> EO: timed termination at 2568.4 for Target(tgt-1980) window
2025-10-16 18:32:13,959 data.base                      INFO       <2568.50> Total reward: {}
2025-10-16 18:32:13,959 comm.communication             INFO       <2568.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:13,960 sats.satellite.EO              INFO       <2568.50> EO: Satellite EO requires retasking
2025-10-16 18:32:13,988 gym                            INFO       <2568.50> Step reward: 0.0
2025-10-16 18:32:13,989 gym                            INFO       <2568.50> === STARTING STEP ===
2025-10-16 18:32:13,989 sats.satellite.EO              INFO       <2568.50> EO: target index 25 tasked
2025-10-16 18:32:13,989 sats.satellite.EO              INFO       <2568.50> EO: Target(tgt-798) tasked for imaging
2025-10-16 18:32:13,991 sats.satellite.EO              INFO       <2568.50> EO: Target(tgt-798) window enabled: 2666.6 to 2784.9
2025-10-16 18:32:13,991 sats.satellite.EO              INFO       <2568.50> EO: setting timed terminal event at 2784.9
2025-10-16 18:32:14,040 sats.satellite.EO              INFO       <2785.00> EO: timed termination at 2784.9 for Target(tgt-798) window
2025-10-16 18:32:14,042 data.base                      INFO       <2785.00> Total reward: {}
2025-10-16 18:32:14,042 comm.communication             INFO       <2785.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,043 sats.satellite.EO              INFO       <2785.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,071 gym                            INFO       <2785.00> Step reward: 0.0
2025-10-16 18:32:14,072 gym                            INFO       <2785.00> === STARTING STEP ===
2025-10-16 18:32:14,073 sats.satellite.EO              INFO       <2785.00> EO: target index 11 tasked
2025-10-16 18:32:14,073 sats.satellite.EO              INFO       <2785.00> EO: Target(tgt-5164) tasked for imaging
2025-10-16 18:32:14,074 sats.satellite.EO              INFO       <2785.00> EO: Target(tgt-5164) window enabled: 2733.1 to 2852.5
2025-10-16 18:32:14,075 sats.satellite.EO              INFO       <2785.00> EO: setting timed terminal event at 2852.5
2025-10-16 18:32:14,092 sats.satellite.EO              INFO       <2853.00> EO: timed termination at 2852.5 for Target(tgt-5164) window
2025-10-16 18:32:14,093 data.base                      INFO       <2853.00> Total reward: {}
2025-10-16 18:32:14,094 comm.communication             INFO       <2853.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,095 sats.satellite.EO              INFO       <2853.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,125 gym                            INFO       <2853.00> Step reward: 0.0
2025-10-16 18:32:14,126 gym                            INFO       <2853.00> === STARTING STEP ===
2025-10-16 18:32:14,126 sats.satellite.EO              INFO       <2853.00> EO: target index 0 tasked
2025-10-16 18:32:14,127 sats.satellite.EO              INFO       <2853.00> EO: Target(tgt-6641) tasked for imaging
2025-10-16 18:32:14,128 sats.satellite.EO              INFO       <2853.00> EO: Target(tgt-6641) window enabled: 2750.4 to 2870.7
2025-10-16 18:32:14,128 sats.satellite.EO              INFO       <2853.00> EO: setting timed terminal event at 2870.7
2025-10-16 18:32:14,135 sats.satellite.EO              INFO       <2871.00> EO: timed termination at 2870.7 for Target(tgt-6641) window
2025-10-16 18:32:14,136 data.base                      INFO       <2871.00> Total reward: {}
2025-10-16 18:32:14,137 comm.communication             INFO       <2871.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,138 sats.satellite.EO              INFO       <2871.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,166 gym                            INFO       <2871.00> Step reward: 0.0
2025-10-16 18:32:14,166 gym                            INFO       <2871.00> === STARTING STEP ===
2025-10-16 18:32:14,167 sats.satellite.EO              INFO       <2871.00> EO: target index 4 tasked
2025-10-16 18:32:14,167 sats.satellite.EO              INFO       <2871.00> EO: Target(tgt-2403) tasked for imaging
2025-10-16 18:32:14,168 sats.satellite.EO              INFO       <2871.00> EO: Target(tgt-2403) window enabled: 2896.1 to 2905.0
2025-10-16 18:32:14,169 sats.satellite.EO              INFO       <2871.00> EO: setting timed terminal event at 2905.0
2025-10-16 18:32:14,178 sats.satellite.EO              INFO       <2905.50> EO: timed termination at 2905.0 for Target(tgt-2403) window
2025-10-16 18:32:14,179 data.base                      INFO       <2905.50> Total reward: {}
2025-10-16 18:32:14,179 comm.communication             INFO       <2905.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,180 sats.satellite.EO              INFO       <2905.50> EO: Satellite EO requires retasking
2025-10-16 18:32:14,209 gym                            INFO       <2905.50> Step reward: 0.0
2025-10-16 18:32:14,209 gym                            INFO       <2905.50> === STARTING STEP ===
2025-10-16 18:32:14,209 sats.satellite.EO              INFO       <2905.50> EO: target index 1 tasked
2025-10-16 18:32:14,210 sats.satellite.EO              INFO       <2905.50> EO: Target(tgt-8397) tasked for imaging
2025-10-16 18:32:14,211 sats.satellite.EO              INFO       <2905.50> EO: Target(tgt-8397) window enabled: 2859.9 to 2908.8
2025-10-16 18:32:14,211 sats.satellite.EO              INFO       <2905.50> EO: setting timed terminal event at 2908.8
2025-10-16 18:32:14,213 sats.satellite.EO              INFO       <2909.00> EO: timed termination at 2908.8 for Target(tgt-8397) window
2025-10-16 18:32:14,214 data.base                      INFO       <2909.00> Total reward: {}
2025-10-16 18:32:14,215 comm.communication             INFO       <2909.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,216 sats.satellite.EO              INFO       <2909.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,243 gym                            INFO       <2909.00> Step reward: 0.0
2025-10-16 18:32:14,244 gym                            INFO       <2909.00> === STARTING STEP ===
2025-10-16 18:32:14,244 sats.satellite.EO              INFO       <2909.00> EO: target index 6 tasked
2025-10-16 18:32:14,245 sats.satellite.EO              INFO       <2909.00> EO: Target(tgt-1590) tasked for imaging
2025-10-16 18:32:14,245 sats.satellite.EO              INFO       <2909.00> EO: Target(tgt-1590) window enabled: 2879.9 to 2992.9
2025-10-16 18:32:14,246 sats.satellite.EO              INFO       <2909.00> EO: setting timed terminal event at 2992.9
2025-10-16 18:32:14,266 sats.satellite.EO              INFO       <2993.00> EO: timed termination at 2992.9 for Target(tgt-1590) window
2025-10-16 18:32:14,267 data.base                      INFO       <2993.00> Total reward: {}
2025-10-16 18:32:14,268 comm.communication             INFO       <2993.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,269 sats.satellite.EO              INFO       <2993.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,297 gym                            INFO       <2993.00> Step reward: 0.0
2025-10-16 18:32:14,298 gym                            INFO       <2993.00> === STARTING STEP ===
2025-10-16 18:32:14,298 sats.satellite.EO              INFO       <2993.00> EO: target index 5 tasked
2025-10-16 18:32:14,299 sats.satellite.EO              INFO       <2993.00> EO: Target(tgt-6032) tasked for imaging
2025-10-16 18:32:14,299 sats.satellite.EO              INFO       <2993.00> EO: Target(tgt-6032) window enabled: 2922.1 to 3042.1
2025-10-16 18:32:14,300 sats.satellite.EO              INFO       <2993.00> EO: setting timed terminal event at 3042.1
2025-10-16 18:32:14,312 sats.satellite.EO              INFO       <3042.50> EO: timed termination at 3042.1 for Target(tgt-6032) window
2025-10-16 18:32:14,314 data.base                      INFO       <3042.50> Total reward: {}
2025-10-16 18:32:14,314 comm.communication             INFO       <3042.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,315 sats.satellite.EO              INFO       <3042.50> EO: Satellite EO requires retasking
2025-10-16 18:32:14,344 gym                            INFO       <3042.50> Step reward: 0.0
2025-10-16 18:32:14,344 gym                            INFO       <3042.50> === STARTING STEP ===
2025-10-16 18:32:14,345 sats.satellite.EO              INFO       <3042.50> EO: target index 20 tasked
2025-10-16 18:32:14,346 sats.satellite.EO              INFO       <3042.50> EO: Target(tgt-5187) tasked for imaging
2025-10-16 18:32:14,347 sats.satellite.EO              INFO       <3042.50> EO: Target(tgt-5187) window enabled: 3070.1 to 3190.3
2025-10-16 18:32:14,347 sats.satellite.EO              INFO       <3042.50> EO: setting timed terminal event at 3190.3
2025-10-16 18:32:14,381 sats.satellite.EO              INFO       <3190.50> EO: timed termination at 3190.3 for Target(tgt-5187) window
2025-10-16 18:32:14,383 data.base                      INFO       <3190.50> Total reward: {}
2025-10-16 18:32:14,383 comm.communication             INFO       <3190.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,384 sats.satellite.EO              INFO       <3190.50> EO: Satellite EO requires retasking
2025-10-16 18:32:14,413 gym                            INFO       <3190.50> Step reward: 0.0
2025-10-16 18:32:14,414 gym                            INFO       <3190.50> === STARTING STEP ===
2025-10-16 18:32:14,414 sats.satellite.EO              INFO       <3190.50> EO: target index 27 tasked
2025-10-16 18:32:14,415 sats.satellite.EO              INFO       <3190.50> EO: Target(tgt-6892) tasked for imaging
2025-10-16 18:32:14,417 sats.satellite.EO              INFO       <3190.50> EO: Target(tgt-6892) window enabled: 3395.6 to 3490.6
2025-10-16 18:32:14,417 sats.satellite.EO              INFO       <3190.50> EO: setting timed terminal event at 3490.6
2025-10-16 18:32:14,501 sim.simulator                  INFO       <3490.50> Max step duration reached
2025-10-16 18:32:14,502 data.base                      INFO       <3490.50> Total reward: {}
2025-10-16 18:32:14,502 comm.communication             INFO       <3490.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,531 gym                            INFO       <3490.50> Step reward: 0.0
2025-10-16 18:32:14,532 gym                            INFO       <3490.50> === STARTING STEP ===
2025-10-16 18:32:14,532 sats.satellite.EO              INFO       <3490.50> EO: target index 6 tasked
2025-10-16 18:32:14,532 sats.satellite.EO              INFO       <3490.50> EO: Target(tgt-7387) tasked for imaging
2025-10-16 18:32:14,534 sats.satellite.EO              INFO       <3490.50> EO: Target(tgt-7387) window enabled: 3428.0 to 3534.7
2025-10-16 18:32:14,534 sats.satellite.EO              INFO       <3490.50> EO: setting timed terminal event at 3534.7
2025-10-16 18:32:14,545 sats.satellite.EO              INFO       <3535.00> EO: timed termination at 3534.7 for Target(tgt-7387) window
2025-10-16 18:32:14,546 data.base                      INFO       <3535.00> Total reward: {}
2025-10-16 18:32:14,547 comm.communication             INFO       <3535.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,548 sats.satellite.EO              INFO       <3535.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,576 gym                            INFO       <3535.00> Step reward: 0.0
2025-10-16 18:32:14,576 gym                            INFO       <3535.00> === STARTING STEP ===
2025-10-16 18:32:14,577 sats.satellite.EO              INFO       <3535.00> EO: target index 13 tasked
2025-10-16 18:32:14,577 sats.satellite.EO              INFO       <3535.00> EO: Target(tgt-4700) tasked for imaging
2025-10-16 18:32:14,578 sats.satellite.EO              INFO       <3535.00> EO: Target(tgt-4700) window enabled: 3547.8 to 3654.9
2025-10-16 18:32:14,578 sats.satellite.EO              INFO       <3535.00> EO: setting timed terminal event at 3654.9
2025-10-16 18:32:14,607 sats.satellite.EO              INFO       <3655.00> EO: timed termination at 3654.9 for Target(tgt-4700) window
2025-10-16 18:32:14,608 data.base                      INFO       <3655.00> Total reward: {}
2025-10-16 18:32:14,608 comm.communication             INFO       <3655.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,609 sats.satellite.EO              INFO       <3655.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,638 gym                            INFO       <3655.00> Step reward: 0.0
2025-10-16 18:32:14,639 gym                            INFO       <3655.00> === STARTING STEP ===
2025-10-16 18:32:14,640 sats.satellite.EO              INFO       <3655.00> EO: target index 6 tasked
2025-10-16 18:32:14,640 sats.satellite.EO              INFO       <3655.00> EO: Target(tgt-6901) tasked for imaging
2025-10-16 18:32:14,641 sats.satellite.EO              INFO       <3655.00> EO: Target(tgt-6901) window enabled: 3659.1 to 3698.7
2025-10-16 18:32:14,641 sats.satellite.EO              INFO       <3655.00> EO: setting timed terminal event at 3698.7
2025-10-16 18:32:14,655 sats.satellite.EO              INFO       <3699.00> EO: timed termination at 3698.7 for Target(tgt-6901) window
2025-10-16 18:32:14,656 data.base                      INFO       <3699.00> Total reward: {}
2025-10-16 18:32:14,656 comm.communication             INFO       <3699.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,657 sats.satellite.EO              INFO       <3699.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,685 gym                            INFO       <3699.00> Step reward: 0.0
2025-10-16 18:32:14,685 gym                            INFO       <3699.00> === STARTING STEP ===
2025-10-16 18:32:14,686 sats.satellite.EO              INFO       <3699.00> EO: target index 19 tasked
2025-10-16 18:32:14,687 sats.satellite.EO              INFO       <3699.00> EO: Target(tgt-4322) tasked for imaging
2025-10-16 18:32:14,688 sats.satellite.EO              INFO       <3699.00> EO: Target(tgt-4322) window enabled: 3719.5 to 3839.6
2025-10-16 18:32:14,688 sats.satellite.EO              INFO       <3699.00> EO: setting timed terminal event at 3839.6
2025-10-16 18:32:14,722 sats.satellite.EO              INFO       <3840.00> EO: timed termination at 3839.6 for Target(tgt-4322) window
2025-10-16 18:32:14,723 data.base                      INFO       <3840.00> Total reward: {}
2025-10-16 18:32:14,724 comm.communication             INFO       <3840.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,725 sats.satellite.EO              INFO       <3840.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,754 gym                            INFO       <3840.00> Step reward: 0.0
2025-10-16 18:32:14,755 gym                            INFO       <3840.00> === STARTING STEP ===
2025-10-16 18:32:14,756 sats.satellite.EO              INFO       <3840.00> EO: target index 18 tasked
2025-10-16 18:32:14,756 sats.satellite.EO              INFO       <3840.00> EO: Target(tgt-8852) tasked for imaging
2025-10-16 18:32:14,757 sats.satellite.EO              INFO       <3840.00> EO: Target(tgt-8852) window enabled: 3931.4 to 4020.5
2025-10-16 18:32:14,757 sats.satellite.EO              INFO       <3840.00> EO: setting timed terminal event at 4020.5
2025-10-16 18:32:14,804 sats.satellite.EO              INFO       <4021.00> EO: timed termination at 4020.5 for Target(tgt-8852) window
2025-10-16 18:32:14,806 data.base                      INFO       <4021.00> Total reward: {}
2025-10-16 18:32:14,806 comm.communication             INFO       <4021.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,807 sats.satellite.EO              INFO       <4021.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,835 gym                            INFO       <4021.00> Step reward: 0.0
2025-10-16 18:32:14,836 gym                            INFO       <4021.00> === STARTING STEP ===
2025-10-16 18:32:14,836 sats.satellite.EO              INFO       <4021.00> EO: target index 27 tasked
2025-10-16 18:32:14,837 sats.satellite.EO              INFO       <4021.00> EO: Target(tgt-4434) tasked for imaging
2025-10-16 18:32:14,838 sats.satellite.EO              INFO       <4021.00> EO: Target(tgt-4434) window enabled: 4125.3 to 4238.8
2025-10-16 18:32:14,838 sats.satellite.EO              INFO       <4021.00> EO: setting timed terminal event at 4238.8
2025-10-16 18:32:14,887 sats.satellite.EO              INFO       <4239.00> EO: timed termination at 4238.8 for Target(tgt-4434) window
2025-10-16 18:32:14,889 data.base                      INFO       <4239.00> Total reward: {}
2025-10-16 18:32:14,889 comm.communication             INFO       <4239.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,890 sats.satellite.EO              INFO       <4239.00> EO: Satellite EO requires retasking
2025-10-16 18:32:14,919 gym                            INFO       <4239.00> Step reward: 0.0
2025-10-16 18:32:14,919 gym                            INFO       <4239.00> === STARTING STEP ===
2025-10-16 18:32:14,920 sats.satellite.EO              INFO       <4239.00> EO: target index 25 tasked
2025-10-16 18:32:14,920 sats.satellite.EO              INFO       <4239.00> EO: Target(tgt-7451) tasked for imaging
2025-10-16 18:32:14,921 sats.satellite.EO              INFO       <4239.00> EO: Target(tgt-7451) window enabled: 4319.1 to 4415.4
2025-10-16 18:32:14,921 sats.satellite.EO              INFO       <4239.00> EO: setting timed terminal event at 4415.4
2025-10-16 18:32:14,970 sats.satellite.EO              INFO       <4415.50> EO: timed termination at 4415.4 for Target(tgt-7451) window
2025-10-16 18:32:14,971 data.base                      INFO       <4415.50> Total reward: {}
2025-10-16 18:32:14,972 comm.communication             INFO       <4415.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:14,973 sats.satellite.EO              INFO       <4415.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,002 gym                            INFO       <4415.50> Step reward: 0.0
2025-10-16 18:32:15,003 gym                            INFO       <4415.50> === STARTING STEP ===
2025-10-16 18:32:15,003 sats.satellite.EO              INFO       <4415.50> EO: target index 20 tasked
2025-10-16 18:32:15,004 sats.satellite.EO              INFO       <4415.50> EO: Target(tgt-1370) tasked for imaging
2025-10-16 18:32:15,005 sats.satellite.EO              INFO       <4415.50> EO: Target(tgt-1370) window enabled: 4457.6 to 4578.4
2025-10-16 18:32:15,005 sats.satellite.EO              INFO       <4415.50> EO: setting timed terminal event at 4578.4
2025-10-16 18:32:15,042 sats.satellite.EO              INFO       <4578.50> EO: timed termination at 4578.4 for Target(tgt-1370) window
2025-10-16 18:32:15,043 data.base                      INFO       <4578.50> Total reward: {}
2025-10-16 18:32:15,044 comm.communication             INFO       <4578.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,045 sats.satellite.EO              INFO       <4578.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,074 gym                            INFO       <4578.50> Step reward: 0.0
2025-10-16 18:32:15,074 gym                            INFO       <4578.50> === STARTING STEP ===
2025-10-16 18:32:15,075 sats.satellite.EO              INFO       <4578.50> EO: target index 18 tasked
2025-10-16 18:32:15,075 sats.satellite.EO              INFO       <4578.50> EO: Target(tgt-4141) tasked for imaging
2025-10-16 18:32:15,076 sats.satellite.EO              INFO       <4578.50> EO: Target(tgt-4141) window enabled: 4691.2 to 4767.6
2025-10-16 18:32:15,077 sats.satellite.EO              INFO       <4578.50> EO: setting timed terminal event at 4767.6
2025-10-16 18:32:15,119 sats.satellite.EO              INFO       <4768.00> EO: timed termination at 4767.6 for Target(tgt-4141) window
2025-10-16 18:32:15,121 data.base                      INFO       <4768.00> Total reward: {}
2025-10-16 18:32:15,121 comm.communication             INFO       <4768.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,122 sats.satellite.EO              INFO       <4768.00> EO: Satellite EO requires retasking
2025-10-16 18:32:15,151 gym                            INFO       <4768.00> Step reward: 0.0
2025-10-16 18:32:15,152 gym                            INFO       <4768.00> === STARTING STEP ===
2025-10-16 18:32:15,152 sats.satellite.EO              INFO       <4768.00> EO: target index 26 tasked
2025-10-16 18:32:15,153 sats.satellite.EO              INFO       <4768.00> EO: Target(tgt-3854) tasked for imaging
2025-10-16 18:32:15,154 sats.satellite.EO              INFO       <4768.00> EO: Target(tgt-3854) window enabled: 4808.3 to 4920.0
2025-10-16 18:32:15,154 sats.satellite.EO              INFO       <4768.00> EO: setting timed terminal event at 4920.0
2025-10-16 18:32:15,198 sats.satellite.EO              INFO       <4920.50> EO: timed termination at 4920.0 for Target(tgt-3854) window
2025-10-16 18:32:15,199 data.base                      INFO       <4920.50> Total reward: {}
2025-10-16 18:32:15,200 comm.communication             INFO       <4920.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,201 sats.satellite.EO              INFO       <4920.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,230 gym                            INFO       <4920.50> Step reward: 0.0
2025-10-16 18:32:15,230 gym                            INFO       <4920.50> === STARTING STEP ===
2025-10-16 18:32:15,231 sats.satellite.EO              INFO       <4920.50> EO: target index 15 tasked
2025-10-16 18:32:15,231 sats.satellite.EO              INFO       <4920.50> EO: Target(tgt-9356) tasked for imaging
2025-10-16 18:32:15,232 sats.satellite.EO              INFO       <4920.50> EO: Target(tgt-9356) window enabled: 4919.6 to 5030.5
2025-10-16 18:32:15,232 sats.satellite.EO              INFO       <4920.50> EO: setting timed terminal event at 5030.5
2025-10-16 18:32:15,258 sats.satellite.EO              INFO       <5031.00> EO: timed termination at 5030.5 for Target(tgt-9356) window
2025-10-16 18:32:15,260 data.base                      INFO       <5031.00> Total reward: {}
2025-10-16 18:32:15,260 comm.communication             INFO       <5031.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,261 sats.satellite.EO              INFO       <5031.00> EO: Satellite EO requires retasking
2025-10-16 18:32:15,291 gym                            INFO       <5031.00> Step reward: 0.0
2025-10-16 18:32:15,291 gym                            INFO       <5031.00> === STARTING STEP ===
2025-10-16 18:32:15,292 sats.satellite.EO              INFO       <5031.00> EO: target index 26 tasked
2025-10-16 18:32:15,292 sats.satellite.EO              INFO       <5031.00> EO: Target(tgt-577) tasked for imaging
2025-10-16 18:32:15,293 sats.satellite.EO              INFO       <5031.00> EO: Target(tgt-577) window enabled: 5124.4 to 5224.2
2025-10-16 18:32:15,294 sats.satellite.EO              INFO       <5031.00> EO: setting timed terminal event at 5224.2
2025-10-16 18:32:15,340 sats.satellite.EO              INFO       <5224.50> EO: timed termination at 5224.2 for Target(tgt-577) window
2025-10-16 18:32:15,341 data.base                      INFO       <5224.50> Total reward: {}
2025-10-16 18:32:15,342 comm.communication             INFO       <5224.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,343 sats.satellite.EO              INFO       <5224.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,372 gym                            INFO       <5224.50> Step reward: 0.0
2025-10-16 18:32:15,373 gym                            INFO       <5224.50> === STARTING STEP ===
2025-10-16 18:32:15,373 sats.satellite.EO              INFO       <5224.50> EO: target index 12 tasked
2025-10-16 18:32:15,374 sats.satellite.EO              INFO       <5224.50> EO: Target(tgt-6861) tasked for imaging
2025-10-16 18:32:15,374 sats.satellite.EO              INFO       <5224.50> EO: Target(tgt-6861) window enabled: 5280.4 to 5360.1
2025-10-16 18:32:15,375 sats.satellite.EO              INFO       <5224.50> EO: setting timed terminal event at 5360.1
2025-10-16 18:32:15,414 sats.satellite.EO              INFO       <5360.50> EO: timed termination at 5360.1 for Target(tgt-6861) window
2025-10-16 18:32:15,416 data.base                      INFO       <5360.50> Total reward: {}
2025-10-16 18:32:15,417 comm.communication             INFO       <5360.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,418 sats.satellite.EO              INFO       <5360.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,455 gym                            INFO       <5360.50> Step reward: 0.0
2025-10-16 18:32:15,455 gym                            INFO       <5360.50> === STARTING STEP ===
2025-10-16 18:32:15,456 sats.satellite.EO              INFO       <5360.50> EO: target index 15 tasked
2025-10-16 18:32:15,457 sats.satellite.EO              INFO       <5360.50> EO: Target(tgt-443) tasked for imaging
2025-10-16 18:32:15,457 sats.satellite.EO              INFO       <5360.50> EO: Target(tgt-443) window enabled: 5353.2 to 5475.4
2025-10-16 18:32:15,458 sats.satellite.EO              INFO       <5360.50> EO: setting timed terminal event at 5475.4
2025-10-16 18:32:15,484 sats.satellite.EO              INFO       <5475.50> EO: timed termination at 5475.4 for Target(tgt-443) window
2025-10-16 18:32:15,486 data.base                      INFO       <5475.50> Total reward: {}
2025-10-16 18:32:15,486 comm.communication             INFO       <5475.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,487 sats.satellite.EO              INFO       <5475.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,516 gym                            INFO       <5475.50> Step reward: 0.0
2025-10-16 18:32:15,517 gym                            INFO       <5475.50> === STARTING STEP ===
2025-10-16 18:32:15,518 sats.satellite.EO              INFO       <5475.50> EO: target index 26 tasked
2025-10-16 18:32:15,518 sats.satellite.EO              INFO       <5475.50> EO: Target(tgt-9165) tasked for imaging
2025-10-16 18:32:15,519 sats.satellite.EO              INFO       <5475.50> EO: Target(tgt-9165) window enabled: 5573.2 to 5657.6
2025-10-16 18:32:15,520 sats.satellite.EO              INFO       <5475.50> EO: setting timed terminal event at 5657.6
2025-10-16 18:32:15,570 sats.satellite.EO              INFO       <5658.00> EO: timed termination at 5657.6 for Target(tgt-9165) window
2025-10-16 18:32:15,572 data.base                      INFO       <5658.00> Total reward: {}
2025-10-16 18:32:15,572 comm.communication             INFO       <5658.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,574 sats.satellite.EO              INFO       <5658.00> EO: Satellite EO requires retasking
2025-10-16 18:32:15,604 gym                            INFO       <5658.00> Step reward: 0.0
2025-10-16 18:32:15,605 gym                            INFO       <5658.00> === STARTING STEP ===
2025-10-16 18:32:15,605 sats.satellite.EO              INFO       <5658.00> EO: target index 31 tasked
2025-10-16 18:32:15,606 sats.satellite.EO              INFO       <5658.00> EO: Target(tgt-8263) tasked for imaging
2025-10-16 18:32:15,607 sats.satellite.EO              INFO       <5658.00> EO: Target(tgt-8263) window enabled: 5793.6 to 5914.1
2025-10-16 18:32:15,608 sats.satellite.EO              INFO       <5658.00> EO: setting timed terminal event at 5914.1
2025-10-16 18:32:15,665 sats.satellite.EO              INFO       <5914.50> EO: timed termination at 5914.1 for Target(tgt-8263) window
2025-10-16 18:32:15,667 data.base                      INFO       <5914.50> Total reward: {}
2025-10-16 18:32:15,667 comm.communication             INFO       <5914.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,668 sats.satellite.EO              INFO       <5914.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,699 gym                            INFO       <5914.50> Step reward: 0.0
2025-10-16 18:32:15,700 gym                            INFO       <5914.50> === STARTING STEP ===
2025-10-16 18:32:15,700 sats.satellite.EO              INFO       <5914.50> EO: target index 1 tasked
2025-10-16 18:32:15,701 sats.satellite.EO              INFO       <5914.50> EO: Target(tgt-596) tasked for imaging
2025-10-16 18:32:15,702 sats.satellite.EO              INFO       <5914.50> EO: Target(tgt-596) window enabled: 5900.3 to 5929.9
2025-10-16 18:32:15,703 sats.satellite.EO              INFO       <5914.50> EO: setting timed terminal event at 5929.9
2025-10-16 18:32:15,707 sats.satellite.EO              INFO       <5930.00> EO: timed termination at 5929.9 for Target(tgt-596) window
2025-10-16 18:32:15,709 data.base                      INFO       <5930.00> Total reward: {}
2025-10-16 18:32:15,709 comm.communication             INFO       <5930.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,710 sats.satellite.EO              INFO       <5930.00> EO: Satellite EO requires retasking
2025-10-16 18:32:15,740 gym                            INFO       <5930.00> Step reward: 0.0
2025-10-16 18:32:15,740 gym                            INFO       <5930.00> === STARTING STEP ===
2025-10-16 18:32:15,741 sats.satellite.EO              INFO       <5930.00> EO: target index 2 tasked
2025-10-16 18:32:15,741 sats.satellite.EO              INFO       <5930.00> EO: Target(tgt-3339) tasked for imaging
2025-10-16 18:32:15,742 sats.satellite.EO              INFO       <5930.00> EO: Target(tgt-3339) window enabled: 5866.6 to 5943.6
2025-10-16 18:32:15,743 sats.satellite.EO              INFO       <5930.00> EO: setting timed terminal event at 5943.6
2025-10-16 18:32:15,747 sats.satellite.EO              INFO       <5944.00> EO: timed termination at 5943.6 for Target(tgt-3339) window
2025-10-16 18:32:15,748 data.base                      INFO       <5944.00> Total reward: {}
2025-10-16 18:32:15,749 comm.communication             INFO       <5944.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,750 sats.satellite.EO              INFO       <5944.00> EO: Satellite EO requires retasking
2025-10-16 18:32:15,780 gym                            INFO       <5944.00> Step reward: 0.0
2025-10-16 18:32:15,781 gym                            INFO       <5944.00> === STARTING STEP ===
2025-10-16 18:32:15,781 sats.satellite.EO              INFO       <5944.00> EO: target index 4 tasked
2025-10-16 18:32:15,782 sats.satellite.EO              INFO       <5944.00> EO: Target(tgt-9022) tasked for imaging
2025-10-16 18:32:15,782 sats.satellite.EO              INFO       <5944.00> EO: Target(tgt-9022) window enabled: 5885.0 to 5951.2
2025-10-16 18:32:15,783 sats.satellite.EO              INFO       <5944.00> EO: setting timed terminal event at 5951.2
2025-10-16 18:32:15,786 sats.satellite.EO              INFO       <5951.50> EO: timed termination at 5951.2 for Target(tgt-9022) window
2025-10-16 18:32:15,787 data.base                      INFO       <5951.50> Total reward: {}
2025-10-16 18:32:15,788 comm.communication             INFO       <5951.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,789 sats.satellite.EO              INFO       <5951.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,818 gym                            INFO       <5951.50> Step reward: 0.0
2025-10-16 18:32:15,819 gym                            INFO       <5951.50> === STARTING STEP ===
2025-10-16 18:32:15,819 sats.satellite.EO              INFO       <5951.50> EO: target index 24 tasked
2025-10-16 18:32:15,820 sats.satellite.EO              INFO       <5951.50> EO: Target(tgt-4490) tasked for imaging
2025-10-16 18:32:15,821 sats.satellite.EO              INFO       <5951.50> EO: Target(tgt-4490) window enabled: 6014.5 to 6128.2
2025-10-16 18:32:15,822 sats.satellite.EO              INFO       <5951.50> EO: setting timed terminal event at 6128.2
2025-10-16 18:32:15,861 sats.satellite.EO              INFO       <6128.50> EO: timed termination at 6128.2 for Target(tgt-4490) window
2025-10-16 18:32:15,863 data.base                      INFO       <6128.50> Total reward: {}
2025-10-16 18:32:15,863 comm.communication             INFO       <6128.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,864 sats.satellite.EO              INFO       <6128.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,894 gym                            INFO       <6128.50> Step reward: 0.0
2025-10-16 18:32:15,895 gym                            INFO       <6128.50> === STARTING STEP ===
2025-10-16 18:32:15,895 sats.satellite.EO              INFO       <6128.50> EO: target index 7 tasked
2025-10-16 18:32:15,896 sats.satellite.EO              INFO       <6128.50> EO: Target(tgt-8967) tasked for imaging
2025-10-16 18:32:15,896 sats.satellite.EO              INFO       <6128.50> EO: Target(tgt-8967) window enabled: 6059.3 to 6181.0
2025-10-16 18:32:15,897 sats.satellite.EO              INFO       <6128.50> EO: setting timed terminal event at 6181.0
2025-10-16 18:32:15,910 sats.satellite.EO              INFO       <6181.50> EO: timed termination at 6181.0 for Target(tgt-8967) window
2025-10-16 18:32:15,912 data.base                      INFO       <6181.50> Total reward: {}
2025-10-16 18:32:15,912 comm.communication             INFO       <6181.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,913 sats.satellite.EO              INFO       <6181.50> EO: Satellite EO requires retasking
2025-10-16 18:32:15,942 gym                            INFO       <6181.50> Step reward: 0.0
2025-10-16 18:32:15,943 gym                            INFO       <6181.50> === STARTING STEP ===
2025-10-16 18:32:15,943 sats.satellite.EO              INFO       <6181.50> EO: target index 19 tasked
2025-10-16 18:32:15,944 sats.satellite.EO              INFO       <6181.50> EO: Target(tgt-9678) tasked for imaging
2025-10-16 18:32:15,945 sats.satellite.EO              INFO       <6181.50> EO: Target(tgt-9678) window enabled: 6200.1 to 6322.2
2025-10-16 18:32:15,946 sats.satellite.EO              INFO       <6181.50> EO: setting timed terminal event at 6322.2
2025-10-16 18:32:15,978 sats.satellite.EO              INFO       <6322.50> EO: timed termination at 6322.2 for Target(tgt-9678) window
2025-10-16 18:32:15,979 data.base                      INFO       <6322.50> Total reward: {}
2025-10-16 18:32:15,979 comm.communication             INFO       <6322.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:15,980 sats.satellite.EO              INFO       <6322.50> EO: Satellite EO requires retasking
2025-10-16 18:32:16,012 gym                            INFO       <6322.50> Step reward: 0.0
2025-10-16 18:32:16,013 gym                            INFO       <6322.50> === STARTING STEP ===
2025-10-16 18:32:16,013 sats.satellite.EO              INFO       <6322.50> EO: target index 10 tasked
2025-10-16 18:32:16,014 sats.satellite.EO              INFO       <6322.50> EO: Target(tgt-3405) tasked for imaging
2025-10-16 18:32:16,015 sats.satellite.EO              INFO       <6322.50> EO: Target(tgt-3405) window enabled: 6340.2 to 6444.2
2025-10-16 18:32:16,015 sats.satellite.EO              INFO       <6322.50> EO: setting timed terminal event at 6444.2
2025-10-16 18:32:16,044 sats.satellite.EO              INFO       <6444.50> EO: timed termination at 6444.2 for Target(tgt-3405) window
2025-10-16 18:32:16,045 data.base                      INFO       <6444.50> Total reward: {}
2025-10-16 18:32:16,045 comm.communication             INFO       <6444.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,046 sats.satellite.EO              INFO       <6444.50> EO: Satellite EO requires retasking
2025-10-16 18:32:16,077 gym                            INFO       <6444.50> Step reward: 0.0
2025-10-16 18:32:16,078 gym                            INFO       <6444.50> === STARTING STEP ===
2025-10-16 18:32:16,079 sats.satellite.EO              INFO       <6444.50> EO: target index 26 tasked
2025-10-16 18:32:16,079 sats.satellite.EO              INFO       <6444.50> EO: Target(tgt-22) tasked for imaging
2025-10-16 18:32:16,080 sats.satellite.EO              INFO       <6444.50> EO: Target(tgt-22) window enabled: 6561.7 to 6658.6
2025-10-16 18:32:16,081 sats.satellite.EO              INFO       <6444.50> EO: setting timed terminal event at 6658.6
2025-10-16 18:32:16,129 sats.satellite.EO              INFO       <6659.00> EO: timed termination at 6658.6 for Target(tgt-22) window
2025-10-16 18:32:16,130 data.base                      INFO       <6659.00> Total reward: {}
2025-10-16 18:32:16,131 comm.communication             INFO       <6659.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,132 sats.satellite.EO              INFO       <6659.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,163 gym                            INFO       <6659.00> Step reward: 0.0
2025-10-16 18:32:16,163 gym                            INFO       <6659.00> === STARTING STEP ===
2025-10-16 18:32:16,164 sats.satellite.EO              INFO       <6659.00> EO: target index 27 tasked
2025-10-16 18:32:16,164 sats.satellite.EO              INFO       <6659.00> EO: Target(tgt-392) tasked for imaging
2025-10-16 18:32:16,165 sats.satellite.EO              INFO       <6659.00> EO: Target(tgt-392) window enabled: 6783.7 to 6904.0
2025-10-16 18:32:16,165 sats.satellite.EO              INFO       <6659.00> EO: setting timed terminal event at 6904.0
2025-10-16 18:32:16,237 sats.satellite.EO              INFO       <6904.00> EO: timed termination at 6904.0 for Target(tgt-392) window
2025-10-16 18:32:16,238 data.base                      INFO       <6904.00> Total reward: {}
2025-10-16 18:32:16,238 comm.communication             INFO       <6904.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,239 sats.satellite.EO              INFO       <6904.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,271 gym                            INFO       <6904.00> Step reward: 0.0
2025-10-16 18:32:16,272 gym                            INFO       <6904.00> === STARTING STEP ===
2025-10-16 18:32:16,272 sats.satellite.EO              INFO       <6904.00> EO: target index 26 tasked
2025-10-16 18:32:16,273 sats.satellite.EO              INFO       <6904.00> EO: Target(tgt-2717) tasked for imaging
2025-10-16 18:32:16,273 sats.satellite.EO              INFO       <6904.00> EO: Target(tgt-2717) window enabled: 7019.8 to 7126.0
2025-10-16 18:32:16,274 sats.satellite.EO              INFO       <6904.00> EO: setting timed terminal event at 7126.0
2025-10-16 18:32:16,338 sats.satellite.EO              INFO       <7126.50> EO: timed termination at 7126.0 for Target(tgt-2717) window
2025-10-16 18:32:16,339 data.base                      INFO       <7126.50> Total reward: {}
2025-10-16 18:32:16,339 comm.communication             INFO       <7126.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,340 sats.satellite.EO              INFO       <7126.50> EO: Satellite EO requires retasking
2025-10-16 18:32:16,371 gym                            INFO       <7126.50> Step reward: 0.0
2025-10-16 18:32:16,372 gym                            INFO       <7126.50> === STARTING STEP ===
2025-10-16 18:32:16,372 sats.satellite.EO              INFO       <7126.50> EO: target index 25 tasked
2025-10-16 18:32:16,373 sats.satellite.EO              INFO       <7126.50> EO: Target(tgt-3750) tasked for imaging
2025-10-16 18:32:16,374 sats.satellite.EO              INFO       <7126.50> EO: Target(tgt-3750) window enabled: 7216.3 to 7333.8
2025-10-16 18:32:16,374 sats.satellite.EO              INFO       <7126.50> EO: setting timed terminal event at 7333.8
2025-10-16 18:32:16,424 sats.satellite.EO              INFO       <7334.00> EO: timed termination at 7333.8 for Target(tgt-3750) window
2025-10-16 18:32:16,425 data.base                      INFO       <7334.00> Total reward: {}
2025-10-16 18:32:16,425 comm.communication             INFO       <7334.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,426 sats.satellite.EO              INFO       <7334.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,458 gym                            INFO       <7334.00> Step reward: 0.0
2025-10-16 18:32:16,459 gym                            INFO       <7334.00> === STARTING STEP ===
2025-10-16 18:32:16,459 sats.satellite.EO              INFO       <7334.00> EO: target index 12 tasked
2025-10-16 18:32:16,460 sats.satellite.EO              INFO       <7334.00> EO: Target(tgt-4175) tasked for imaging
2025-10-16 18:32:16,461 sats.satellite.EO              INFO       <7334.00> EO: Target(tgt-4175) window enabled: 7373.6 to 7472.6
2025-10-16 18:32:16,461 sats.satellite.EO              INFO       <7334.00> EO: setting timed terminal event at 7472.6
2025-10-16 18:32:16,494 sats.satellite.EO              INFO       <7473.00> EO: timed termination at 7472.6 for Target(tgt-4175) window
2025-10-16 18:32:16,495 data.base                      INFO       <7473.00> Total reward: {}
2025-10-16 18:32:16,495 comm.communication             INFO       <7473.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,496 sats.satellite.EO              INFO       <7473.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,527 gym                            INFO       <7473.00> Step reward: 0.0
2025-10-16 18:32:16,527 gym                            INFO       <7473.00> === STARTING STEP ===
2025-10-16 18:32:16,528 sats.satellite.EO              INFO       <7473.00> EO: action_charge tasked for 60.0 seconds
2025-10-16 18:32:16,528 sats.satellite.EO              INFO       <7473.00> EO: setting timed terminal event at 7533.0
2025-10-16 18:32:16,545 sats.satellite.EO              INFO       <7533.00> EO: timed termination at 7533.0 for action_charge
2025-10-16 18:32:16,547 data.base                      INFO       <7533.00> Total reward: {}
2025-10-16 18:32:16,547 comm.communication             INFO       <7533.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,548 sats.satellite.EO              INFO       <7533.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,579 gym                            INFO       <7533.00> Step reward: 0.0
2025-10-16 18:32:16,580 gym                            INFO       <7533.00> === STARTING STEP ===
2025-10-16 18:32:16,580 sats.satellite.EO              INFO       <7533.00> EO: target index 26 tasked
2025-10-16 18:32:16,581 sats.satellite.EO              INFO       <7533.00> EO: Target(tgt-2327) tasked for imaging
2025-10-16 18:32:16,582 sats.satellite.EO              INFO       <7533.00> EO: Target(tgt-2327) window enabled: 7745.0 to 7858.2
2025-10-16 18:32:16,582 sats.satellite.EO              INFO       <7533.00> EO: setting timed terminal event at 7858.2
2025-10-16 18:32:16,661 sim.simulator                  INFO       <7833.00> Max step duration reached
2025-10-16 18:32:16,662 data.base                      INFO       <7833.00> Total reward: {}
2025-10-16 18:32:16,663 comm.communication             INFO       <7833.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,694 gym                            INFO       <7833.00> Step reward: 0.0
2025-10-16 18:32:16,695 gym                            INFO       <7833.00> === STARTING STEP ===
2025-10-16 18:32:16,695 sats.satellite.EO              INFO       <7833.00> EO: target index 30 tasked
2025-10-16 18:32:16,696 sats.satellite.EO              INFO       <7833.00> EO: Target(tgt-9623) tasked for imaging
2025-10-16 18:32:16,696 sats.satellite.EO              INFO       <7833.00> EO: Target(tgt-9623) window enabled: 7996.2 to 8053.8
2025-10-16 18:32:16,697 sats.satellite.EO              INFO       <7833.00> EO: setting timed terminal event at 8053.8
2025-10-16 18:32:16,751 sats.satellite.EO              INFO       <8054.00> EO: timed termination at 8053.8 for Target(tgt-9623) window
2025-10-16 18:32:16,752 data.base                      INFO       <8054.00> Total reward: {}
2025-10-16 18:32:16,752 comm.communication             INFO       <8054.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,753 sats.satellite.EO              INFO       <8054.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,785 gym                            INFO       <8054.00> Step reward: 0.0
2025-10-16 18:32:16,786 gym                            INFO       <8054.00> === STARTING STEP ===
2025-10-16 18:32:16,786 sats.satellite.EO              INFO       <8054.00> EO: target index 18 tasked
2025-10-16 18:32:16,787 sats.satellite.EO              INFO       <8054.00> EO: Target(tgt-8888) tasked for imaging
2025-10-16 18:32:16,787 sats.satellite.EO              INFO       <8054.00> EO: Target(tgt-8888) window enabled: 8047.7 to 8157.5
2025-10-16 18:32:16,789 sats.satellite.EO              INFO       <8054.00> EO: setting timed terminal event at 8157.5
2025-10-16 18:32:16,817 sats.satellite.EO              INFO       <8158.00> EO: timed termination at 8157.5 for Target(tgt-8888) window
2025-10-16 18:32:16,819 data.base                      INFO       <8158.00> Total reward: {}
2025-10-16 18:32:16,819 comm.communication             INFO       <8158.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,820 sats.satellite.EO              INFO       <8158.00> EO: Satellite EO requires retasking
2025-10-16 18:32:16,851 gym                            INFO       <8158.00> Step reward: 0.0
2025-10-16 18:32:16,851 gym                            INFO       <8158.00> === STARTING STEP ===
2025-10-16 18:32:16,852 sats.satellite.EO              INFO       <8158.00> EO: target index 22 tasked
2025-10-16 18:32:16,852 sats.satellite.EO              INFO       <8158.00> EO: Target(tgt-6346) tasked for imaging
2025-10-16 18:32:16,853 sats.satellite.EO              INFO       <8158.00> EO: Target(tgt-6346) window enabled: 8199.0 to 8302.4
2025-10-16 18:32:16,853 sats.satellite.EO              INFO       <8158.00> EO: setting timed terminal event at 8302.4
2025-10-16 18:32:16,894 sats.satellite.EO              INFO       <8302.50> EO: timed termination at 8302.4 for Target(tgt-6346) window
2025-10-16 18:32:16,895 data.base                      INFO       <8302.50> Total reward: {}
2025-10-16 18:32:16,896 comm.communication             INFO       <8302.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,897 sats.satellite.EO              INFO       <8302.50> EO: Satellite EO requires retasking
2025-10-16 18:32:16,928 gym                            INFO       <8302.50> Step reward: 0.0
2025-10-16 18:32:16,928 gym                            INFO       <8302.50> === STARTING STEP ===
2025-10-16 18:32:16,929 sats.satellite.EO              INFO       <8302.50> EO: target index 21 tasked
2025-10-16 18:32:16,929 sats.satellite.EO              INFO       <8302.50> EO: Target(tgt-4333) tasked for imaging
2025-10-16 18:32:16,930 sats.satellite.EO              INFO       <8302.50> EO: Target(tgt-4333) window enabled: 8455.7 to 8484.1
2025-10-16 18:32:16,930 sats.satellite.EO              INFO       <8302.50> EO: setting timed terminal event at 8484.1
2025-10-16 18:32:16,972 sats.satellite.EO              INFO       <8484.50> EO: timed termination at 8484.1 for Target(tgt-4333) window
2025-10-16 18:32:16,973 data.base                      INFO       <8484.50> Total reward: {}
2025-10-16 18:32:16,974 comm.communication             INFO       <8484.50> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:16,974 sats.satellite.EO              INFO       <8484.50> EO: Satellite EO requires retasking
2025-10-16 18:32:17,007 gym                            INFO       <8484.50> Step reward: 0.0
2025-10-16 18:32:17,008 gym                            INFO       <8484.50> === STARTING STEP ===
2025-10-16 18:32:17,008 sats.satellite.EO              INFO       <8484.50> EO: target index 18 tasked
2025-10-16 18:32:17,009 sats.satellite.EO              INFO       <8484.50> EO: Target(tgt-7339) tasked for imaging
2025-10-16 18:32:17,009 sats.satellite.EO              INFO       <8484.50> EO: Target(tgt-7339) window enabled: 8542.4 to 8648.6
2025-10-16 18:32:17,010 sats.satellite.EO              INFO       <8484.50> EO: setting timed terminal event at 8648.6
2025-10-16 18:32:17,058 sats.satellite.EO              INFO       <8649.00> EO: timed termination at 8648.6 for Target(tgt-7339) window
2025-10-16 18:32:17,059 data.base                      INFO       <8649.00> Total reward: {}
2025-10-16 18:32:17,060 comm.communication             INFO       <8649.00> Optimizing data communication between all pairs of satellites
2025-10-16 18:32:17,061 sats.satellite.EO              INFO       <8649.00> EO: Satellite EO requires retasking
2025-10-16 18:32:17,092 sats.satellite.EO              WARNING    <8649.00> EO: failed battery_valid check
2025-10-16 18:32:17,092 gym                            INFO       <8649.00> Step reward: 0.0
2025-10-16 18:32:17,093 gym                            INFO       <8649.00> Episode terminated: True
2025-10-16 18:32:17,094 gym                            INFO       <8649.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(3.0458221555470875)}
Covered by clouds: {Target(tgt-9381), Target(tgt-7233), Target(tgt-2122), Target(tgt-3644), Target(tgt-989), Target(tgt-2872), Target(tgt-4585)}
Not covered by clouds: {Target(tgt-8845), Target(tgt-5474), Target(tgt-2988), Target(tgt-7646), Target(tgt-1821), Target(tgt-436), Target(tgt-3706), Target(tgt-437), Target(tgt-369), Target(tgt-5792), Target(tgt-5856), Target(tgt-8239)}