Cloud Environment

This tutorial demonstrates the configuration and use of a simple BSK-RL environment considering cloud coverage. The satellite has to image targets while managing its battery level. Additionally, reward is inversely proportional to the amount of cloud coverage. Still, the satellite cannot observe the true cloud coverage of each target, only its forecast.

Load Modules

[1]:
import gymnasium as gym
import numpy as np
from typing import Optional

from Basilisk.architecture import bskLogging
from Basilisk.utilities import orbitalMotion
from bsk_rl import act, obs, sats
from bsk_rl.sim import dyn, fsw
from bsk_rl.utils.orbital import random_orbit
from bsk_rl.scene.targets import UniformTargets
from bsk_rl.data.unique_image_data import (
    UniqueImageData,
    UniqueImageStore,
    UniqueImageReward,
)

bskLogging.setDefaultLogLevel(bskLogging.BSK_WARNING)

Configure the Satellite

  • 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,
    scenario=scenario,
    rewarder=rewarder,
    sim_rate=0.5,
    max_step_duration=300.0,
    time_limit=95 * 60 * 3,
    log_level="INFO",
    failure_penalty=0,
    # disable_env_checker=True,  # For debugging
)
2026-05-19 20:28:22,483 gym                            INFO       Calling env.reset() to get observation space
2026-05-19 20:28:22,483 gym                            INFO       Resetting environment with seed=1961904986
2026-05-19 20:28:22,485 scene.targets                  INFO       Generating 9254 targets
2026-05-19 20:28:22,699 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-05-19 20:28:24,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)
2026-05-19 20:28:24,569 gym                            INFO       Resetting environment with seed=1
2026-05-19 20:28:24,571 scene.targets                  INFO       Generating 9920 targets
2026-05-19 20:28:24,770 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-05-19 20:28:26,871 utils.orbital                  WARNING    <0.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:26,873 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.5643954203724236, 'opportunity_close_normd': 0.6302962032834142}}
eclipse:  [1.0, 1.0]
target:  {'target_0': {'priority': 0.15188087924578286, 'prop_1': np.float64(0.99621184759255), 'prop_2': 0.01994306637679705}, 'target_1': {'priority': 0.45408991725807724, 'prop_1': np.float64(0.874052642439568), 'prop_2': 0.024897489369114685}, 'target_2': {'priority': 0.9974742584612157, 'prop_1': np.float64(0.23281787763016193), 'prop_2': 0.017187270653050937}, 'target_3': {'priority': 0.6226449255263621, 'prop_1': np.float64(0.16615572477135115), 'prop_2': 0.0397428591914165}, 'target_4': {'priority': 0.64110481456894, 'prop_1': np.float64(0.43956713900862204), 'prop_2': 0.0340473472529546}, 'target_5': {'priority': 0.06188246788512386, 'prop_1': np.float64(1.0), 'prop_2': 0.04915355747465875}, 'target_6': {'priority': 0.41637743150489814, 'prop_1': np.float64(0.6414641561471661), 'prop_2': 0.03964127131943236}, 'target_7': {'priority': 0.11649443653250835, 'prop_1': np.float64(1.0), 'prop_2': 0.030915002844493736}, 'target_8': {'priority': 0.024073691044198653, 'prop_1': np.float64(0.7824145445337269), 'prop_2': 0.012737288328598622}, 'target_9': {'priority': 0.9837855541915604, 'prop_1': np.float64(0.5999478704231446), 'prop_2': 0.041158164826759686}, 'target_10': {'priority': 0.5006195729230891, 'prop_1': np.float64(0.33257922871550927), 'prop_2': 0.030972496793019902}, 'target_11': {'priority': 0.9818994020158649, 'prop_1': np.float64(0.2795779616797209), 'prop_2': 0.014305523848347735}, 'target_12': {'priority': 0.34420130779211366, 'prop_1': np.float64(0.9921866170914561), 'prop_2': 0.025988506848865646}, 'target_13': {'priority': 0.03597928584932897, 'prop_1': np.float64(0.25849229848356386), 'prop_2': 0.02508709527630866}, 'target_14': {'priority': 0.6106826298238791, 'prop_1': np.float64(0.4331358500437723), 'prop_2': 0.04619760042322715}, 'target_15': {'priority': 0.6172276417522594, 'prop_1': np.float64(0.6040285964715363), 'prop_2': 0.021453269167399543}, 'target_16': {'priority': 0.4059609797467638, 'prop_1': np.float64(0.3150991123390838), 'prop_2': 0.026283028618400962}, 'target_17': {'priority': 0.618930423097489, 'prop_1': np.float64(0.26503065014605437), 'prop_2': 0.03970130222062493}, 'target_18': {'priority': 0.4534325175961308, 'prop_1': np.float64(0.1726335068120615), 'prop_2': 0.019029710522383173}, 'target_19': {'priority': 0.2191222392982266, 'prop_1': np.float64(0.6471546794019115), 'prop_2': 0.02363442279473462}, 'target_20': {'priority': 0.0012690216963487932, 'prop_1': np.float64(0.34316798721006386), 'prop_2': 0.024782907724775677}, 'target_21': {'priority': 0.8729048676586963, 'prop_1': np.float64(1.0), 'prop_2': 0.03974937121258252}, 'target_22': {'priority': 0.8112195342113623, 'prop_1': np.float64(1.0), 'prop_2': 0.044297123184459865}, 'target_23': {'priority': 0.7330033732927641, 'prop_1': np.float64(0.527906413489412), 'prop_2': 0.029396772692939825}, 'target_24': {'priority': 0.9621731191427757, 'prop_1': np.float64(1.0), 'prop_2': 0.020288225732818424}, 'target_25': {'priority': 0.9058084167065523, 'prop_1': np.float64(0.3745867778323258), 'prop_2': 0.04866955536519839}, 'target_26': {'priority': 0.7199403969458167, 'prop_1': np.float64(0.45615182138411925), 'prop_2': 0.04409986297714217}, 'target_27': {'priority': 0.0231224939829332, 'prop_1': np.float64(0.42635750848590165), 'prop_2': 0.03331115189104554}, 'target_28': {'priority': 0.8601729369162051, 'prop_1': np.float64(0.9538964971620012), 'prop_2': 0.03781681927036095}, 'target_29': {'priority': 0.0494800239061014, 'prop_1': np.float64(0.2245229655462288), 'prop_2': 0.012364549909917715}, 'target_30': {'priority': 0.19971974218805755, 'prop_1': np.float64(0.08501284636907142), 'prop_2': 0.030059267434030895}, 'target_31': {'priority': 0.9689104709978394, 'prop_1': np.float64(0.9468153199274215), 'prop_2': 0.02370500523690022}}
time:  0.0

Then, run the simulation until timeout or agent failure.

[10]:
count = 0
while True:
    if count == 0:
        # Vector with an action for each satellite (we can pass different actions for each satellite)
        # Tasking all satellites to charge (tasking None as the first action will raise a warning)
        action_vector = [0]
    elif count == 1:
        # None will continue the last action, but will also raise a warning
        action_vector = [None]
    elif count == 2:
        # Tasking different actions for each satellite
        action_vector = [1]
    else:
        # Tasking random actions
        action_vector = env.action_space.sample()
    count += 1

    observation, reward, terminated, truncated, info = env.step(action_vector)

    # Show the custom normalized observation vector
    # print("\tObservation:", observation)

    if terminated or truncated:
        print("Episode complete.")
        break
2026-05-19 20:28:26,884 gym                            INFO       <0.00> === STARTING STEP ===
2026-05-19 20:28:26,885 sats.satellite.EO              INFO       <0.00> EO: action_charge tasked for 60.0 seconds
2026-05-19 20:28:26,885 sats.satellite.EO              INFO       <0.00> EO: setting timed terminal event at 60.0
2026-05-19 20:28:26,894 sats.satellite.EO              INFO       <60.00> EO: timed termination at 60.0 for action_charge
2026-05-19 20:28:26,895 data.base                      INFO       <60.00> Total reward: {}
2026-05-19 20:28:26,896 comm.communication             INFO       <60.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:26,897 sats.satellite.EO              INFO       <60.00> EO: Satellite EO requires retasking
2026-05-19 20:28:26,899 utils.orbital                  WARNING    <60.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:26,901 gym                            INFO       <60.00> Step reward: 0.0
2026-05-19 20:28:26,902 gym                            INFO       <60.00> === STARTING STEP ===
2026-05-19 20:28:26,903 sats.satellite.EO              WARNING    <60.00> EO: Requires retasking but received no task.
2026-05-19 20:28:26,934 sim.simulator                  INFO       <360.00> Max step duration reached
2026-05-19 20:28:26,935 data.base                      INFO       <360.00> Total reward: {}
2026-05-19 20:28:26,935 comm.communication             INFO       <360.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:26,936 sats.satellite.EO              INFO       <360.00> EO: Satellite EO requires retasking
2026-05-19 20:28:26,939 utils.orbital                  WARNING    <360.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:26,941 gym                            INFO       <360.00> Step reward: 0.0
2026-05-19 20:28:26,941 gym                            INFO       <360.00> === STARTING STEP ===
2026-05-19 20:28:26,942 sats.satellite.EO              INFO       <360.00> EO: target index 0 tasked
2026-05-19 20:28:26,942 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) tasked for imaging
2026-05-19 20:28:26,943 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) window enabled: 256.2 to 377.2
2026-05-19 20:28:26,944 sats.satellite.EO              INFO       <360.00> EO: setting timed terminal event at 377.2
2026-05-19 20:28:26,949 sats.satellite.EO              INFO       <377.50> EO: timed termination at 377.2 for Target(tgt-7918) window
2026-05-19 20:28:26,950 data.base                      INFO       <377.50> Total reward: {}
2026-05-19 20:28:26,950 comm.communication             INFO       <377.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:26,951 sats.satellite.EO              INFO       <377.50> EO: Satellite EO requires retasking
2026-05-19 20:28:26,954 utils.orbital                  WARNING    <377.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:26,956 gym                            INFO       <377.50> Step reward: 0.0
2026-05-19 20:28:26,956 gym                            INFO       <377.50> === STARTING STEP ===
2026-05-19 20:28:26,957 sats.satellite.EO              INFO       <377.50> EO: target index 2 tasked
2026-05-19 20:28:26,957 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-7710) tasked for imaging
2026-05-19 20:28:26,958 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-7710) window enabled: 271.4 to 393.7
2026-05-19 20:28:26,958 sats.satellite.EO              INFO       <377.50> EO: setting timed terminal event at 393.7
2026-05-19 20:28:26,963 sats.satellite.EO              INFO       <394.00> EO: timed termination at 393.7 for Target(tgt-7710) window
2026-05-19 20:28:26,964 data.base                      INFO       <394.00> Total reward: {}
2026-05-19 20:28:26,965 comm.communication             INFO       <394.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:26,966 sats.satellite.EO              INFO       <394.00> EO: Satellite EO requires retasking
2026-05-19 20:28:26,968 utils.orbital                  WARNING    <394.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:26,970 gym                            INFO       <394.00> Step reward: 0.0
2026-05-19 20:28:26,971 gym                            INFO       <394.00> === STARTING STEP ===
2026-05-19 20:28:26,971 sats.satellite.EO              INFO       <394.00> EO: target index 26 tasked
2026-05-19 20:28:26,972 sats.satellite.EO              INFO       <394.00> EO: Target(tgt-1740) tasked for imaging
2026-05-19 20:28:26,973 sats.satellite.EO              INFO       <394.00> EO: Target(tgt-1740) window enabled: 491.8 to 612.8
2026-05-19 20:28:26,973 sats.satellite.EO              INFO       <394.00> EO: setting timed terminal event at 612.8
2026-05-19 20:28:26,994 sats.satellite.EO              INFO       <493.00> EO: imaged Target(tgt-1740)
2026-05-19 20:28:26,995 data.base                      INFO       <493.00> Total reward: {'EO': np.float64(0.687281185415469)}
2026-05-19 20:28:26,996 comm.communication             INFO       <493.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:26,997 sats.satellite.EO              INFO       <493.00> EO: Satellite EO requires retasking
2026-05-19 20:28:26,999 utils.orbital                  WARNING    <493.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,001 gym                            INFO       <493.00> Step reward: 0.687281185415469
2026-05-19 20:28:27,001 gym                            INFO       <493.00> === STARTING STEP ===
2026-05-19 20:28:27,002 sats.satellite.EO              INFO       <493.00> EO: target index 9 tasked
2026-05-19 20:28:27,002 sats.satellite.EO              INFO       <493.00> EO: Target(tgt-8899) tasked for imaging
2026-05-19 20:28:27,003 sats.satellite.EO              INFO       <493.00> EO: Target(tgt-8899) window enabled: 427.1 to 549.2
2026-05-19 20:28:27,004 sats.satellite.EO              INFO       <493.00> EO: setting timed terminal event at 549.2
2026-05-19 20:28:27,013 sats.satellite.EO              INFO       <534.50> EO: imaged Target(tgt-8899)
2026-05-19 20:28:27,014 data.base                      INFO       <534.50> Total reward: {}
2026-05-19 20:28:27,015 comm.communication             INFO       <534.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,015 sats.satellite.EO              INFO       <534.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,018 utils.orbital                  WARNING    <534.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,019 gym                            INFO       <534.50> Step reward: 0.0
2026-05-19 20:28:27,020 gym                            INFO       <534.50> === STARTING STEP ===
2026-05-19 20:28:27,020 sats.satellite.EO              INFO       <534.50> EO: target index 28 tasked
2026-05-19 20:28:27,021 sats.satellite.EO              INFO       <534.50> EO: Target(tgt-2316) tasked for imaging
2026-05-19 20:28:27,022 sats.satellite.EO              INFO       <534.50> EO: Target(tgt-2316) window enabled: 649.0 to 761.2
2026-05-19 20:28:27,022 sats.satellite.EO              INFO       <534.50> EO: setting timed terminal event at 761.2
2026-05-19 20:28:27,046 sats.satellite.EO              INFO       <650.00> EO: imaged Target(tgt-2316)
2026-05-19 20:28:27,048 data.base                      INFO       <650.00> Total reward: {'EO': np.float64(0.10851931313729211)}
2026-05-19 20:28:27,048 comm.communication             INFO       <650.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,049 sats.satellite.EO              INFO       <650.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,051 utils.orbital                  WARNING    <650.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,052 gym                            INFO       <650.00> Step reward: 0.10851931313729211
2026-05-19 20:28:27,053 gym                            INFO       <650.00> === STARTING STEP ===
2026-05-19 20:28:27,053 sats.satellite.EO              INFO       <650.00> EO: target index 7 tasked
2026-05-19 20:28:27,054 sats.satellite.EO              INFO       <650.00> EO: Target(tgt-7643) tasked for imaging
2026-05-19 20:28:27,055 sats.satellite.EO              INFO       <650.00> EO: Target(tgt-7643) window enabled: 625.9 to 721.0
2026-05-19 20:28:27,055 sats.satellite.EO              INFO       <650.00> EO: setting timed terminal event at 721.0
2026-05-19 20:28:27,066 sats.satellite.EO              INFO       <695.00> EO: imaged Target(tgt-7643)
2026-05-19 20:28:27,067 data.base                      INFO       <695.00> Total reward: {'EO': np.float64(0.4585147676810718)}
2026-05-19 20:28:27,067 comm.communication             INFO       <695.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,068 sats.satellite.EO              INFO       <695.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,070 utils.orbital                  WARNING    <695.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,072 gym                            INFO       <695.00> Step reward: 0.4585147676810718
2026-05-19 20:28:27,073 gym                            INFO       <695.00> === STARTING STEP ===
2026-05-19 20:28:27,073 sats.satellite.EO              INFO       <695.00> EO: target index 6 tasked
2026-05-19 20:28:27,074 sats.satellite.EO              INFO       <695.00> EO: Target(tgt-7434) tasked for imaging
2026-05-19 20:28:27,074 sats.satellite.EO              INFO       <695.00> EO: Target(tgt-7434) window enabled: 674.9 to 763.6
2026-05-19 20:28:27,075 sats.satellite.EO              INFO       <695.00> EO: setting timed terminal event at 763.6
2026-05-19 20:28:27,082 sats.satellite.EO              INFO       <725.00> EO: imaged Target(tgt-7434)
2026-05-19 20:28:27,083 data.base                      INFO       <725.00> Total reward: {}
2026-05-19 20:28:27,084 comm.communication             INFO       <725.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,085 sats.satellite.EO              INFO       <725.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,087 utils.orbital                  WARNING    <725.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,089 gym                            INFO       <725.00> Step reward: 0.0
2026-05-19 20:28:27,089 gym                            INFO       <725.00> === STARTING STEP ===
2026-05-19 20:28:27,090 sats.satellite.EO              INFO       <725.00> EO: target index 18 tasked
2026-05-19 20:28:27,091 sats.satellite.EO              INFO       <725.00> EO: Target(tgt-842) tasked for imaging
2026-05-19 20:28:27,091 sats.satellite.EO              INFO       <725.00> EO: Target(tgt-842) window enabled: 808.3 to 899.8
2026-05-19 20:28:27,092 sats.satellite.EO              INFO       <725.00> EO: setting timed terminal event at 899.8
2026-05-19 20:28:27,115 sats.satellite.EO              INFO       <809.50> EO: imaged Target(tgt-842)
2026-05-19 20:28:27,116 data.base                      INFO       <809.50> Total reward: {'EO': np.float64(0.061749180004625634)}
2026-05-19 20:28:27,117 comm.communication             INFO       <809.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,118 sats.satellite.EO              INFO       <809.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,120 utils.orbital                  WARNING    <809.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,122 gym                            INFO       <809.50> Step reward: 0.061749180004625634
2026-05-19 20:28:27,122 gym                            INFO       <809.50> === STARTING STEP ===
2026-05-19 20:28:27,123 sats.satellite.EO              INFO       <809.50> EO: target index 6 tasked
2026-05-19 20:28:27,123 sats.satellite.EO              INFO       <809.50> EO: Target(tgt-794) tasked for imaging
2026-05-19 20:28:27,124 sats.satellite.EO              INFO       <809.50> EO: Target(tgt-794) window enabled: 749.8 to 869.2
2026-05-19 20:28:27,124 sats.satellite.EO              INFO       <809.50> EO: setting timed terminal event at 869.2
2026-05-19 20:28:27,134 sats.satellite.EO              INFO       <852.00> EO: imaged Target(tgt-794)
2026-05-19 20:28:27,135 data.base                      INFO       <852.00> Total reward: {}
2026-05-19 20:28:27,136 comm.communication             INFO       <852.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,137 sats.satellite.EO              INFO       <852.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,139 utils.orbital                  WARNING    <852.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,141 gym                            INFO       <852.00> Step reward: 0.0
2026-05-19 20:28:27,142 gym                            INFO       <852.00> === STARTING STEP ===
2026-05-19 20:28:27,142 sats.satellite.EO              INFO       <852.00> EO: target index 28 tasked
2026-05-19 20:28:27,142 sats.satellite.EO              INFO       <852.00> EO: Target(tgt-5480) tasked for imaging
2026-05-19 20:28:27,143 sats.satellite.EO              INFO       <852.00> EO: Target(tgt-5480) window enabled: 1015.9 to 1122.2
2026-05-19 20:28:27,144 sats.satellite.EO              INFO       <852.00> EO: setting timed terminal event at 1122.2
2026-05-19 20:28:27,183 sats.satellite.EO              INFO       <1017.00> EO: imaged Target(tgt-5480)
2026-05-19 20:28:27,185 data.base                      INFO       <1017.00> Total reward: {}
2026-05-19 20:28:27,186 comm.communication             INFO       <1017.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,187 sats.satellite.EO              INFO       <1017.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,189 utils.orbital                  WARNING    <1017.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,190 gym                            INFO       <1017.00> Step reward: 0.0
2026-05-19 20:28:27,191 gym                            INFO       <1017.00> === STARTING STEP ===
2026-05-19 20:28:27,191 sats.satellite.EO              INFO       <1017.00> EO: target index 22 tasked
2026-05-19 20:28:27,192 sats.satellite.EO              INFO       <1017.00> EO: Target(tgt-4212) tasked for imaging
2026-05-19 20:28:27,193 sats.satellite.EO              INFO       <1017.00> EO: Target(tgt-4212) window enabled: 1146.1 to 1210.7
2026-05-19 20:28:27,193 sats.satellite.EO              INFO       <1017.00> EO: setting timed terminal event at 1210.7
2026-05-19 20:28:27,228 sats.satellite.EO              INFO       <1147.50> EO: imaged Target(tgt-4212)
2026-05-19 20:28:27,229 data.base                      INFO       <1147.50> Total reward: {}
2026-05-19 20:28:27,229 comm.communication             INFO       <1147.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,230 sats.satellite.EO              INFO       <1147.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,232 utils.orbital                  WARNING    <1147.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,234 gym                            INFO       <1147.50> Step reward: 0.0
2026-05-19 20:28:27,235 gym                            INFO       <1147.50> === STARTING STEP ===
2026-05-19 20:28:27,235 sats.satellite.EO              INFO       <1147.50> EO: target index 26 tasked
2026-05-19 20:28:27,236 sats.satellite.EO              INFO       <1147.50> EO: Target(tgt-7842) tasked for imaging
2026-05-19 20:28:27,236 sats.satellite.EO              INFO       <1147.50> EO: Target(tgt-7842) window enabled: 1338.8 to 1349.9
2026-05-19 20:28:27,237 sats.satellite.EO              INFO       <1147.50> EO: setting timed terminal event at 1349.9
2026-05-19 20:28:27,287 sats.satellite.EO              INFO       <1340.00> EO: imaged Target(tgt-7842)
2026-05-19 20:28:27,288 data.base                      INFO       <1340.00> Total reward: {}
2026-05-19 20:28:27,289 comm.communication             INFO       <1340.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,290 sats.satellite.EO              INFO       <1340.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,292 utils.orbital                  WARNING    <1340.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,294 gym                            INFO       <1340.00> Step reward: 0.0
2026-05-19 20:28:27,294 gym                            INFO       <1340.00> === STARTING STEP ===
2026-05-19 20:28:27,295 sats.satellite.EO              INFO       <1340.00> EO: target index 15 tasked
2026-05-19 20:28:27,295 sats.satellite.EO              INFO       <1340.00> EO: Target(tgt-6063) tasked for imaging
2026-05-19 20:28:27,296 sats.satellite.EO              INFO       <1340.00> EO: Target(tgt-6063) window enabled: 1403.3 to 1443.1
2026-05-19 20:28:27,296 sats.satellite.EO              INFO       <1340.00> EO: setting timed terminal event at 1443.1
2026-05-19 20:28:27,314 sats.satellite.EO              INFO       <1404.50> EO: imaged Target(tgt-6063)
2026-05-19 20:28:27,315 data.base                      INFO       <1404.50> Total reward: {}
2026-05-19 20:28:27,316 comm.communication             INFO       <1404.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,317 sats.satellite.EO              INFO       <1404.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,319 utils.orbital                  WARNING    <1404.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,321 gym                            INFO       <1404.50> Step reward: 0.0
2026-05-19 20:28:27,321 gym                            INFO       <1404.50> === STARTING STEP ===
2026-05-19 20:28:27,322 sats.satellite.EO              INFO       <1404.50> EO: target index 21 tasked
2026-05-19 20:28:27,322 sats.satellite.EO              INFO       <1404.50> EO: Target(tgt-3273) tasked for imaging
2026-05-19 20:28:27,323 sats.satellite.EO              INFO       <1404.50> EO: Target(tgt-3273) window enabled: 1497.0 to 1617.2
2026-05-19 20:28:27,323 sats.satellite.EO              INFO       <1404.50> EO: setting timed terminal event at 1617.2
2026-05-19 20:28:27,344 sats.satellite.EO              INFO       <1498.50> EO: imaged Target(tgt-3273)
2026-05-19 20:28:27,345 data.base                      INFO       <1498.50> Total reward: {}
2026-05-19 20:28:27,345 comm.communication             INFO       <1498.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,346 sats.satellite.EO              INFO       <1498.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,348 utils.orbital                  WARNING    <1498.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,350 gym                            INFO       <1498.50> Step reward: 0.0
2026-05-19 20:28:27,351 gym                            INFO       <1498.50> === STARTING STEP ===
2026-05-19 20:28:27,351 sats.satellite.EO              INFO       <1498.50> EO: target index 1 tasked
2026-05-19 20:28:27,352 sats.satellite.EO              INFO       <1498.50> EO: Target(tgt-2411) tasked for imaging
2026-05-19 20:28:27,352 sats.satellite.EO              INFO       <1498.50> EO: Target(tgt-2411) window enabled: 1444.5 to 1508.0
2026-05-19 20:28:27,353 sats.satellite.EO              INFO       <1498.50> EO: setting timed terminal event at 1508.0
2026-05-19 20:28:27,356 sats.satellite.EO              INFO       <1508.00> EO: timed termination at 1508.0 for Target(tgt-2411) window
2026-05-19 20:28:27,357 data.base                      INFO       <1508.00> Total reward: {}
2026-05-19 20:28:27,358 comm.communication             INFO       <1508.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,359 sats.satellite.EO              INFO       <1508.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,361 utils.orbital                  WARNING    <1508.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,363 gym                            INFO       <1508.00> Step reward: 0.0
2026-05-19 20:28:27,363 gym                            INFO       <1508.00> === STARTING STEP ===
2026-05-19 20:28:27,364 sats.satellite.EO              INFO       <1508.00> EO: target index 18 tasked
2026-05-19 20:28:27,364 sats.satellite.EO              INFO       <1508.00> EO: Target(tgt-2495) tasked for imaging
2026-05-19 20:28:27,365 sats.satellite.EO              INFO       <1508.00> EO: Target(tgt-2495) window enabled: 1586.7 to 1703.1
2026-05-19 20:28:27,365 sats.satellite.EO              INFO       <1508.00> EO: setting timed terminal event at 1703.1
2026-05-19 20:28:27,382 sats.satellite.EO              INFO       <1588.00> EO: imaged Target(tgt-2495)
2026-05-19 20:28:27,383 data.base                      INFO       <1588.00> Total reward: {'EO': np.float64(0.6940156410912659)}
2026-05-19 20:28:27,384 comm.communication             INFO       <1588.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,385 sats.satellite.EO              INFO       <1588.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,387 utils.orbital                  WARNING    <1588.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,389 gym                            INFO       <1588.00> Step reward: 0.6940156410912659
2026-05-19 20:28:27,389 gym                            INFO       <1588.00> === STARTING STEP ===
2026-05-19 20:28:27,389 sats.satellite.EO              INFO       <1588.00> EO: target index 13 tasked
2026-05-19 20:28:27,390 sats.satellite.EO              INFO       <1588.00> EO: Target(tgt-997) tasked for imaging
2026-05-19 20:28:27,391 sats.satellite.EO              INFO       <1588.00> EO: Target(tgt-997) window enabled: 1644.2 to 1687.8
2026-05-19 20:28:27,391 sats.satellite.EO              INFO       <1588.00> EO: setting timed terminal event at 1687.8
2026-05-19 20:28:27,406 sats.satellite.EO              INFO       <1645.50> EO: imaged Target(tgt-997)
2026-05-19 20:28:27,407 data.base                      INFO       <1645.50> Total reward: {'EO': np.float64(0.043819057520189865)}
2026-05-19 20:28:27,408 comm.communication             INFO       <1645.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,409 sats.satellite.EO              INFO       <1645.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,411 utils.orbital                  WARNING    <1645.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,413 gym                            INFO       <1645.50> Step reward: 0.043819057520189865
2026-05-19 20:28:27,413 gym                            INFO       <1645.50> === STARTING STEP ===
2026-05-19 20:28:27,414 sats.satellite.EO              INFO       <1645.50> EO: target index 27 tasked
2026-05-19 20:28:27,414 sats.satellite.EO              INFO       <1645.50> EO: Target(tgt-2545) tasked for imaging
2026-05-19 20:28:27,416 sats.satellite.EO              INFO       <1645.50> EO: Target(tgt-2545) window enabled: 1867.9 to 1934.6
2026-05-19 20:28:27,416 sats.satellite.EO              INFO       <1645.50> EO: setting timed terminal event at 1934.6
2026-05-19 20:28:27,460 sats.satellite.EO              INFO       <1869.00> EO: imaged Target(tgt-2545)
2026-05-19 20:28:27,461 data.base                      INFO       <1869.00> Total reward: {'EO': np.float64(0.5468069287153451)}
2026-05-19 20:28:27,462 comm.communication             INFO       <1869.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,463 sats.satellite.EO              INFO       <1869.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,464 utils.orbital                  WARNING    <1869.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,466 gym                            INFO       <1869.00> Step reward: 0.5468069287153451
2026-05-19 20:28:27,467 gym                            INFO       <1869.00> === STARTING STEP ===
2026-05-19 20:28:27,467 sats.satellite.EO              INFO       <1869.00> EO: target index 20 tasked
2026-05-19 20:28:27,468 sats.satellite.EO              INFO       <1869.00> EO: Target(tgt-4756) tasked for imaging
2026-05-19 20:28:27,468 sats.satellite.EO              INFO       <1869.00> EO: Target(tgt-4756) window enabled: 1986.2 to 2085.4
2026-05-19 20:28:27,469 sats.satellite.EO              INFO       <1869.00> EO: setting timed terminal event at 2085.4
2026-05-19 20:28:27,495 sats.satellite.EO              INFO       <1987.50> EO: imaged Target(tgt-4756)
2026-05-19 20:28:27,496 data.base                      INFO       <1987.50> Total reward: {}
2026-05-19 20:28:27,496 comm.communication             INFO       <1987.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,497 sats.satellite.EO              INFO       <1987.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,499 utils.orbital                  WARNING    <1987.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,501 gym                            INFO       <1987.50> Step reward: 0.0
2026-05-19 20:28:27,502 gym                            INFO       <1987.50> === STARTING STEP ===
2026-05-19 20:28:27,502 sats.satellite.EO              INFO       <1987.50> EO: target index 13 tasked
2026-05-19 20:28:27,503 sats.satellite.EO              INFO       <1987.50> EO: Target(tgt-5792) tasked for imaging
2026-05-19 20:28:27,503 sats.satellite.EO              INFO       <1987.50> EO: Target(tgt-5792) window enabled: 2009.1 to 2123.2
2026-05-19 20:28:27,504 sats.satellite.EO              INFO       <1987.50> EO: setting timed terminal event at 2123.2
2026-05-19 20:28:27,513 sats.satellite.EO              INFO       <2025.50> EO: imaged Target(tgt-5792)
2026-05-19 20:28:27,515 data.base                      INFO       <2025.50> Total reward: {'EO': np.float64(0.4613837197309192)}
2026-05-19 20:28:27,515 comm.communication             INFO       <2025.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,516 sats.satellite.EO              INFO       <2025.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,518 utils.orbital                  WARNING    <2025.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,520 gym                            INFO       <2025.50> Step reward: 0.4613837197309192
2026-05-19 20:28:27,520 gym                            INFO       <2025.50> === STARTING STEP ===
2026-05-19 20:28:27,520 sats.satellite.EO              INFO       <2025.50> EO: target index 23 tasked
2026-05-19 20:28:27,521 sats.satellite.EO              INFO       <2025.50> EO: Target(tgt-2290) tasked for imaging
2026-05-19 20:28:27,522 sats.satellite.EO              INFO       <2025.50> EO: Target(tgt-2290) window enabled: 2200.5 to 2237.6
2026-05-19 20:28:27,522 sats.satellite.EO              INFO       <2025.50> EO: setting timed terminal event at 2237.6
2026-05-19 20:28:27,558 sats.satellite.EO              INFO       <2201.50> EO: imaged Target(tgt-2290)
2026-05-19 20:28:27,559 data.base                      INFO       <2201.50> Total reward: {}
2026-05-19 20:28:27,560 comm.communication             INFO       <2201.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,561 sats.satellite.EO              INFO       <2201.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,563 utils.orbital                  WARNING    <2201.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,564 gym                            INFO       <2201.50> Step reward: 0.0
2026-05-19 20:28:27,565 gym                            INFO       <2201.50> === STARTING STEP ===
2026-05-19 20:28:27,565 sats.satellite.EO              INFO       <2201.50> EO: target index 18 tasked
2026-05-19 20:28:27,566 sats.satellite.EO              INFO       <2201.50> EO: Target(tgt-1319) tasked for imaging
2026-05-19 20:28:27,566 sats.satellite.EO              INFO       <2201.50> EO: Target(tgt-1319) window enabled: 2194.1 to 2306.3
2026-05-19 20:28:27,567 sats.satellite.EO              INFO       <2201.50> EO: setting timed terminal event at 2306.3
2026-05-19 20:28:27,574 sats.satellite.EO              INFO       <2232.00> EO: imaged Target(tgt-1319)
2026-05-19 20:28:27,575 data.base                      INFO       <2232.00> Total reward: {}
2026-05-19 20:28:27,576 comm.communication             INFO       <2232.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,577 sats.satellite.EO              INFO       <2232.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,579 utils.orbital                  WARNING    <2232.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,581 gym                            INFO       <2232.00> Step reward: 0.0
2026-05-19 20:28:27,582 gym                            INFO       <2232.00> === STARTING STEP ===
2026-05-19 20:28:27,582 sats.satellite.EO              INFO       <2232.00> EO: target index 13 tasked
2026-05-19 20:28:27,582 sats.satellite.EO              INFO       <2232.00> EO: Target(tgt-9635) tasked for imaging
2026-05-19 20:28:27,583 sats.satellite.EO              INFO       <2232.00> EO: Target(tgt-9635) window enabled: 2237.0 to 2334.4
2026-05-19 20:28:27,584 sats.satellite.EO              INFO       <2232.00> EO: setting timed terminal event at 2334.4
2026-05-19 20:28:27,605 sats.satellite.EO              INFO       <2334.50> EO: timed termination at 2334.4 for Target(tgt-9635) window
2026-05-19 20:28:27,606 data.base                      INFO       <2334.50> Total reward: {}
2026-05-19 20:28:27,607 comm.communication             INFO       <2334.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,608 sats.satellite.EO              INFO       <2334.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,610 utils.orbital                  WARNING    <2334.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,612 gym                            INFO       <2334.50> Step reward: 0.0
2026-05-19 20:28:27,612 gym                            INFO       <2334.50> === STARTING STEP ===
2026-05-19 20:28:27,613 sats.satellite.EO              INFO       <2334.50> EO: target index 5 tasked
2026-05-19 20:28:27,613 sats.satellite.EO              INFO       <2334.50> EO: Target(tgt-1312) tasked for imaging
2026-05-19 20:28:27,614 sats.satellite.EO              INFO       <2334.50> EO: Target(tgt-1312) window enabled: 2297.0 to 2362.5
2026-05-19 20:28:27,615 sats.satellite.EO              INFO       <2334.50> EO: setting timed terminal event at 2362.5
2026-05-19 20:28:27,622 sats.satellite.EO              INFO       <2362.50> EO: timed termination at 2362.5 for Target(tgt-1312) window
2026-05-19 20:28:27,623 data.base                      INFO       <2362.50> Total reward: {}
2026-05-19 20:28:27,623 comm.communication             INFO       <2362.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,624 sats.satellite.EO              INFO       <2362.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,626 utils.orbital                  WARNING    <2362.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,628 gym                            INFO       <2362.50> Step reward: 0.0
2026-05-19 20:28:27,629 gym                            INFO       <2362.50> === STARTING STEP ===
2026-05-19 20:28:27,629 sats.satellite.EO              INFO       <2362.50> EO: target index 2 tasked
2026-05-19 20:28:27,630 sats.satellite.EO              INFO       <2362.50> EO: Target(tgt-2509) tasked for imaging
2026-05-19 20:28:27,631 sats.satellite.EO              INFO       <2362.50> EO: Target(tgt-2509) window enabled: 2298.6 to 2377.8
2026-05-19 20:28:27,631 sats.satellite.EO              INFO       <2362.50> EO: setting timed terminal event at 2377.8
2026-05-19 20:28:27,635 sats.satellite.EO              INFO       <2378.00> EO: timed termination at 2377.8 for Target(tgt-2509) window
2026-05-19 20:28:27,637 data.base                      INFO       <2378.00> Total reward: {}
2026-05-19 20:28:27,637 comm.communication             INFO       <2378.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,638 sats.satellite.EO              INFO       <2378.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,639 utils.orbital                  WARNING    <2378.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,641 gym                            INFO       <2378.00> Step reward: 0.0
2026-05-19 20:28:27,642 gym                            INFO       <2378.00> === STARTING STEP ===
2026-05-19 20:28:27,642 sats.satellite.EO              INFO       <2378.00> EO: target index 0 tasked
2026-05-19 20:28:27,643 sats.satellite.EO              INFO       <2378.00> EO: Target(tgt-1549) tasked for imaging
2026-05-19 20:28:27,644 sats.satellite.EO              INFO       <2378.00> EO: Target(tgt-1549) window enabled: 2321.5 to 2379.5
2026-05-19 20:28:27,644 sats.satellite.EO              INFO       <2378.00> EO: setting timed terminal event at 2379.5
2026-05-19 20:28:27,646 sats.satellite.EO              INFO       <2379.50> EO: timed termination at 2379.5 for Target(tgt-1549) window
2026-05-19 20:28:27,647 data.base                      INFO       <2379.50> Total reward: {}
2026-05-19 20:28:27,647 comm.communication             INFO       <2379.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,648 sats.satellite.EO              INFO       <2379.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,650 utils.orbital                  WARNING    <2379.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,652 gym                            INFO       <2379.50> Step reward: 0.0
2026-05-19 20:28:27,653 gym                            INFO       <2379.50> === STARTING STEP ===
2026-05-19 20:28:27,653 sats.satellite.EO              INFO       <2379.50> EO: target index 25 tasked
2026-05-19 20:28:27,653 sats.satellite.EO              INFO       <2379.50> EO: Target(tgt-615) tasked for imaging
2026-05-19 20:28:27,655 sats.satellite.EO              INFO       <2379.50> EO: Target(tgt-615) window enabled: 2433.0 to 2547.1
2026-05-19 20:28:27,655 sats.satellite.EO              INFO       <2379.50> EO: setting timed terminal event at 2547.1
2026-05-19 20:28:27,688 sats.satellite.EO              INFO       <2547.50> EO: timed termination at 2547.1 for Target(tgt-615) window
2026-05-19 20:28:27,690 data.base                      INFO       <2547.50> Total reward: {}
2026-05-19 20:28:27,690 comm.communication             INFO       <2547.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,691 sats.satellite.EO              INFO       <2547.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,693 utils.orbital                  WARNING    <2547.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,695 gym                            INFO       <2547.50> Step reward: 0.0
2026-05-19 20:28:27,696 gym                            INFO       <2547.50> === STARTING STEP ===
2026-05-19 20:28:27,696 sats.satellite.EO              INFO       <2547.50> EO: target index 14 tasked
2026-05-19 20:28:27,697 sats.satellite.EO              INFO       <2547.50> EO: Target(tgt-2750) tasked for imaging
2026-05-19 20:28:27,698 sats.satellite.EO              INFO       <2547.50> EO: Target(tgt-2750) window enabled: 2575.6 to 2690.0
2026-05-19 20:28:27,699 sats.satellite.EO              INFO       <2547.50> EO: setting timed terminal event at 2690.0
2026-05-19 20:28:27,727 sats.satellite.EO              INFO       <2690.50> EO: timed termination at 2690.0 for Target(tgt-2750) window
2026-05-19 20:28:27,729 data.base                      INFO       <2690.50> Total reward: {}
2026-05-19 20:28:27,729 comm.communication             INFO       <2690.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,730 sats.satellite.EO              INFO       <2690.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,732 utils.orbital                  WARNING    <2690.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,734 gym                            INFO       <2690.50> Step reward: 0.0
2026-05-19 20:28:27,735 gym                            INFO       <2690.50> === STARTING STEP ===
2026-05-19 20:28:27,735 sats.satellite.EO              INFO       <2690.50> EO: target index 20 tasked
2026-05-19 20:28:27,736 sats.satellite.EO              INFO       <2690.50> EO: Target(tgt-7879) tasked for imaging
2026-05-19 20:28:27,737 sats.satellite.EO              INFO       <2690.50> EO: Target(tgt-7879) window enabled: 2713.4 to 2828.0
2026-05-19 20:28:27,737 sats.satellite.EO              INFO       <2690.50> EO: setting timed terminal event at 2828.0
2026-05-19 20:28:27,765 sats.satellite.EO              INFO       <2828.50> EO: timed termination at 2828.0 for Target(tgt-7879) window
2026-05-19 20:28:27,767 data.base                      INFO       <2828.50> Total reward: {}
2026-05-19 20:28:27,767 comm.communication             INFO       <2828.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,768 sats.satellite.EO              INFO       <2828.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,770 utils.orbital                  WARNING    <2828.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,772 gym                            INFO       <2828.50> Step reward: 0.0
2026-05-19 20:28:27,773 gym                            INFO       <2828.50> === STARTING STEP ===
2026-05-19 20:28:27,773 sats.satellite.EO              INFO       <2828.50> EO: target index 6 tasked
2026-05-19 20:28:27,774 sats.satellite.EO              INFO       <2828.50> EO: Target(tgt-1686) tasked for imaging
2026-05-19 20:28:27,774 sats.satellite.EO              INFO       <2828.50> EO: Target(tgt-1686) window enabled: 2788.1 to 2898.6
2026-05-19 20:28:27,775 sats.satellite.EO              INFO       <2828.50> EO: setting timed terminal event at 2898.6
2026-05-19 20:28:27,790 sats.satellite.EO              INFO       <2899.00> EO: timed termination at 2898.6 for Target(tgt-1686) window
2026-05-19 20:28:27,791 data.base                      INFO       <2899.00> Total reward: {}
2026-05-19 20:28:27,792 comm.communication             INFO       <2899.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,793 sats.satellite.EO              INFO       <2899.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,795 utils.orbital                  WARNING    <2899.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,797 gym                            INFO       <2899.00> Step reward: 0.0
2026-05-19 20:28:27,797 gym                            INFO       <2899.00> === STARTING STEP ===
2026-05-19 20:28:27,798 sats.satellite.EO              INFO       <2899.00> EO: target index 10 tasked
2026-05-19 20:28:27,798 sats.satellite.EO              INFO       <2899.00> EO: Target(tgt-9508) tasked for imaging
2026-05-19 20:28:27,799 sats.satellite.EO              INFO       <2899.00> EO: Target(tgt-9508) window enabled: 2869.0 to 2989.0
2026-05-19 20:28:27,800 sats.satellite.EO              INFO       <2899.00> EO: setting timed terminal event at 2989.0
2026-05-19 20:28:27,819 sats.satellite.EO              INFO       <2989.00> EO: timed termination at 2989.0 for Target(tgt-9508) window
2026-05-19 20:28:27,820 data.base                      INFO       <2989.00> Total reward: {}
2026-05-19 20:28:27,821 comm.communication             INFO       <2989.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,822 sats.satellite.EO              INFO       <2989.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,823 utils.orbital                  WARNING    <2989.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,826 gym                            INFO       <2989.00> Step reward: 0.0
2026-05-19 20:28:27,826 gym                            INFO       <2989.00> === STARTING STEP ===
2026-05-19 20:28:27,827 sats.satellite.EO              INFO       <2989.00> EO: target index 4 tasked
2026-05-19 20:28:27,827 sats.satellite.EO              INFO       <2989.00> EO: Target(tgt-5785) tasked for imaging
2026-05-19 20:28:27,828 sats.satellite.EO              INFO       <2989.00> EO: Target(tgt-5785) window enabled: 2912.5 to 3025.9
2026-05-19 20:28:27,828 sats.satellite.EO              INFO       <2989.00> EO: setting timed terminal event at 3025.9
2026-05-19 20:28:27,839 sats.satellite.EO              INFO       <3026.00> EO: timed termination at 3025.9 for Target(tgt-5785) window
2026-05-19 20:28:27,841 data.base                      INFO       <3026.00> Total reward: {}
2026-05-19 20:28:27,841 comm.communication             INFO       <3026.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,842 sats.satellite.EO              INFO       <3026.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,844 utils.orbital                  WARNING    <3026.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,846 gym                            INFO       <3026.00> Step reward: 0.0
2026-05-19 20:28:27,847 gym                            INFO       <3026.00> === STARTING STEP ===
2026-05-19 20:28:27,847 sats.satellite.EO              INFO       <3026.00> EO: target index 3 tasked
2026-05-19 20:28:27,848 sats.satellite.EO              INFO       <3026.00> EO: Target(tgt-5563) tasked for imaging
2026-05-19 20:28:27,849 sats.satellite.EO              INFO       <3026.00> EO: Target(tgt-5563) window enabled: 2980.7 to 3056.6
2026-05-19 20:28:27,849 sats.satellite.EO              INFO       <3026.00> EO: setting timed terminal event at 3056.6
2026-05-19 20:28:27,858 sats.satellite.EO              INFO       <3057.00> EO: timed termination at 3056.6 for Target(tgt-5563) window
2026-05-19 20:28:27,859 data.base                      INFO       <3057.00> Total reward: {}
2026-05-19 20:28:27,859 comm.communication             INFO       <3057.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,860 sats.satellite.EO              INFO       <3057.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,862 utils.orbital                  WARNING    <3057.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,864 gym                            INFO       <3057.00> Step reward: 0.0
2026-05-19 20:28:27,864 gym                            INFO       <3057.00> === STARTING STEP ===
2026-05-19 20:28:27,865 sats.satellite.EO              INFO       <3057.00> EO: target index 8 tasked
2026-05-19 20:28:27,866 sats.satellite.EO              INFO       <3057.00> EO: Target(tgt-5722) tasked for imaging
2026-05-19 20:28:27,866 sats.satellite.EO              INFO       <3057.00> EO: Target(tgt-5722) window enabled: 3024.8 to 3131.1
2026-05-19 20:28:27,867 sats.satellite.EO              INFO       <3057.00> EO: setting timed terminal event at 3131.1
2026-05-19 20:28:27,887 sats.satellite.EO              INFO       <3131.50> EO: timed termination at 3131.1 for Target(tgt-5722) window
2026-05-19 20:28:27,889 data.base                      INFO       <3131.50> Total reward: {}
2026-05-19 20:28:27,889 comm.communication             INFO       <3131.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,890 sats.satellite.EO              INFO       <3131.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,892 utils.orbital                  WARNING    <3131.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,894 gym                            INFO       <3131.50> Step reward: 0.0
2026-05-19 20:28:27,894 gym                            INFO       <3131.50> === STARTING STEP ===
2026-05-19 20:28:27,895 sats.satellite.EO              INFO       <3131.50> EO: target index 5 tasked
2026-05-19 20:28:27,895 sats.satellite.EO              INFO       <3131.50> EO: Target(tgt-839) tasked for imaging
2026-05-19 20:28:27,896 sats.satellite.EO              INFO       <3131.50> EO: Target(tgt-839) window enabled: 3109.6 to 3169.1
2026-05-19 20:28:27,896 sats.satellite.EO              INFO       <3131.50> EO: setting timed terminal event at 3169.1
2026-05-19 20:28:27,907 sats.satellite.EO              INFO       <3169.50> EO: timed termination at 3169.1 for Target(tgt-839) window
2026-05-19 20:28:27,909 data.base                      INFO       <3169.50> Total reward: {}
2026-05-19 20:28:27,909 comm.communication             INFO       <3169.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,910 sats.satellite.EO              INFO       <3169.50> EO: Satellite EO requires retasking
2026-05-19 20:28:27,912 utils.orbital                  WARNING    <3169.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,914 gym                            INFO       <3169.50> Step reward: 0.0
2026-05-19 20:28:27,915 gym                            INFO       <3169.50> === STARTING STEP ===
2026-05-19 20:28:27,915 sats.satellite.EO              INFO       <3169.50> EO: target index 6 tasked
2026-05-19 20:28:27,916 sats.satellite.EO              INFO       <3169.50> EO: Target(tgt-1264) tasked for imaging
2026-05-19 20:28:27,917 sats.satellite.EO              INFO       <3169.50> EO: Target(tgt-1264) window enabled: 3087.3 to 3207.5
2026-05-19 20:28:27,917 sats.satellite.EO              INFO       <3169.50> EO: setting timed terminal event at 3207.5
2026-05-19 20:28:27,928 sats.satellite.EO              INFO       <3208.00> EO: timed termination at 3207.5 for Target(tgt-1264) window
2026-05-19 20:28:27,930 data.base                      INFO       <3208.00> Total reward: {}
2026-05-19 20:28:27,930 comm.communication             INFO       <3208.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:27,931 sats.satellite.EO              INFO       <3208.00> EO: Satellite EO requires retasking
2026-05-19 20:28:27,933 utils.orbital                  WARNING    <3208.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:27,936 gym                            INFO       <3208.00> Step reward: 0.0
2026-05-19 20:28:27,936 gym                            INFO       <3208.00> === STARTING STEP ===
2026-05-19 20:28:27,937 sats.satellite.EO              INFO       <3208.00> EO: target index 18 tasked
2026-05-19 20:28:27,937 sats.satellite.EO              INFO       <3208.00> EO: Target(tgt-1885) tasked for imaging
2026-05-19 20:28:27,938 sats.satellite.EO              INFO       <3208.00> EO: Target(tgt-1885) window enabled: 3342.9 to 3461.5
2026-05-19 20:28:27,939 sats.satellite.EO              INFO       <3208.00> EO: setting timed terminal event at 3461.5
2026-05-19 20:28:27,998 sats.satellite.EO              INFO       <3461.50> EO: timed termination at 3461.5 for Target(tgt-1885) window
2026-05-19 20:28:28,000 data.base                      INFO       <3461.50> Total reward: {}
2026-05-19 20:28:28,001 comm.communication             INFO       <3461.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,002 sats.satellite.EO              INFO       <3461.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,003 utils.orbital                  WARNING    <3461.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,005 gym                            INFO       <3461.50> Step reward: 0.0
2026-05-19 20:28:28,006 gym                            INFO       <3461.50> === STARTING STEP ===
2026-05-19 20:28:28,006 sats.satellite.EO              INFO       <3461.50> EO: target index 4 tasked
2026-05-19 20:28:28,007 sats.satellite.EO              INFO       <3461.50> EO: Target(tgt-9319) tasked for imaging
2026-05-19 20:28:28,007 sats.satellite.EO              INFO       <3461.50> EO: Target(tgt-9319) window enabled: 3381.1 to 3488.0
2026-05-19 20:28:28,008 sats.satellite.EO              INFO       <3461.50> EO: setting timed terminal event at 3488.0
2026-05-19 20:28:28,015 sats.satellite.EO              INFO       <3488.00> EO: timed termination at 3488.0 for Target(tgt-9319) window
2026-05-19 20:28:28,016 data.base                      INFO       <3488.00> Total reward: {}
2026-05-19 20:28:28,016 comm.communication             INFO       <3488.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,017 sats.satellite.EO              INFO       <3488.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,019 utils.orbital                  WARNING    <3488.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,021 gym                            INFO       <3488.00> Step reward: 0.0
2026-05-19 20:28:28,021 gym                            INFO       <3488.00> === STARTING STEP ===
2026-05-19 20:28:28,021 sats.satellite.EO              INFO       <3488.00> EO: target index 14 tasked
2026-05-19 20:28:28,022 sats.satellite.EO              INFO       <3488.00> EO: Target(tgt-6811) tasked for imaging
2026-05-19 20:28:28,023 sats.satellite.EO              INFO       <3488.00> EO: Target(tgt-6811) window enabled: 3480.9 to 3580.0
2026-05-19 20:28:28,023 sats.satellite.EO              INFO       <3488.00> EO: setting timed terminal event at 3580.0
2026-05-19 20:28:28,042 sats.satellite.EO              INFO       <3580.00> EO: timed termination at 3580.0 for Target(tgt-6811) window
2026-05-19 20:28:28,044 data.base                      INFO       <3580.00> Total reward: {}
2026-05-19 20:28:28,044 comm.communication             INFO       <3580.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,045 sats.satellite.EO              INFO       <3580.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,046 utils.orbital                  WARNING    <3580.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,049 gym                            INFO       <3580.00> Step reward: 0.0
2026-05-19 20:28:28,049 gym                            INFO       <3580.00> === STARTING STEP ===
2026-05-19 20:28:28,050 sats.satellite.EO              INFO       <3580.00> EO: target index 20 tasked
2026-05-19 20:28:28,050 sats.satellite.EO              INFO       <3580.00> EO: Target(tgt-1108) tasked for imaging
2026-05-19 20:28:28,051 sats.satellite.EO              INFO       <3580.00> EO: Target(tgt-1108) window enabled: 3642.6 to 3736.8
2026-05-19 20:28:28,051 sats.satellite.EO              INFO       <3580.00> EO: setting timed terminal event at 3736.8
2026-05-19 20:28:28,088 sats.satellite.EO              INFO       <3737.00> EO: timed termination at 3736.8 for Target(tgt-1108) window
2026-05-19 20:28:28,090 data.base                      INFO       <3737.00> Total reward: {}
2026-05-19 20:28:28,090 comm.communication             INFO       <3737.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,091 sats.satellite.EO              INFO       <3737.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,093 utils.orbital                  WARNING    <3737.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,095 gym                            INFO       <3737.00> Step reward: 0.0
2026-05-19 20:28:28,095 gym                            INFO       <3737.00> === STARTING STEP ===
2026-05-19 20:28:28,096 sats.satellite.EO              INFO       <3737.00> EO: target index 14 tasked
2026-05-19 20:28:28,096 sats.satellite.EO              INFO       <3737.00> EO: Target(tgt-8073) tasked for imaging
2026-05-19 20:28:28,097 sats.satellite.EO              INFO       <3737.00> EO: Target(tgt-8073) window enabled: 3738.6 to 3858.9
2026-05-19 20:28:28,097 sats.satellite.EO              INFO       <3737.00> EO: setting timed terminal event at 3858.9
2026-05-19 20:28:28,132 sats.satellite.EO              INFO       <3859.00> EO: timed termination at 3858.9 for Target(tgt-8073) window
2026-05-19 20:28:28,133 data.base                      INFO       <3859.00> Total reward: {}
2026-05-19 20:28:28,134 comm.communication             INFO       <3859.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,135 sats.satellite.EO              INFO       <3859.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,137 utils.orbital                  WARNING    <3859.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,139 gym                            INFO       <3859.00> Step reward: 0.0
2026-05-19 20:28:28,139 gym                            INFO       <3859.00> === STARTING STEP ===
2026-05-19 20:28:28,140 sats.satellite.EO              INFO       <3859.00> EO: target index 17 tasked
2026-05-19 20:28:28,140 sats.satellite.EO              INFO       <3859.00> EO: Target(tgt-7058) tasked for imaging
2026-05-19 20:28:28,141 sats.satellite.EO              INFO       <3859.00> EO: Target(tgt-7058) window enabled: 3952.1 to 4036.4
2026-05-19 20:28:28,141 sats.satellite.EO              INFO       <3859.00> EO: setting timed terminal event at 4036.4
2026-05-19 20:28:28,190 sats.satellite.EO              INFO       <4036.50> EO: timed termination at 4036.4 for Target(tgt-7058) window
2026-05-19 20:28:28,192 data.base                      INFO       <4036.50> Total reward: {}
2026-05-19 20:28:28,192 comm.communication             INFO       <4036.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,193 sats.satellite.EO              INFO       <4036.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,195 utils.orbital                  WARNING    <4036.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,197 gym                            INFO       <4036.50> Step reward: 0.0
2026-05-19 20:28:28,198 gym                            INFO       <4036.50> === STARTING STEP ===
2026-05-19 20:28:28,198 sats.satellite.EO              INFO       <4036.50> EO: target index 31 tasked
2026-05-19 20:28:28,199 sats.satellite.EO              INFO       <4036.50> EO: Target(tgt-5269) tasked for imaging
2026-05-19 20:28:28,200 sats.satellite.EO              INFO       <4036.50> EO: Target(tgt-5269) window enabled: 4212.5 to 4296.0
2026-05-19 20:28:28,200 sats.satellite.EO              INFO       <4036.50> EO: setting timed terminal event at 4296.0
2026-05-19 20:28:28,251 sats.satellite.EO              INFO       <4296.00> EO: timed termination at 4296.0 for Target(tgt-5269) window
2026-05-19 20:28:28,253 data.base                      INFO       <4296.00> Total reward: {}
2026-05-19 20:28:28,253 comm.communication             INFO       <4296.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,254 sats.satellite.EO              INFO       <4296.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,256 utils.orbital                  WARNING    <4296.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,258 gym                            INFO       <4296.00> Step reward: 0.0
2026-05-19 20:28:28,259 gym                            INFO       <4296.00> === STARTING STEP ===
2026-05-19 20:28:28,259 sats.satellite.EO              INFO       <4296.00> EO: action_charge tasked for 60.0 seconds
2026-05-19 20:28:28,259 sats.satellite.EO              INFO       <4296.00> EO: setting timed terminal event at 4356.0
2026-05-19 20:28:28,272 sats.satellite.EO              INFO       <4356.00> EO: timed termination at 4356.0 for action_charge
2026-05-19 20:28:28,274 data.base                      INFO       <4356.00> Total reward: {}
2026-05-19 20:28:28,274 comm.communication             INFO       <4356.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,275 sats.satellite.EO              INFO       <4356.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,277 utils.orbital                  WARNING    <4356.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,279 gym                            INFO       <4356.00> Step reward: 0.0
2026-05-19 20:28:28,279 gym                            INFO       <4356.00> === STARTING STEP ===
2026-05-19 20:28:28,280 sats.satellite.EO              INFO       <4356.00> EO: target index 9 tasked
2026-05-19 20:28:28,280 sats.satellite.EO              INFO       <4356.00> EO: Target(tgt-1123) tasked for imaging
2026-05-19 20:28:28,281 sats.satellite.EO              INFO       <4356.00> EO: Target(tgt-1123) window enabled: 4302.3 to 4413.6
2026-05-19 20:28:28,282 sats.satellite.EO              INFO       <4356.00> EO: setting timed terminal event at 4413.6
2026-05-19 20:28:28,294 sats.satellite.EO              INFO       <4414.00> EO: timed termination at 4413.6 for Target(tgt-1123) window
2026-05-19 20:28:28,295 data.base                      INFO       <4414.00> Total reward: {}
2026-05-19 20:28:28,296 comm.communication             INFO       <4414.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,297 sats.satellite.EO              INFO       <4414.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,299 utils.orbital                  WARNING    <4414.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,300 gym                            INFO       <4414.00> Step reward: 0.0
2026-05-19 20:28:28,301 gym                            INFO       <4414.00> === STARTING STEP ===
2026-05-19 20:28:28,301 sats.satellite.EO              INFO       <4414.00> EO: target index 15 tasked
2026-05-19 20:28:28,302 sats.satellite.EO              INFO       <4414.00> EO: Target(tgt-3113) tasked for imaging
2026-05-19 20:28:28,302 sats.satellite.EO              INFO       <4414.00> EO: Target(tgt-3113) window enabled: 4446.8 to 4538.2
2026-05-19 20:28:28,303 sats.satellite.EO              INFO       <4414.00> EO: setting timed terminal event at 4538.2
2026-05-19 20:28:28,328 sats.satellite.EO              INFO       <4538.50> EO: timed termination at 4538.2 for Target(tgt-3113) window
2026-05-19 20:28:28,330 data.base                      INFO       <4538.50> Total reward: {}
2026-05-19 20:28:28,330 comm.communication             INFO       <4538.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,331 sats.satellite.EO              INFO       <4538.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,333 utils.orbital                  WARNING    <4538.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,335 gym                            INFO       <4538.50> Step reward: 0.0
2026-05-19 20:28:28,335 gym                            INFO       <4538.50> === STARTING STEP ===
2026-05-19 20:28:28,336 sats.satellite.EO              INFO       <4538.50> EO: target index 0 tasked
2026-05-19 20:28:28,336 sats.satellite.EO              INFO       <4538.50> EO: Target(tgt-8078) tasked for imaging
2026-05-19 20:28:28,337 sats.satellite.EO              INFO       <4538.50> EO: Target(tgt-8078) window enabled: 4461.2 to 4540.2
2026-05-19 20:28:28,337 sats.satellite.EO              INFO       <4538.50> EO: setting timed terminal event at 4540.2
2026-05-19 20:28:28,339 sats.satellite.EO              INFO       <4540.50> EO: timed termination at 4540.2 for Target(tgt-8078) window
2026-05-19 20:28:28,341 data.base                      INFO       <4540.50> Total reward: {}
2026-05-19 20:28:28,341 comm.communication             INFO       <4540.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,342 sats.satellite.EO              INFO       <4540.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,344 utils.orbital                  WARNING    <4540.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,346 gym                            INFO       <4540.50> Step reward: 0.0
2026-05-19 20:28:28,346 gym                            INFO       <4540.50> === STARTING STEP ===
2026-05-19 20:28:28,346 sats.satellite.EO              INFO       <4540.50> EO: target index 25 tasked
2026-05-19 20:28:28,347 sats.satellite.EO              INFO       <4540.50> EO: Target(tgt-4460) tasked for imaging
2026-05-19 20:28:28,348 sats.satellite.EO              INFO       <4540.50> EO: Target(tgt-4460) window enabled: 4730.4 to 4778.1
2026-05-19 20:28:28,348 sats.satellite.EO              INFO       <4540.50> EO: setting timed terminal event at 4778.1
2026-05-19 20:28:28,397 sats.satellite.EO              INFO       <4778.50> EO: timed termination at 4778.1 for Target(tgt-4460) window
2026-05-19 20:28:28,399 data.base                      INFO       <4778.50> Total reward: {}
2026-05-19 20:28:28,399 comm.communication             INFO       <4778.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,400 sats.satellite.EO              INFO       <4778.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,402 utils.orbital                  WARNING    <4778.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,404 gym                            INFO       <4778.50> Step reward: 0.0
2026-05-19 20:28:28,405 gym                            INFO       <4778.50> === STARTING STEP ===
2026-05-19 20:28:28,405 sats.satellite.EO              INFO       <4778.50> EO: target index 21 tasked
2026-05-19 20:28:28,406 sats.satellite.EO              INFO       <4778.50> EO: Target(tgt-5825) tasked for imaging
2026-05-19 20:28:28,406 sats.satellite.EO              INFO       <4778.50> EO: Target(tgt-5825) window enabled: 4777.8 to 4896.5
2026-05-19 20:28:28,407 sats.satellite.EO              INFO       <4778.50> EO: setting timed terminal event at 4896.5
2026-05-19 20:28:28,432 sats.satellite.EO              INFO       <4897.00> EO: timed termination at 4896.5 for Target(tgt-5825) window
2026-05-19 20:28:28,433 data.base                      INFO       <4897.00> Total reward: {}
2026-05-19 20:28:28,434 comm.communication             INFO       <4897.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,435 sats.satellite.EO              INFO       <4897.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,437 utils.orbital                  WARNING    <4897.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,439 gym                            INFO       <4897.00> Step reward: 0.0
2026-05-19 20:28:28,439 gym                            INFO       <4897.00> === STARTING STEP ===
2026-05-19 20:28:28,439 sats.satellite.EO              INFO       <4897.00> EO: target index 15 tasked
2026-05-19 20:28:28,440 sats.satellite.EO              INFO       <4897.00> EO: Target(tgt-1846) tasked for imaging
2026-05-19 20:28:28,441 sats.satellite.EO              INFO       <4897.00> EO: Target(tgt-1846) window enabled: 4915.2 to 5020.2
2026-05-19 20:28:28,441 sats.satellite.EO              INFO       <4897.00> EO: setting timed terminal event at 5020.2
2026-05-19 20:28:28,467 sats.satellite.EO              INFO       <5020.50> EO: timed termination at 5020.2 for Target(tgt-1846) window
2026-05-19 20:28:28,468 data.base                      INFO       <5020.50> Total reward: {}
2026-05-19 20:28:28,468 comm.communication             INFO       <5020.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,470 sats.satellite.EO              INFO       <5020.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,472 utils.orbital                  WARNING    <5020.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,474 gym                            INFO       <5020.50> Step reward: 0.0
2026-05-19 20:28:28,474 gym                            INFO       <5020.50> === STARTING STEP ===
2026-05-19 20:28:28,475 sats.satellite.EO              INFO       <5020.50> EO: target index 10 tasked
2026-05-19 20:28:28,475 sats.satellite.EO              INFO       <5020.50> EO: Target(tgt-1313) tasked for imaging
2026-05-19 20:28:28,476 sats.satellite.EO              INFO       <5020.50> EO: Target(tgt-1313) window enabled: 5047.7 to 5095.8
2026-05-19 20:28:28,476 sats.satellite.EO              INFO       <5020.50> EO: setting timed terminal event at 5095.8
2026-05-19 20:28:28,493 sats.satellite.EO              INFO       <5096.00> EO: timed termination at 5095.8 for Target(tgt-1313) window
2026-05-19 20:28:28,494 data.base                      INFO       <5096.00> Total reward: {}
2026-05-19 20:28:28,494 comm.communication             INFO       <5096.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,496 sats.satellite.EO              INFO       <5096.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,498 utils.orbital                  WARNING    <5096.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,499 gym                            INFO       <5096.00> Step reward: 0.0
2026-05-19 20:28:28,500 gym                            INFO       <5096.00> === STARTING STEP ===
2026-05-19 20:28:28,500 sats.satellite.EO              INFO       <5096.00> EO: target index 11 tasked
2026-05-19 20:28:28,501 sats.satellite.EO              INFO       <5096.00> EO: Target(tgt-9794) tasked for imaging
2026-05-19 20:28:28,501 sats.satellite.EO              INFO       <5096.00> EO: Target(tgt-9794) window enabled: 5047.3 to 5152.3
2026-05-19 20:28:28,502 sats.satellite.EO              INFO       <5096.00> EO: setting timed terminal event at 5152.3
2026-05-19 20:28:28,515 sats.satellite.EO              INFO       <5152.50> EO: timed termination at 5152.3 for Target(tgt-9794) window
2026-05-19 20:28:28,516 data.base                      INFO       <5152.50> Total reward: {}
2026-05-19 20:28:28,516 comm.communication             INFO       <5152.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,517 sats.satellite.EO              INFO       <5152.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,519 utils.orbital                  WARNING    <5152.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,521 gym                            INFO       <5152.50> Step reward: 0.0
2026-05-19 20:28:28,522 gym                            INFO       <5152.50> === STARTING STEP ===
2026-05-19 20:28:28,522 sats.satellite.EO              INFO       <5152.50> EO: target index 10 tasked
2026-05-19 20:28:28,523 sats.satellite.EO              INFO       <5152.50> EO: Target(tgt-6477) tasked for imaging
2026-05-19 20:28:28,524 sats.satellite.EO              INFO       <5152.50> EO: Target(tgt-6477) window enabled: 5128.9 to 5249.6
2026-05-19 20:28:28,524 sats.satellite.EO              INFO       <5152.50> EO: setting timed terminal event at 5249.6
2026-05-19 20:28:28,545 sats.satellite.EO              INFO       <5250.00> EO: timed termination at 5249.6 for Target(tgt-6477) window
2026-05-19 20:28:28,546 data.base                      INFO       <5250.00> Total reward: {}
2026-05-19 20:28:28,547 comm.communication             INFO       <5250.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,548 sats.satellite.EO              INFO       <5250.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,550 utils.orbital                  WARNING    <5250.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,552 gym                            INFO       <5250.00> Step reward: 0.0
2026-05-19 20:28:28,553 gym                            INFO       <5250.00> === STARTING STEP ===
2026-05-19 20:28:28,553 sats.satellite.EO              INFO       <5250.00> EO: target index 27 tasked
2026-05-19 20:28:28,554 sats.satellite.EO              INFO       <5250.00> EO: Target(tgt-8505) tasked for imaging
2026-05-19 20:28:28,554 sats.satellite.EO              INFO       <5250.00> EO: Target(tgt-8505) window enabled: 5405.2 to 5499.3
2026-05-19 20:28:28,555 sats.satellite.EO              INFO       <5250.00> EO: setting timed terminal event at 5499.3
2026-05-19 20:28:28,604 sats.satellite.EO              INFO       <5499.50> EO: timed termination at 5499.3 for Target(tgt-8505) window
2026-05-19 20:28:28,606 data.base                      INFO       <5499.50> Total reward: {}
2026-05-19 20:28:28,607 comm.communication             INFO       <5499.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,608 sats.satellite.EO              INFO       <5499.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,610 utils.orbital                  WARNING    <5499.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,612 gym                            INFO       <5499.50> Step reward: 0.0
2026-05-19 20:28:28,613 gym                            INFO       <5499.50> === STARTING STEP ===
2026-05-19 20:28:28,613 sats.satellite.EO              INFO       <5499.50> EO: target index 19 tasked
2026-05-19 20:28:28,614 sats.satellite.EO              INFO       <5499.50> EO: Target(tgt-385) tasked for imaging
2026-05-19 20:28:28,615 sats.satellite.EO              INFO       <5499.50> EO: Target(tgt-385) window enabled: 5510.8 to 5625.7
2026-05-19 20:28:28,615 sats.satellite.EO              INFO       <5499.50> EO: setting timed terminal event at 5625.7
2026-05-19 20:28:28,642 sats.satellite.EO              INFO       <5626.00> EO: timed termination at 5625.7 for Target(tgt-385) window
2026-05-19 20:28:28,643 data.base                      INFO       <5626.00> Total reward: {}
2026-05-19 20:28:28,644 comm.communication             INFO       <5626.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,645 sats.satellite.EO              INFO       <5626.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,648 utils.orbital                  WARNING    <5626.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,649 gym                            INFO       <5626.00> Step reward: 0.0
2026-05-19 20:28:28,650 gym                            INFO       <5626.00> === STARTING STEP ===
2026-05-19 20:28:28,650 sats.satellite.EO              INFO       <5626.00> EO: target index 2 tasked
2026-05-19 20:28:28,651 sats.satellite.EO              INFO       <5626.00> EO: Target(tgt-6374) tasked for imaging
2026-05-19 20:28:28,651 sats.satellite.EO              INFO       <5626.00> EO: Target(tgt-6374) window enabled: 5527.7 to 5647.4
2026-05-19 20:28:28,652 sats.satellite.EO              INFO       <5626.00> EO: setting timed terminal event at 5647.4
2026-05-19 20:28:28,658 sats.satellite.EO              INFO       <5647.50> EO: timed termination at 5647.4 for Target(tgt-6374) window
2026-05-19 20:28:28,660 data.base                      INFO       <5647.50> Total reward: {}
2026-05-19 20:28:28,660 comm.communication             INFO       <5647.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,661 sats.satellite.EO              INFO       <5647.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,664 utils.orbital                  WARNING    <5647.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,665 gym                            INFO       <5647.50> Step reward: 0.0
2026-05-19 20:28:28,666 gym                            INFO       <5647.50> === STARTING STEP ===
2026-05-19 20:28:28,666 sats.satellite.EO              INFO       <5647.50> EO: target index 5 tasked
2026-05-19 20:28:28,667 sats.satellite.EO              INFO       <5647.50> EO: Target(tgt-2254) tasked for imaging
2026-05-19 20:28:28,667 sats.satellite.EO              INFO       <5647.50> EO: Target(tgt-2254) window enabled: 5578.4 to 5694.7
2026-05-19 20:28:28,668 sats.satellite.EO              INFO       <5647.50> EO: setting timed terminal event at 5694.7
2026-05-19 20:28:28,681 sats.satellite.EO              INFO       <5695.00> EO: timed termination at 5694.7 for Target(tgt-2254) window
2026-05-19 20:28:28,682 data.base                      INFO       <5695.00> Total reward: {}
2026-05-19 20:28:28,683 comm.communication             INFO       <5695.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,684 sats.satellite.EO              INFO       <5695.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,686 utils.orbital                  WARNING    <5695.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,688 gym                            INFO       <5695.00> Step reward: 0.0
2026-05-19 20:28:28,688 gym                            INFO       <5695.00> === STARTING STEP ===
2026-05-19 20:28:28,689 sats.satellite.EO              INFO       <5695.00> EO: target index 24 tasked
2026-05-19 20:28:28,689 sats.satellite.EO              INFO       <5695.00> EO: Target(tgt-6013) tasked for imaging
2026-05-19 20:28:28,690 sats.satellite.EO              INFO       <5695.00> EO: Target(tgt-6013) window enabled: 5819.0 to 5895.1
2026-05-19 20:28:28,690 sats.satellite.EO              INFO       <5695.00> EO: setting timed terminal event at 5895.1
2026-05-19 20:28:28,731 sats.satellite.EO              INFO       <5895.50> EO: timed termination at 5895.1 for Target(tgt-6013) window
2026-05-19 20:28:28,733 data.base                      INFO       <5895.50> Total reward: {}
2026-05-19 20:28:28,734 comm.communication             INFO       <5895.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,735 sats.satellite.EO              INFO       <5895.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,737 utils.orbital                  WARNING    <5895.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,739 gym                            INFO       <5895.50> Step reward: 0.0
2026-05-19 20:28:28,740 gym                            INFO       <5895.50> === STARTING STEP ===
2026-05-19 20:28:28,740 sats.satellite.EO              INFO       <5895.50> EO: target index 8 tasked
2026-05-19 20:28:28,741 sats.satellite.EO              INFO       <5895.50> EO: Target(tgt-703) tasked for imaging
2026-05-19 20:28:28,741 sats.satellite.EO              INFO       <5895.50> EO: Target(tgt-703) window enabled: 5908.0 to 5945.7
2026-05-19 20:28:28,742 sats.satellite.EO              INFO       <5895.50> EO: setting timed terminal event at 5945.7
2026-05-19 20:28:28,754 sats.satellite.EO              INFO       <5946.00> EO: timed termination at 5945.7 for Target(tgt-703) window
2026-05-19 20:28:28,755 data.base                      INFO       <5946.00> Total reward: {}
2026-05-19 20:28:28,756 comm.communication             INFO       <5946.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,757 sats.satellite.EO              INFO       <5946.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,759 utils.orbital                  WARNING    <5946.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,761 gym                            INFO       <5946.00> Step reward: 0.0
2026-05-19 20:28:28,762 gym                            INFO       <5946.00> === STARTING STEP ===
2026-05-19 20:28:28,762 sats.satellite.EO              INFO       <5946.00> EO: target index 7 tasked
2026-05-19 20:28:28,763 sats.satellite.EO              INFO       <5946.00> EO: Target(tgt-2991) tasked for imaging
2026-05-19 20:28:28,763 sats.satellite.EO              INFO       <5946.00> EO: Target(tgt-2991) window enabled: 5900.9 to 5990.2
2026-05-19 20:28:28,764 sats.satellite.EO              INFO       <5946.00> EO: setting timed terminal event at 5990.2
2026-05-19 20:28:28,774 sats.satellite.EO              INFO       <5990.50> EO: timed termination at 5990.2 for Target(tgt-2991) window
2026-05-19 20:28:28,775 data.base                      INFO       <5990.50> Total reward: {}
2026-05-19 20:28:28,776 comm.communication             INFO       <5990.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,777 sats.satellite.EO              INFO       <5990.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,779 utils.orbital                  WARNING    <5990.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,781 gym                            INFO       <5990.50> Step reward: 0.0
2026-05-19 20:28:28,781 gym                            INFO       <5990.50> === STARTING STEP ===
2026-05-19 20:28:28,782 sats.satellite.EO              INFO       <5990.50> EO: target index 16 tasked
2026-05-19 20:28:28,782 sats.satellite.EO              INFO       <5990.50> EO: Target(tgt-2223) tasked for imaging
2026-05-19 20:28:28,784 sats.satellite.EO              INFO       <5990.50> EO: Target(tgt-2223) window enabled: 5983.7 to 6105.8
2026-05-19 20:28:28,784 sats.satellite.EO              INFO       <5990.50> EO: setting timed terminal event at 6105.8
2026-05-19 20:28:28,816 sats.satellite.EO              INFO       <6106.00> EO: timed termination at 6105.8 for Target(tgt-2223) window
2026-05-19 20:28:28,818 data.base                      INFO       <6106.00> Total reward: {}
2026-05-19 20:28:28,818 comm.communication             INFO       <6106.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,820 sats.satellite.EO              INFO       <6106.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,822 utils.orbital                  WARNING    <6106.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,824 gym                            INFO       <6106.00> Step reward: 0.0
2026-05-19 20:28:28,824 gym                            INFO       <6106.00> === STARTING STEP ===
2026-05-19 20:28:28,825 sats.satellite.EO              INFO       <6106.00> EO: target index 6 tasked
2026-05-19 20:28:28,825 sats.satellite.EO              INFO       <6106.00> EO: Target(tgt-8297) tasked for imaging
2026-05-19 20:28:28,826 sats.satellite.EO              INFO       <6106.00> EO: Target(tgt-8297) window enabled: 6045.6 to 6166.9
2026-05-19 20:28:28,826 sats.satellite.EO              INFO       <6106.00> EO: setting timed terminal event at 6166.9
2026-05-19 20:28:28,842 sats.satellite.EO              INFO       <6167.00> EO: timed termination at 6166.9 for Target(tgt-8297) window
2026-05-19 20:28:28,843 data.base                      INFO       <6167.00> Total reward: {}
2026-05-19 20:28:28,844 comm.communication             INFO       <6167.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,845 sats.satellite.EO              INFO       <6167.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,848 utils.orbital                  WARNING    <6167.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,850 gym                            INFO       <6167.00> Step reward: 0.0
2026-05-19 20:28:28,851 gym                            INFO       <6167.00> === STARTING STEP ===
2026-05-19 20:28:28,851 sats.satellite.EO              INFO       <6167.00> EO: target index 4 tasked
2026-05-19 20:28:28,852 sats.satellite.EO              INFO       <6167.00> EO: Target(tgt-1244) tasked for imaging
2026-05-19 20:28:28,853 sats.satellite.EO              INFO       <6167.00> EO: Target(tgt-1244) window enabled: 6073.7 to 6190.3
2026-05-19 20:28:28,853 sats.satellite.EO              INFO       <6167.00> EO: setting timed terminal event at 6190.3
2026-05-19 20:28:28,861 sats.satellite.EO              INFO       <6190.50> EO: timed termination at 6190.3 for Target(tgt-1244) window
2026-05-19 20:28:28,862 data.base                      INFO       <6190.50> Total reward: {}
2026-05-19 20:28:28,863 comm.communication             INFO       <6190.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,864 sats.satellite.EO              INFO       <6190.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,866 utils.orbital                  WARNING    <6190.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,868 gym                            INFO       <6190.50> Step reward: 0.0
2026-05-19 20:28:28,869 gym                            INFO       <6190.50> === STARTING STEP ===
2026-05-19 20:28:28,869 sats.satellite.EO              INFO       <6190.50> EO: target index 22 tasked
2026-05-19 20:28:28,870 sats.satellite.EO              INFO       <6190.50> EO: Target(tgt-604) tasked for imaging
2026-05-19 20:28:28,870 sats.satellite.EO              INFO       <6190.50> EO: Target(tgt-604) window enabled: 6269.4 to 6375.5
2026-05-19 20:28:28,871 sats.satellite.EO              INFO       <6190.50> EO: setting timed terminal event at 6375.5
2026-05-19 20:28:28,922 sats.satellite.EO              INFO       <6375.50> EO: timed termination at 6375.5 for Target(tgt-604) window
2026-05-19 20:28:28,923 data.base                      INFO       <6375.50> Total reward: {}
2026-05-19 20:28:28,924 comm.communication             INFO       <6375.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,925 sats.satellite.EO              INFO       <6375.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,928 utils.orbital                  WARNING    <6375.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,930 gym                            INFO       <6375.50> Step reward: 0.0
2026-05-19 20:28:28,930 gym                            INFO       <6375.50> === STARTING STEP ===
2026-05-19 20:28:28,931 sats.satellite.EO              INFO       <6375.50> EO: target index 1 tasked
2026-05-19 20:28:28,931 sats.satellite.EO              INFO       <6375.50> EO: Target(tgt-3865) tasked for imaging
2026-05-19 20:28:28,932 sats.satellite.EO              INFO       <6375.50> EO: Target(tgt-3865) window enabled: 6289.0 to 6383.8
2026-05-19 20:28:28,932 sats.satellite.EO              INFO       <6375.50> EO: setting timed terminal event at 6383.8
2026-05-19 20:28:28,935 sats.satellite.EO              INFO       <6384.00> EO: timed termination at 6383.8 for Target(tgt-3865) window
2026-05-19 20:28:28,936 data.base                      INFO       <6384.00> Total reward: {}
2026-05-19 20:28:28,937 comm.communication             INFO       <6384.00> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,938 sats.satellite.EO              INFO       <6384.00> EO: Satellite EO requires retasking
2026-05-19 20:28:28,940 utils.orbital                  WARNING    <6384.00> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,942 gym                            INFO       <6384.00> Step reward: 0.0
2026-05-19 20:28:28,943 gym                            INFO       <6384.00> === STARTING STEP ===
2026-05-19 20:28:28,943 sats.satellite.EO              INFO       <6384.00> EO: target index 11 tasked
2026-05-19 20:28:28,944 sats.satellite.EO              INFO       <6384.00> EO: Target(tgt-4061) tasked for imaging
2026-05-19 20:28:28,945 sats.satellite.EO              INFO       <6384.00> EO: Target(tgt-4061) window enabled: 6442.3 to 6498.1
2026-05-19 20:28:28,945 sats.satellite.EO              INFO       <6384.00> EO: setting timed terminal event at 6498.1
2026-05-19 20:28:28,971 sats.satellite.EO              INFO       <6498.50> EO: timed termination at 6498.1 for Target(tgt-4061) window
2026-05-19 20:28:28,973 data.base                      INFO       <6498.50> Total reward: {}
2026-05-19 20:28:28,974 comm.communication             INFO       <6498.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,975 sats.satellite.EO              INFO       <6498.50> EO: Satellite EO requires retasking
2026-05-19 20:28:28,977 utils.orbital                  WARNING    <6498.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:28,979 gym                            INFO       <6498.50> Step reward: 0.0
2026-05-19 20:28:28,980 gym                            INFO       <6498.50> === STARTING STEP ===
2026-05-19 20:28:28,980 sats.satellite.EO              INFO       <6498.50> EO: target index 11 tasked
2026-05-19 20:28:28,981 sats.satellite.EO              INFO       <6498.50> EO: Target(tgt-1148) tasked for imaging
2026-05-19 20:28:28,982 sats.satellite.EO              INFO       <6498.50> EO: Target(tgt-1148) window enabled: 6477.0 to 6562.4
2026-05-19 20:28:28,982 sats.satellite.EO              INFO       <6498.50> EO: setting timed terminal event at 6562.4
2026-05-19 20:28:28,996 sats.satellite.EO              INFO       <6562.50> EO: timed termination at 6562.4 for Target(tgt-1148) window
2026-05-19 20:28:28,998 data.base                      INFO       <6562.50> Total reward: {}
2026-05-19 20:28:28,998 comm.communication             INFO       <6562.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:28,999 sats.satellite.EO              INFO       <6562.50> EO: Satellite EO requires retasking
2026-05-19 20:28:29,002 utils.orbital                  WARNING    <6562.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:29,003 gym                            INFO       <6562.50> Step reward: 0.0
2026-05-19 20:28:29,004 gym                            INFO       <6562.50> === STARTING STEP ===
2026-05-19 20:28:29,004 sats.satellite.EO              INFO       <6562.50> EO: target index 23 tasked
2026-05-19 20:28:29,005 sats.satellite.EO              INFO       <6562.50> EO: Target(tgt-7753) tasked for imaging
2026-05-19 20:28:29,006 sats.satellite.EO              INFO       <6562.50> EO: Target(tgt-7753) window enabled: 6714.8 to 6812.5
2026-05-19 20:28:29,006 sats.satellite.EO              INFO       <6562.50> EO: setting timed terminal event at 6812.5
2026-05-19 20:28:29,056 sats.satellite.EO              INFO       <6812.50> EO: timed termination at 6812.5 for Target(tgt-7753) window
2026-05-19 20:28:29,058 data.base                      INFO       <6812.50> Total reward: {}
2026-05-19 20:28:29,058 comm.communication             INFO       <6812.50> Optimizing data communication between all pairs of satellites
2026-05-19 20:28:29,059 sats.satellite.EO              INFO       <6812.50> EO: Satellite EO requires retasking
2026-05-19 20:28:29,062 utils.orbital                  WARNING    <6812.50> Could not find eclipse transitions in next 12000.0 seconds
2026-05-19 20:28:29,063 sats.satellite.EO              WARNING    <6812.50> EO: failed battery_valid check
2026-05-19 20:28:29,064 gym                            INFO       <6812.50> Step reward: 0.0
2026-05-19 20:28:29,064 gym                            INFO       <6812.50> Episode terminated: True
2026-05-19 20:28:29,065 gym                            INFO       <6812.50> 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.0620897932961784)}
Covered by clouds: {Target(tgt-8899), Target(tgt-794), Target(tgt-5480), Target(tgt-3273), Target(tgt-7434), Target(tgt-6063), Target(tgt-4756), Target(tgt-2290), Target(tgt-7842), Target(tgt-1319), Target(tgt-4212)}
Not covered by clouds: {Target(tgt-2316), Target(tgt-997), Target(tgt-842), Target(tgt-5792), Target(tgt-1740), Target(tgt-2545), Target(tgt-7643), Target(tgt-2495)}