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]:
from typing import ClassVar

import gymnasium as gym
import numpy as np
from Basilisk.architecture import bskLogging
from Basilisk.utilities import orbitalMotion

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

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: ClassVar[list[obs.Observation]] = [
        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: ClassVar[list[act.Action]] = [
        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 opportunity["object"].cloud_cover_forecast < 0.2
    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: set["Target"] | None = None,
        duplicates: int = 0,
        known: set["Target"] | None = None,
        cloud_covered: set["Target"] | None = None,
        cloud_free: set["Target"] | None = 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-11-09 20:08:18,007 gym                            INFO       Calling env.reset() to get observation space
2026-11-09 20:08:18,007 gym                            INFO       Resetting environment with seed=3359948931
2026-11-09 20:08:18,008 scene.targets                  INFO       Generating 2636 targets
2026-11-09 20:08:18,080 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-11-09 20:08:18,338 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-11-09 20:08:18,343 gym                            INFO       Resetting environment with seed=1
2026-11-09 20:08:18,345 scene.targets                  INFO       Generating 9920 targets
2026-11-09 20:08:18,462 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-11-09 20:08:19,448 utils.orbital                  WARNING    <0.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,449 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-11-09 20:08:19,458 gym                            INFO       <0.00> === STARTING STEP ===
2026-11-09 20:08:19,459 sats.satellite.EO              INFO       <0.00> EO: action_charge tasked for 60.0 seconds
2026-11-09 20:08:19,459 sats.satellite.EO              INFO       <0.00> EO: setting timed terminal event at 60.0
2026-11-09 20:08:19,469 sats.satellite.EO              INFO       <60.00> EO: timed termination at 60.0 for action_charge
2026-11-09 20:08:19,470 data.base                      INFO       <60.00> Total reward: {}
2026-11-09 20:08:19,470 comm.communication             INFO       <60.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,471 sats.satellite.EO              INFO       <60.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,473 utils.orbital                  WARNING    <60.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,474 gym                            INFO       <60.00> Step reward: 0.0
2026-11-09 20:08:19,475 gym                            INFO       <60.00> === STARTING STEP ===
2026-11-09 20:08:19,475 sats.satellite.EO              WARNING    <60.00> EO: Requires retasking but received no task.
2026-11-09 20:08:19,513 sim.simulator                  INFO       <360.00> Max step duration reached
2026-11-09 20:08:19,515 data.base                      INFO       <360.00> Total reward: {}
2026-11-09 20:08:19,515 comm.communication             INFO       <360.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,516 sats.satellite.EO              INFO       <360.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,517 utils.orbital                  WARNING    <360.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,518 gym                            INFO       <360.00> Step reward: 0.0
2026-11-09 20:08:19,519 gym                            INFO       <360.00> === STARTING STEP ===
2026-11-09 20:08:19,519 sats.satellite.EO              INFO       <360.00> EO: target index 0 tasked
2026-11-09 20:08:19,519 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) tasked for imaging
2026-11-09 20:08:19,520 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) window enabled: 256.2 to 377.2
2026-11-09 20:08:19,520 sats.satellite.EO              INFO       <360.00> EO: setting timed terminal event at 377.2
2026-11-09 20:08:19,524 sats.satellite.EO              INFO       <377.50> EO: timed termination at 377.2 for Target(tgt-7918) window
2026-11-09 20:08:19,525 data.base                      INFO       <377.50> Total reward: {}
2026-11-09 20:08:19,525 comm.communication             INFO       <377.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,525 sats.satellite.EO              INFO       <377.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,527 utils.orbital                  WARNING    <377.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,528 gym                            INFO       <377.50> Step reward: 0.0
2026-11-09 20:08:19,529 gym                            INFO       <377.50> === STARTING STEP ===
2026-11-09 20:08:19,529 sats.satellite.EO              INFO       <377.50> EO: target index 1 tasked
2026-11-09 20:08:19,529 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-5695) tasked for imaging
2026-11-09 20:08:19,530 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-5695) window enabled: 269.5 to 387.6
2026-11-09 20:08:19,530 sats.satellite.EO              INFO       <377.50> EO: setting timed terminal event at 387.6
2026-11-09 20:08:19,533 sats.satellite.EO              INFO       <388.00> EO: timed termination at 387.6 for Target(tgt-5695) window
2026-11-09 20:08:19,534 data.base                      INFO       <388.00> Total reward: {}
2026-11-09 20:08:19,534 comm.communication             INFO       <388.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,535 sats.satellite.EO              INFO       <388.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,536 utils.orbital                  WARNING    <388.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,537 gym                            INFO       <388.00> Step reward: 0.0
2026-11-09 20:08:19,538 gym                            INFO       <388.00> === STARTING STEP ===
2026-11-09 20:08:19,538 sats.satellite.EO              INFO       <388.00> EO: target index 19 tasked
2026-11-09 20:08:19,538 sats.satellite.EO              INFO       <388.00> EO: Target(tgt-1315) tasked for imaging
2026-11-09 20:08:19,539 sats.satellite.EO              INFO       <388.00> EO: Target(tgt-1315) window enabled: 443.0 to 559.1
2026-11-09 20:08:19,539 sats.satellite.EO              INFO       <388.00> EO: setting timed terminal event at 559.1
2026-11-09 20:08:19,549 sats.satellite.EO              INFO       <446.50> EO: imaged Target(tgt-1315)
2026-11-09 20:08:19,550 data.base                      INFO       <446.50> Total reward: {'EO': np.float64(0.08593387896802629)}
2026-11-09 20:08:19,550 comm.communication             INFO       <446.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,551 sats.satellite.EO              INFO       <446.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,552 utils.orbital                  WARNING    <446.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,554 gym                            INFO       <446.50> Step reward: 0.08593387896802629
2026-11-09 20:08:19,554 gym                            INFO       <446.50> === STARTING STEP ===
2026-11-09 20:08:19,554 sats.satellite.EO              INFO       <446.50> EO: target index 19 tasked
2026-11-09 20:08:19,554 sats.satellite.EO              INFO       <446.50> EO: Target(tgt-4293) tasked for imaging
2026-11-09 20:08:19,555 sats.satellite.EO              INFO       <446.50> EO: Target(tgt-4293) window enabled: 519.6 to 608.4
2026-11-09 20:08:19,555 sats.satellite.EO              INFO       <446.50> EO: setting timed terminal event at 608.4
2026-11-09 20:08:19,570 sats.satellite.EO              INFO       <521.00> EO: imaged Target(tgt-4293)
2026-11-09 20:08:19,571 data.base                      INFO       <521.00> Total reward: {}
2026-11-09 20:08:19,572 comm.communication             INFO       <521.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,572 sats.satellite.EO              INFO       <521.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,574 utils.orbital                  WARNING    <521.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,575 gym                            INFO       <521.00> Step reward: 0.0
2026-11-09 20:08:19,575 gym                            INFO       <521.00> === STARTING STEP ===
2026-11-09 20:08:19,575 sats.satellite.EO              INFO       <521.00> EO: target index 9 tasked
2026-11-09 20:08:19,576 sats.satellite.EO              INFO       <521.00> EO: Target(tgt-6889) tasked for imaging
2026-11-09 20:08:19,576 sats.satellite.EO              INFO       <521.00> EO: Target(tgt-6889) window enabled: 492.3 to 597.8
2026-11-09 20:08:19,577 sats.satellite.EO              INFO       <521.00> EO: setting timed terminal event at 597.8
2026-11-09 20:08:19,581 sats.satellite.EO              INFO       <539.50> EO: imaged Target(tgt-6889)
2026-11-09 20:08:19,582 data.base                      INFO       <539.50> Total reward: {}
2026-11-09 20:08:19,582 comm.communication             INFO       <539.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,582 sats.satellite.EO              INFO       <539.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,584 utils.orbital                  WARNING    <539.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,585 gym                            INFO       <539.50> Step reward: 0.0
2026-11-09 20:08:19,585 gym                            INFO       <539.50> === STARTING STEP ===
2026-11-09 20:08:19,585 sats.satellite.EO              INFO       <539.50> EO: target index 6 tasked
2026-11-09 20:08:19,586 sats.satellite.EO              INFO       <539.50> EO: Target(tgt-436) tasked for imaging
2026-11-09 20:08:19,587 sats.satellite.EO              INFO       <539.50> EO: Target(tgt-436) window enabled: 503.2 to 605.9
2026-11-09 20:08:19,587 sats.satellite.EO              INFO       <539.50> EO: setting timed terminal event at 605.9
2026-11-09 20:08:19,593 sats.satellite.EO              INFO       <578.00> EO: imaged Target(tgt-436)
2026-11-09 20:08:19,594 data.base                      INFO       <578.00> Total reward: {'EO': np.float64(0.06129826789359197)}
2026-11-09 20:08:19,595 comm.communication             INFO       <578.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,595 sats.satellite.EO              INFO       <578.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,596 utils.orbital                  WARNING    <578.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,598 gym                            INFO       <578.00> Step reward: 0.06129826789359197
2026-11-09 20:08:19,598 gym                            INFO       <578.00> === STARTING STEP ===
2026-11-09 20:08:19,598 sats.satellite.EO              INFO       <578.00> EO: target index 2 tasked
2026-11-09 20:08:19,599 sats.satellite.EO              INFO       <578.00> EO: Target(tgt-4007) tasked for imaging
2026-11-09 20:08:19,599 sats.satellite.EO              INFO       <578.00> EO: Target(tgt-4007) window enabled: 518.3 to 611.3
2026-11-09 20:08:19,599 sats.satellite.EO              INFO       <578.00> EO: setting timed terminal event at 611.3
2026-11-09 20:08:19,605 sats.satellite.EO              INFO       <611.50> EO: timed termination at 611.3 for Target(tgt-4007) window
2026-11-09 20:08:19,606 data.base                      INFO       <611.50> Total reward: {}
2026-11-09 20:08:19,607 comm.communication             INFO       <611.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,607 sats.satellite.EO              INFO       <611.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,608 utils.orbital                  WARNING    <611.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,610 gym                            INFO       <611.50> Step reward: 0.0
2026-11-09 20:08:19,610 gym                            INFO       <611.50> === STARTING STEP ===
2026-11-09 20:08:19,610 sats.satellite.EO              INFO       <611.50> EO: target index 8 tasked
2026-11-09 20:08:19,611 sats.satellite.EO              INFO       <611.50> EO: Target(tgt-4659) tasked for imaging
2026-11-09 20:08:19,611 sats.satellite.EO              INFO       <611.50> EO: Target(tgt-4659) window enabled: 622.5 to 664.3
2026-11-09 20:08:19,612 sats.satellite.EO              INFO       <611.50> EO: setting timed terminal event at 664.3
2026-11-09 20:08:19,620 sats.satellite.EO              INFO       <664.50> EO: timed termination at 664.3 for Target(tgt-4659) window
2026-11-09 20:08:19,621 data.base                      INFO       <664.50> Total reward: {}
2026-11-09 20:08:19,622 comm.communication             INFO       <664.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,622 sats.satellite.EO              INFO       <664.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,623 utils.orbital                  WARNING    <664.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,625 gym                            INFO       <664.50> Step reward: 0.0
2026-11-09 20:08:19,625 gym                            INFO       <664.50> === STARTING STEP ===
2026-11-09 20:08:19,626 sats.satellite.EO              INFO       <664.50> EO: target index 2 tasked
2026-11-09 20:08:19,626 sats.satellite.EO              INFO       <664.50> EO: Target(tgt-7965) tasked for imaging
2026-11-09 20:08:19,626 sats.satellite.EO              INFO       <664.50> EO: Target(tgt-7965) window enabled: 577.7 to 687.6
2026-11-09 20:08:19,626 sats.satellite.EO              INFO       <664.50> EO: setting timed terminal event at 687.6
2026-11-09 20:08:19,627 sats.satellite.EO              INFO       <665.00> EO: imaged Target(tgt-7965)
2026-11-09 20:08:19,628 data.base                      INFO       <665.00> Total reward: {}
2026-11-09 20:08:19,628 comm.communication             INFO       <665.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,629 sats.satellite.EO              INFO       <665.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,630 utils.orbital                  WARNING    <665.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,631 gym                            INFO       <665.00> Step reward: 0.0
2026-11-09 20:08:19,632 gym                            INFO       <665.00> === STARTING STEP ===
2026-11-09 20:08:19,632 sats.satellite.EO              INFO       <665.00> EO: target index 15 tasked
2026-11-09 20:08:19,632 sats.satellite.EO              INFO       <665.00> EO: Target(tgt-4933) tasked for imaging
2026-11-09 20:08:19,633 sats.satellite.EO              INFO       <665.00> EO: Target(tgt-4933) window enabled: 683.8 to 795.1
2026-11-09 20:08:19,633 sats.satellite.EO              INFO       <665.00> EO: setting timed terminal event at 795.1
2026-11-09 20:08:19,642 sats.satellite.EO              INFO       <720.00> EO: imaged Target(tgt-4933)
2026-11-09 20:08:19,643 data.base                      INFO       <720.00> Total reward: {'EO': np.float64(0.06572952500897762)}
2026-11-09 20:08:19,643 comm.communication             INFO       <720.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,644 sats.satellite.EO              INFO       <720.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,645 utils.orbital                  WARNING    <720.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,647 gym                            INFO       <720.00> Step reward: 0.06572952500897762
2026-11-09 20:08:19,647 gym                            INFO       <720.00> === STARTING STEP ===
2026-11-09 20:08:19,647 sats.satellite.EO              INFO       <720.00> EO: target index 18 tasked
2026-11-09 20:08:19,648 sats.satellite.EO              INFO       <720.00> EO: Target(tgt-8473) tasked for imaging
2026-11-09 20:08:19,648 sats.satellite.EO              INFO       <720.00> EO: Target(tgt-8473) window enabled: 812.5 to 870.1
2026-11-09 20:08:19,649 sats.satellite.EO              INFO       <720.00> EO: setting timed terminal event at 870.1
2026-11-09 20:08:19,663 sats.satellite.EO              INFO       <814.00> EO: imaged Target(tgt-8473)
2026-11-09 20:08:19,664 data.base                      INFO       <814.00> Total reward: {}
2026-11-09 20:08:19,665 comm.communication             INFO       <814.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,665 sats.satellite.EO              INFO       <814.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,666 utils.orbital                  WARNING    <814.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,668 gym                            INFO       <814.00> Step reward: 0.0
2026-11-09 20:08:19,668 gym                            INFO       <814.00> === STARTING STEP ===
2026-11-09 20:08:19,668 sats.satellite.EO              INFO       <814.00> EO: target index 6 tasked
2026-11-09 20:08:19,669 sats.satellite.EO              INFO       <814.00> EO: Target(tgt-794) tasked for imaging
2026-11-09 20:08:19,669 sats.satellite.EO              INFO       <814.00> EO: Target(tgt-794) window enabled: 749.8 to 869.2
2026-11-09 20:08:19,670 sats.satellite.EO              INFO       <814.00> EO: setting timed terminal event at 869.2
2026-11-09 20:08:19,675 sats.satellite.EO              INFO       <845.00> EO: imaged Target(tgt-794)
2026-11-09 20:08:19,676 data.base                      INFO       <845.00> Total reward: {}
2026-11-09 20:08:19,676 comm.communication             INFO       <845.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,677 sats.satellite.EO              INFO       <845.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,678 utils.orbital                  WARNING    <845.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,679 gym                            INFO       <845.00> Step reward: 0.0
2026-11-09 20:08:19,680 gym                            INFO       <845.00> === STARTING STEP ===
2026-11-09 20:08:19,680 sats.satellite.EO              INFO       <845.00> EO: target index 3 tasked
2026-11-09 20:08:19,680 sats.satellite.EO              INFO       <845.00> EO: Target(tgt-3571) tasked for imaging
2026-11-09 20:08:19,681 sats.satellite.EO              INFO       <845.00> EO: Target(tgt-3571) window enabled: 814.3 to 897.8
2026-11-09 20:08:19,681 sats.satellite.EO              INFO       <845.00> EO: setting timed terminal event at 897.8
2026-11-09 20:08:19,688 sats.satellite.EO              INFO       <886.00> EO: imaged Target(tgt-3571)
2026-11-09 20:08:19,689 data.base                      INFO       <886.00> Total reward: {}
2026-11-09 20:08:19,689 comm.communication             INFO       <886.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,689 sats.satellite.EO              INFO       <886.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,691 utils.orbital                  WARNING    <886.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,692 gym                            INFO       <886.00> Step reward: 0.0
2026-11-09 20:08:19,692 gym                            INFO       <886.00> === STARTING STEP ===
2026-11-09 20:08:19,693 sats.satellite.EO              INFO       <886.00> EO: target index 13 tasked
2026-11-09 20:08:19,693 sats.satellite.EO              INFO       <886.00> EO: Target(tgt-2470) tasked for imaging
2026-11-09 20:08:19,693 sats.satellite.EO              INFO       <886.00> EO: Target(tgt-2470) window enabled: 892.7 to 1009.7
2026-11-09 20:08:19,694 sats.satellite.EO              INFO       <886.00> EO: setting timed terminal event at 1009.7
2026-11-09 20:08:19,702 sats.satellite.EO              INFO       <934.00> EO: imaged Target(tgt-2470)
2026-11-09 20:08:19,703 data.base                      INFO       <934.00> Total reward: {'EO': np.float64(0.05307198002541219)}
2026-11-09 20:08:19,704 comm.communication             INFO       <934.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,704 sats.satellite.EO              INFO       <934.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,705 utils.orbital                  WARNING    <934.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,707 gym                            INFO       <934.00> Step reward: 0.05307198002541219
2026-11-09 20:08:19,707 gym                            INFO       <934.00> === STARTING STEP ===
2026-11-09 20:08:19,707 sats.satellite.EO              INFO       <934.00> EO: target index 6 tasked
2026-11-09 20:08:19,708 sats.satellite.EO              INFO       <934.00> EO: Target(tgt-7959) tasked for imaging
2026-11-09 20:08:19,708 sats.satellite.EO              INFO       <934.00> EO: Target(tgt-7959) window enabled: 964.4 to 1020.5
2026-11-09 20:08:19,709 sats.satellite.EO              INFO       <934.00> EO: setting timed terminal event at 1020.5
2026-11-09 20:08:19,716 sats.satellite.EO              INFO       <973.50> EO: imaged Target(tgt-7959)
2026-11-09 20:08:19,717 data.base                      INFO       <973.50> Total reward: {}
2026-11-09 20:08:19,717 comm.communication             INFO       <973.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,717 sats.satellite.EO              INFO       <973.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,719 utils.orbital                  WARNING    <973.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,720 gym                            INFO       <973.50> Step reward: 0.0
2026-11-09 20:08:19,721 gym                            INFO       <973.50> === STARTING STEP ===
2026-11-09 20:08:19,721 sats.satellite.EO              INFO       <973.50> EO: target index 8 tasked
2026-11-09 20:08:19,721 sats.satellite.EO              INFO       <973.50> EO: Target(tgt-2383) tasked for imaging
2026-11-09 20:08:19,722 sats.satellite.EO              INFO       <973.50> EO: Target(tgt-2383) window enabled: 959.0 to 1058.5
2026-11-09 20:08:19,722 sats.satellite.EO              INFO       <973.50> EO: setting timed terminal event at 1058.5
2026-11-09 20:08:19,728 sats.satellite.EO              INFO       <996.50> EO: imaged Target(tgt-2383)
2026-11-09 20:08:19,729 data.base                      INFO       <996.50> Total reward: {'EO': np.float64(0.6987487330578697)}
2026-11-09 20:08:19,729 comm.communication             INFO       <996.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,729 sats.satellite.EO              INFO       <996.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,731 utils.orbital                  WARNING    <996.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,732 gym                            INFO       <996.50> Step reward: 0.6987487330578697
2026-11-09 20:08:19,733 gym                            INFO       <996.50> === STARTING STEP ===
2026-11-09 20:08:19,733 sats.satellite.EO              INFO       <996.50> EO: target index 31 tasked
2026-11-09 20:08:19,733 sats.satellite.EO              INFO       <996.50> EO: Target(tgt-7091) tasked for imaging
2026-11-09 20:08:19,734 sats.satellite.EO              INFO       <996.50> EO: Target(tgt-7091) window enabled: 1208.8 to 1295.0
2026-11-09 20:08:19,734 sats.satellite.EO              INFO       <996.50> EO: setting timed terminal event at 1295.0
2026-11-09 20:08:19,773 sats.satellite.EO              INFO       <1210.00> EO: imaged Target(tgt-7091)
2026-11-09 20:08:19,774 data.base                      INFO       <1210.00> Total reward: {}
2026-11-09 20:08:19,774 comm.communication             INFO       <1210.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,775 sats.satellite.EO              INFO       <1210.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,776 utils.orbital                  WARNING    <1210.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,778 gym                            INFO       <1210.00> Step reward: 0.0
2026-11-09 20:08:19,778 gym                            INFO       <1210.00> === STARTING STEP ===
2026-11-09 20:08:19,778 sats.satellite.EO              INFO       <1210.00> EO: target index 29 tasked
2026-11-09 20:08:19,778 sats.satellite.EO              INFO       <1210.00> EO: Target(tgt-174) tasked for imaging
2026-11-09 20:08:19,779 sats.satellite.EO              INFO       <1210.00> EO: Target(tgt-174) window enabled: 1323.0 to 1440.8
2026-11-09 20:08:19,779 sats.satellite.EO              INFO       <1210.00> EO: setting timed terminal event at 1440.8
2026-11-09 20:08:19,799 sats.satellite.EO              INFO       <1324.00> EO: imaged Target(tgt-174)
2026-11-09 20:08:19,800 data.base                      INFO       <1324.00> Total reward: {'EO': np.float64(0.021923843651796584)}
2026-11-09 20:08:19,801 comm.communication             INFO       <1324.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,801 sats.satellite.EO              INFO       <1324.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,803 utils.orbital                  WARNING    <1324.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,804 gym                            INFO       <1324.00> Step reward: 0.021923843651796584
2026-11-09 20:08:19,804 gym                            INFO       <1324.00> === STARTING STEP ===
2026-11-09 20:08:19,804 sats.satellite.EO              INFO       <1324.00> EO: target index 23 tasked
2026-11-09 20:08:19,805 sats.satellite.EO              INFO       <1324.00> EO: Target(tgt-8239) tasked for imaging
2026-11-09 20:08:19,805 sats.satellite.EO              INFO       <1324.00> EO: Target(tgt-8239) window enabled: 1398.2 to 1492.5
2026-11-09 20:08:19,805 sats.satellite.EO              INFO       <1324.00> EO: setting timed terminal event at 1492.5
2026-11-09 20:08:19,819 sats.satellite.EO              INFO       <1399.50> EO: imaged Target(tgt-8239)
2026-11-09 20:08:19,820 data.base                      INFO       <1399.50> Total reward: {'EO': np.float64(0.14074851117678325)}
2026-11-09 20:08:19,821 comm.communication             INFO       <1399.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,821 sats.satellite.EO              INFO       <1399.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,823 utils.orbital                  WARNING    <1399.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,824 gym                            INFO       <1399.50> Step reward: 0.14074851117678325
2026-11-09 20:08:19,824 gym                            INFO       <1399.50> === STARTING STEP ===
2026-11-09 20:08:19,824 sats.satellite.EO              INFO       <1399.50> EO: target index 18 tasked
2026-11-09 20:08:19,825 sats.satellite.EO              INFO       <1399.50> EO: Target(tgt-8067) tasked for imaging
2026-11-09 20:08:19,825 sats.satellite.EO              INFO       <1399.50> EO: Target(tgt-8067) window enabled: 1483.5 to 1555.9
2026-11-09 20:08:19,825 sats.satellite.EO              INFO       <1399.50> EO: setting timed terminal event at 1555.9
2026-11-09 20:08:19,841 sats.satellite.EO              INFO       <1484.50> EO: imaged Target(tgt-8067)
2026-11-09 20:08:19,842 data.base                      INFO       <1484.50> Total reward: {}
2026-11-09 20:08:19,842 comm.communication             INFO       <1484.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,843 sats.satellite.EO              INFO       <1484.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,844 utils.orbital                  WARNING    <1484.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,846 gym                            INFO       <1484.50> Step reward: 0.0
2026-11-09 20:08:19,846 gym                            INFO       <1484.50> === STARTING STEP ===
2026-11-09 20:08:19,846 sats.satellite.EO              INFO       <1484.50> EO: target index 14 tasked
2026-11-09 20:08:19,847 sats.satellite.EO              INFO       <1484.50> EO: Target(tgt-218) tasked for imaging
2026-11-09 20:08:19,847 sats.satellite.EO              INFO       <1484.50> EO: Target(tgt-218) window enabled: 1533.3 to 1643.5
2026-11-09 20:08:19,848 sats.satellite.EO              INFO       <1484.50> EO: setting timed terminal event at 1643.5
2026-11-09 20:08:19,856 sats.satellite.EO              INFO       <1534.50> EO: imaged Target(tgt-218)
2026-11-09 20:08:19,857 data.base                      INFO       <1534.50> Total reward: {'EO': np.float64(0.19232884130827832)}
2026-11-09 20:08:19,857 comm.communication             INFO       <1534.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,858 sats.satellite.EO              INFO       <1534.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,859 utils.orbital                  WARNING    <1534.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,861 gym                            INFO       <1534.50> Step reward: 0.19232884130827832
2026-11-09 20:08:19,861 gym                            INFO       <1534.50> === STARTING STEP ===
2026-11-09 20:08:19,861 sats.satellite.EO              INFO       <1534.50> EO: target index 3 tasked
2026-11-09 20:08:19,861 sats.satellite.EO              INFO       <1534.50> EO: Target(tgt-3273) tasked for imaging
2026-11-09 20:08:19,862 sats.satellite.EO              INFO       <1534.50> EO: Target(tgt-3273) window enabled: 1497.0 to 1617.2
2026-11-09 20:08:19,862 sats.satellite.EO              INFO       <1534.50> EO: setting timed terminal event at 1617.2
2026-11-09 20:08:19,868 sats.satellite.EO              INFO       <1566.50> EO: imaged Target(tgt-3273)
2026-11-09 20:08:19,869 data.base                      INFO       <1566.50> Total reward: {}
2026-11-09 20:08:19,869 comm.communication             INFO       <1566.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,870 sats.satellite.EO              INFO       <1566.50> EO: Satellite EO requires retasking
2026-11-09 20:08:19,871 utils.orbital                  WARNING    <1566.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,872 gym                            INFO       <1566.50> Step reward: 0.0
2026-11-09 20:08:19,872 gym                            INFO       <1566.50> === STARTING STEP ===
2026-11-09 20:08:19,873 sats.satellite.EO              INFO       <1566.50> EO: target index 28 tasked
2026-11-09 20:08:19,873 sats.satellite.EO              INFO       <1566.50> EO: Target(tgt-166) tasked for imaging
2026-11-09 20:08:19,873 sats.satellite.EO              INFO       <1566.50> EO: Target(tgt-166) window enabled: 1720.0 to 1837.1
2026-11-09 20:08:19,874 sats.satellite.EO              INFO       <1566.50> EO: setting timed terminal event at 1837.1
2026-11-09 20:08:19,901 sats.satellite.EO              INFO       <1721.00> EO: imaged Target(tgt-166)
2026-11-09 20:08:19,902 data.base                      INFO       <1721.00> Total reward: {'EO': np.float64(0.021990073634635107)}
2026-11-09 20:08:19,902 comm.communication             INFO       <1721.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,903 sats.satellite.EO              INFO       <1721.00> EO: Satellite EO requires retasking
2026-11-09 20:08:19,904 utils.orbital                  WARNING    <1721.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,905 gym                            INFO       <1721.00> Step reward: 0.021990073634635107
2026-11-09 20:08:19,906 gym                            INFO       <1721.00> === STARTING STEP ===
2026-11-09 20:08:19,906 sats.satellite.EO              INFO       <1721.00> EO: target index 30 tasked
2026-11-09 20:08:19,906 sats.satellite.EO              INFO       <1721.00> EO: Target(tgt-1923) tasked for imaging
2026-11-09 20:08:19,907 sats.satellite.EO              INFO       <1721.00> EO: Target(tgt-1923) window enabled: 1951.5 to 2027.2
2026-11-09 20:08:19,907 sats.satellite.EO              INFO       <1721.00> EO: setting timed terminal event at 2027.2
2026-11-09 20:08:19,956 sim.simulator                  INFO       <2021.00> Max step duration reached
2026-11-09 20:08:19,957 data.base                      INFO       <2021.00> Total reward: {}
2026-11-09 20:08:19,958 comm.communication             INFO       <2021.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:19,959 utils.orbital                  WARNING    <2021.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:19,961 gym                            INFO       <2021.00> Step reward: 0.0
2026-11-09 20:08:19,961 gym                            INFO       <2021.00> === STARTING STEP ===
2026-11-09 20:08:19,961 sats.satellite.EO              INFO       <2021.00> EO: target index 31 tasked
2026-11-09 20:08:19,962 sats.satellite.EO              INFO       <2021.00> EO: Target(tgt-8542) tasked for imaging
2026-11-09 20:08:19,962 sats.satellite.EO              INFO       <2021.00> EO: Target(tgt-8542) window enabled: 2179.3 to 2266.8
2026-11-09 20:08:19,962 sats.satellite.EO              INFO       <2021.00> EO: setting timed terminal event at 2266.8
2026-11-09 20:08:19,999 sats.satellite.EO              INFO       <2267.00> EO: timed termination at 2266.8 for Target(tgt-8542) window
2026-11-09 20:08:20,000 data.base                      INFO       <2267.00> Total reward: {}
2026-11-09 20:08:20,001 comm.communication             INFO       <2267.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,001 sats.satellite.EO              INFO       <2267.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,003 utils.orbital                  WARNING    <2267.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,004 gym                            INFO       <2267.00> Step reward: 0.0
2026-11-09 20:08:20,004 gym                            INFO       <2267.00> === STARTING STEP ===
2026-11-09 20:08:20,004 sats.satellite.EO              INFO       <2267.00> EO: action_charge tasked for 60.0 seconds
2026-11-09 20:08:20,005 sats.satellite.EO              INFO       <2267.00> EO: setting timed terminal event at 2327.0
2026-11-09 20:08:20,015 sats.satellite.EO              INFO       <2327.00> EO: timed termination at 2327.0 for action_charge
2026-11-09 20:08:20,016 data.base                      INFO       <2327.00> Total reward: {}
2026-11-09 20:08:20,016 comm.communication             INFO       <2327.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,016 sats.satellite.EO              INFO       <2327.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,018 utils.orbital                  WARNING    <2327.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,019 gym                            INFO       <2327.00> Step reward: 0.0
2026-11-09 20:08:20,019 gym                            INFO       <2327.00> === STARTING STEP ===
2026-11-09 20:08:20,020 sats.satellite.EO              INFO       <2327.00> EO: target index 23 tasked
2026-11-09 20:08:20,020 sats.satellite.EO              INFO       <2327.00> EO: Target(tgt-1149) tasked for imaging
2026-11-09 20:08:20,021 sats.satellite.EO              INFO       <2327.00> EO: Target(tgt-1149) window enabled: 2372.8 to 2465.4
2026-11-09 20:08:20,021 sats.satellite.EO              INFO       <2327.00> EO: setting timed terminal event at 2465.4
2026-11-09 20:08:20,045 sats.satellite.EO              INFO       <2465.50> EO: timed termination at 2465.4 for Target(tgt-1149) window
2026-11-09 20:08:20,046 data.base                      INFO       <2465.50> Total reward: {}
2026-11-09 20:08:20,046 comm.communication             INFO       <2465.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,047 sats.satellite.EO              INFO       <2465.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,049 utils.orbital                  WARNING    <2465.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,050 gym                            INFO       <2465.50> Step reward: 0.0
2026-11-09 20:08:20,051 gym                            INFO       <2465.50> === STARTING STEP ===
2026-11-09 20:08:20,051 sats.satellite.EO              INFO       <2465.50> EO: target index 25 tasked
2026-11-09 20:08:20,051 sats.satellite.EO              INFO       <2465.50> EO: Target(tgt-6507) tasked for imaging
2026-11-09 20:08:20,052 sats.satellite.EO              INFO       <2465.50> EO: Target(tgt-6507) window enabled: 2580.6 to 2678.2
2026-11-09 20:08:20,052 sats.satellite.EO              INFO       <2465.50> EO: setting timed terminal event at 2678.2
2026-11-09 20:08:20,088 sats.satellite.EO              INFO       <2678.50> EO: timed termination at 2678.2 for Target(tgt-6507) window
2026-11-09 20:08:20,090 data.base                      INFO       <2678.50> Total reward: {}
2026-11-09 20:08:20,090 comm.communication             INFO       <2678.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,091 sats.satellite.EO              INFO       <2678.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,092 utils.orbital                  WARNING    <2678.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,093 gym                            INFO       <2678.50> Step reward: 0.0
2026-11-09 20:08:20,094 gym                            INFO       <2678.50> === STARTING STEP ===
2026-11-09 20:08:20,094 sats.satellite.EO              INFO       <2678.50> EO: target index 23 tasked
2026-11-09 20:08:20,094 sats.satellite.EO              INFO       <2678.50> EO: Target(tgt-9430) tasked for imaging
2026-11-09 20:08:20,095 sats.satellite.EO              INFO       <2678.50> EO: Target(tgt-9430) window enabled: 2708.9 to 2828.6
2026-11-09 20:08:20,095 sats.satellite.EO              INFO       <2678.50> EO: setting timed terminal event at 2828.6
2026-11-09 20:08:20,122 sats.satellite.EO              INFO       <2829.00> EO: timed termination at 2828.6 for Target(tgt-9430) window
2026-11-09 20:08:20,123 data.base                      INFO       <2829.00> Total reward: {}
2026-11-09 20:08:20,123 comm.communication             INFO       <2829.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,124 sats.satellite.EO              INFO       <2829.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,125 utils.orbital                  WARNING    <2829.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,127 gym                            INFO       <2829.00> Step reward: 0.0
2026-11-09 20:08:20,127 gym                            INFO       <2829.00> === STARTING STEP ===
2026-11-09 20:08:20,127 sats.satellite.EO              INFO       <2829.00> EO: target index 10 tasked
2026-11-09 20:08:20,127 sats.satellite.EO              INFO       <2829.00> EO: Target(tgt-8397) tasked for imaging
2026-11-09 20:08:20,128 sats.satellite.EO              INFO       <2829.00> EO: Target(tgt-8397) window enabled: 2859.9 to 2908.8
2026-11-09 20:08:20,128 sats.satellite.EO              INFO       <2829.00> EO: setting timed terminal event at 2908.8
2026-11-09 20:08:20,144 sats.satellite.EO              INFO       <2909.00> EO: timed termination at 2908.8 for Target(tgt-8397) window
2026-11-09 20:08:20,145 data.base                      INFO       <2909.00> Total reward: {}
2026-11-09 20:08:20,145 comm.communication             INFO       <2909.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,146 sats.satellite.EO              INFO       <2909.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,147 utils.orbital                  WARNING    <2909.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,148 gym                            INFO       <2909.00> Step reward: 0.0
2026-11-09 20:08:20,149 gym                            INFO       <2909.00> === STARTING STEP ===
2026-11-09 20:08:20,149 sats.satellite.EO              INFO       <2909.00> EO: target index 30 tasked
2026-11-09 20:08:20,149 sats.satellite.EO              INFO       <2909.00> EO: Target(tgt-6110) tasked for imaging
2026-11-09 20:08:20,150 sats.satellite.EO              INFO       <2909.00> EO: Target(tgt-6110) window enabled: 3065.9 to 3171.4
2026-11-09 20:08:20,150 sats.satellite.EO              INFO       <2909.00> EO: setting timed terminal event at 3171.4
2026-11-09 20:08:20,194 sats.satellite.EO              INFO       <3171.50> EO: timed termination at 3171.4 for Target(tgt-6110) window
2026-11-09 20:08:20,196 data.base                      INFO       <3171.50> Total reward: {}
2026-11-09 20:08:20,196 comm.communication             INFO       <3171.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,197 sats.satellite.EO              INFO       <3171.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,198 utils.orbital                  WARNING    <3171.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,199 gym                            INFO       <3171.50> Step reward: 0.0
2026-11-09 20:08:20,200 gym                            INFO       <3171.50> === STARTING STEP ===
2026-11-09 20:08:20,200 sats.satellite.EO              INFO       <3171.50> EO: target index 15 tasked
2026-11-09 20:08:20,200 sats.satellite.EO              INFO       <3171.50> EO: Target(tgt-2069) tasked for imaging
2026-11-09 20:08:20,201 sats.satellite.EO              INFO       <3171.50> EO: Target(tgt-2069) window enabled: 3274.6 to 3356.5
2026-11-09 20:08:20,201 sats.satellite.EO              INFO       <3171.50> EO: setting timed terminal event at 3356.5
2026-11-09 20:08:20,234 sats.satellite.EO              INFO       <3357.00> EO: timed termination at 3356.5 for Target(tgt-2069) window
2026-11-09 20:08:20,235 data.base                      INFO       <3357.00> Total reward: {}
2026-11-09 20:08:20,235 comm.communication             INFO       <3357.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,236 sats.satellite.EO              INFO       <3357.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,237 utils.orbital                  WARNING    <3357.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,238 gym                            INFO       <3357.00> Step reward: 0.0
2026-11-09 20:08:20,239 gym                            INFO       <3357.00> === STARTING STEP ===
2026-11-09 20:08:20,239 sats.satellite.EO              INFO       <3357.00> EO: target index 20 tasked
2026-11-09 20:08:20,239 sats.satellite.EO              INFO       <3357.00> EO: Target(tgt-7387) tasked for imaging
2026-11-09 20:08:20,240 sats.satellite.EO              INFO       <3357.00> EO: Target(tgt-7387) window enabled: 3428.0 to 3534.7
2026-11-09 20:08:20,240 sats.satellite.EO              INFO       <3357.00> EO: setting timed terminal event at 3534.7
2026-11-09 20:08:20,272 sats.satellite.EO              INFO       <3535.00> EO: timed termination at 3534.7 for Target(tgt-7387) window
2026-11-09 20:08:20,273 data.base                      INFO       <3535.00> Total reward: {}
2026-11-09 20:08:20,274 comm.communication             INFO       <3535.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,274 sats.satellite.EO              INFO       <3535.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,276 utils.orbital                  WARNING    <3535.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,277 gym                            INFO       <3535.00> Step reward: 0.0
2026-11-09 20:08:20,277 gym                            INFO       <3535.00> === STARTING STEP ===
2026-11-09 20:08:20,277 sats.satellite.EO              INFO       <3535.00> EO: target index 24 tasked
2026-11-09 20:08:20,278 sats.satellite.EO              INFO       <3535.00> EO: Target(tgt-4389) tasked for imaging
2026-11-09 20:08:20,278 sats.satellite.EO              INFO       <3535.00> EO: Target(tgt-4389) window enabled: 3599.2 to 3712.5
2026-11-09 20:08:20,279 sats.satellite.EO              INFO       <3535.00> EO: setting timed terminal event at 3712.5
2026-11-09 20:08:20,310 sats.satellite.EO              INFO       <3712.50> EO: timed termination at 3712.5 for Target(tgt-4389) window
2026-11-09 20:08:20,311 data.base                      INFO       <3712.50> Total reward: {}
2026-11-09 20:08:20,312 comm.communication             INFO       <3712.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,312 sats.satellite.EO              INFO       <3712.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,314 utils.orbital                  WARNING    <3712.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,315 gym                            INFO       <3712.50> Step reward: 0.0
2026-11-09 20:08:20,315 gym                            INFO       <3712.50> === STARTING STEP ===
2026-11-09 20:08:20,315 sats.satellite.EO              INFO       <3712.50> EO: target index 31 tasked
2026-11-09 20:08:20,316 sats.satellite.EO              INFO       <3712.50> EO: Target(tgt-1944) tasked for imaging
2026-11-09 20:08:20,316 sats.satellite.EO              INFO       <3712.50> EO: Target(tgt-1944) window enabled: 3894.9 to 3960.4
2026-11-09 20:08:20,317 sats.satellite.EO              INFO       <3712.50> EO: setting timed terminal event at 3960.4
2026-11-09 20:08:20,354 sats.satellite.EO              INFO       <3960.50> EO: timed termination at 3960.4 for Target(tgt-1944) window
2026-11-09 20:08:20,355 data.base                      INFO       <3960.50> Total reward: {}
2026-11-09 20:08:20,356 comm.communication             INFO       <3960.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,356 sats.satellite.EO              INFO       <3960.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,358 utils.orbital                  WARNING    <3960.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,359 gym                            INFO       <3960.50> Step reward: 0.0
2026-11-09 20:08:20,359 gym                            INFO       <3960.50> === STARTING STEP ===
2026-11-09 20:08:20,360 sats.satellite.EO              INFO       <3960.50> EO: target index 15 tasked
2026-11-09 20:08:20,360 sats.satellite.EO              INFO       <3960.50> EO: Target(tgt-2984) tasked for imaging
2026-11-09 20:08:20,360 sats.satellite.EO              INFO       <3960.50> EO: Target(tgt-2984) window enabled: 4024.6 to 4131.7
2026-11-09 20:08:20,360 sats.satellite.EO              INFO       <3960.50> EO: setting timed terminal event at 4131.7
2026-11-09 20:08:20,389 sats.satellite.EO              INFO       <4132.00> EO: timed termination at 4131.7 for Target(tgt-2984) window
2026-11-09 20:08:20,390 data.base                      INFO       <4132.00> Total reward: {}
2026-11-09 20:08:20,390 comm.communication             INFO       <4132.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,390 sats.satellite.EO              INFO       <4132.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,392 utils.orbital                  WARNING    <4132.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,393 gym                            INFO       <4132.00> Step reward: 0.0
2026-11-09 20:08:20,394 gym                            INFO       <4132.00> === STARTING STEP ===
2026-11-09 20:08:20,394 sats.satellite.EO              INFO       <4132.00> EO: target index 14 tasked
2026-11-09 20:08:20,394 sats.satellite.EO              INFO       <4132.00> EO: Target(tgt-4434) tasked for imaging
2026-11-09 20:08:20,394 sats.satellite.EO              INFO       <4132.00> EO: Target(tgt-4434) window enabled: 4125.3 to 4238.8
2026-11-09 20:08:20,395 sats.satellite.EO              INFO       <4132.00> EO: setting timed terminal event at 4238.8
2026-11-09 20:08:20,412 sats.satellite.EO              INFO       <4239.00> EO: timed termination at 4238.8 for Target(tgt-4434) window
2026-11-09 20:08:20,413 data.base                      INFO       <4239.00> Total reward: {}
2026-11-09 20:08:20,413 comm.communication             INFO       <4239.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,414 sats.satellite.EO              INFO       <4239.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,415 utils.orbital                  WARNING    <4239.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,416 gym                            INFO       <4239.00> Step reward: 0.0
2026-11-09 20:08:20,416 gym                            INFO       <4239.00> === STARTING STEP ===
2026-11-09 20:08:20,417 sats.satellite.EO              INFO       <4239.00> EO: target index 16 tasked
2026-11-09 20:08:20,417 sats.satellite.EO              INFO       <4239.00> EO: Target(tgt-2967) tasked for imaging
2026-11-09 20:08:20,418 sats.satellite.EO              INFO       <4239.00> EO: Target(tgt-2967) window enabled: 4241.0 to 4361.3
2026-11-09 20:08:20,418 sats.satellite.EO              INFO       <4239.00> EO: setting timed terminal event at 4361.3
2026-11-09 20:08:20,437 sats.satellite.EO              INFO       <4361.50> EO: timed termination at 4361.3 for Target(tgt-2967) window
2026-11-09 20:08:20,438 data.base                      INFO       <4361.50> Total reward: {}
2026-11-09 20:08:20,438 comm.communication             INFO       <4361.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,438 sats.satellite.EO              INFO       <4361.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,440 utils.orbital                  WARNING    <4361.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,441 gym                            INFO       <4361.50> Step reward: 0.0
2026-11-09 20:08:20,442 gym                            INFO       <4361.50> === STARTING STEP ===
2026-11-09 20:08:20,442 sats.satellite.EO              INFO       <4361.50> EO: target index 1 tasked
2026-11-09 20:08:20,442 sats.satellite.EO              INFO       <4361.50> EO: Target(tgt-7097) tasked for imaging
2026-11-09 20:08:20,443 sats.satellite.EO              INFO       <4361.50> EO: Target(tgt-7097) window enabled: 4303.6 to 4382.3
2026-11-09 20:08:20,443 sats.satellite.EO              INFO       <4361.50> EO: setting timed terminal event at 4382.3
2026-11-09 20:08:20,447 sats.satellite.EO              INFO       <4382.50> EO: timed termination at 4382.3 for Target(tgt-7097) window
2026-11-09 20:08:20,448 data.base                      INFO       <4382.50> Total reward: {}
2026-11-09 20:08:20,448 comm.communication             INFO       <4382.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,449 sats.satellite.EO              INFO       <4382.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,450 utils.orbital                  WARNING    <4382.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,451 gym                            INFO       <4382.50> Step reward: 0.0
2026-11-09 20:08:20,451 gym                            INFO       <4382.50> === STARTING STEP ===
2026-11-09 20:08:20,452 sats.satellite.EO              INFO       <4382.50> EO: target index 0 tasked
2026-11-09 20:08:20,452 sats.satellite.EO              INFO       <4382.50> EO: Target(tgt-7853) tasked for imaging
2026-11-09 20:08:20,452 sats.satellite.EO              INFO       <4382.50> EO: Target(tgt-7853) window enabled: 4272.2 to 4391.9
2026-11-09 20:08:20,453 sats.satellite.EO              INFO       <4382.50> EO: setting timed terminal event at 4391.9
2026-11-09 20:08:20,455 sats.satellite.EO              INFO       <4392.00> EO: timed termination at 4391.9 for Target(tgt-7853) window
2026-11-09 20:08:20,456 data.base                      INFO       <4392.00> Total reward: {}
2026-11-09 20:08:20,456 comm.communication             INFO       <4392.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,457 sats.satellite.EO              INFO       <4392.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,458 utils.orbital                  WARNING    <4392.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,459 gym                            INFO       <4392.00> Step reward: 0.0
2026-11-09 20:08:20,460 gym                            INFO       <4392.00> === STARTING STEP ===
2026-11-09 20:08:20,460 sats.satellite.EO              INFO       <4392.00> EO: target index 0 tasked
2026-11-09 20:08:20,460 sats.satellite.EO              INFO       <4392.00> EO: Target(tgt-2244) tasked for imaging
2026-11-09 20:08:20,461 sats.satellite.EO              INFO       <4392.00> EO: Target(tgt-2244) window enabled: 4308.9 to 4398.3
2026-11-09 20:08:20,461 sats.satellite.EO              INFO       <4392.00> EO: setting timed terminal event at 4398.3
2026-11-09 20:08:20,463 sats.satellite.EO              INFO       <4398.50> EO: timed termination at 4398.3 for Target(tgt-2244) window
2026-11-09 20:08:20,464 data.base                      INFO       <4398.50> Total reward: {}
2026-11-09 20:08:20,464 comm.communication             INFO       <4398.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,464 sats.satellite.EO              INFO       <4398.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,466 utils.orbital                  WARNING    <4398.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,467 gym                            INFO       <4398.50> Step reward: 0.0
2026-11-09 20:08:20,468 gym                            INFO       <4398.50> === STARTING STEP ===
2026-11-09 20:08:20,468 sats.satellite.EO              INFO       <4398.50> EO: target index 13 tasked
2026-11-09 20:08:20,468 sats.satellite.EO              INFO       <4398.50> EO: Target(tgt-1627) tasked for imaging
2026-11-09 20:08:20,468 sats.satellite.EO              INFO       <4398.50> EO: Target(tgt-1627) window enabled: 4362.5 to 4477.7
2026-11-09 20:08:20,469 sats.satellite.EO              INFO       <4398.50> EO: setting timed terminal event at 4477.7
2026-11-09 20:08:20,484 sats.satellite.EO              INFO       <4478.00> EO: timed termination at 4477.7 for Target(tgt-1627) window
2026-11-09 20:08:20,485 data.base                      INFO       <4478.00> Total reward: {}
2026-11-09 20:08:20,485 comm.communication             INFO       <4478.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,486 sats.satellite.EO              INFO       <4478.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,487 utils.orbital                  WARNING    <4478.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,488 gym                            INFO       <4478.00> Step reward: 0.0
2026-11-09 20:08:20,489 gym                            INFO       <4478.00> === STARTING STEP ===
2026-11-09 20:08:20,489 sats.satellite.EO              INFO       <4478.00> EO: target index 2 tasked
2026-11-09 20:08:20,489 sats.satellite.EO              INFO       <4478.00> EO: Target(tgt-2614) tasked for imaging
2026-11-09 20:08:20,490 sats.satellite.EO              INFO       <4478.00> EO: Target(tgt-2614) window enabled: 4425.0 to 4501.2
2026-11-09 20:08:20,490 sats.satellite.EO              INFO       <4478.00> EO: setting timed terminal event at 4501.2
2026-11-09 20:08:20,495 sats.satellite.EO              INFO       <4501.50> EO: timed termination at 4501.2 for Target(tgt-2614) window
2026-11-09 20:08:20,496 data.base                      INFO       <4501.50> Total reward: {}
2026-11-09 20:08:20,496 comm.communication             INFO       <4501.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,496 sats.satellite.EO              INFO       <4501.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,498 utils.orbital                  WARNING    <4501.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,499 gym                            INFO       <4501.50> Step reward: 0.0
2026-11-09 20:08:20,500 gym                            INFO       <4501.50> === STARTING STEP ===
2026-11-09 20:08:20,500 sats.satellite.EO              INFO       <4501.50> EO: target index 14 tasked
2026-11-09 20:08:20,500 sats.satellite.EO              INFO       <4501.50> EO: Target(tgt-5498) tasked for imaging
2026-11-09 20:08:20,500 sats.satellite.EO              INFO       <4501.50> EO: Target(tgt-5498) window enabled: 4495.7 to 4608.8
2026-11-09 20:08:20,501 sats.satellite.EO              INFO       <4501.50> EO: setting timed terminal event at 4608.8
2026-11-09 20:08:20,518 sats.satellite.EO              INFO       <4609.00> EO: timed termination at 4608.8 for Target(tgt-5498) window
2026-11-09 20:08:20,519 data.base                      INFO       <4609.00> Total reward: {}
2026-11-09 20:08:20,519 comm.communication             INFO       <4609.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,520 sats.satellite.EO              INFO       <4609.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,521 utils.orbital                  WARNING    <4609.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,523 gym                            INFO       <4609.00> Step reward: 0.0
2026-11-09 20:08:20,523 gym                            INFO       <4609.00> === STARTING STEP ===
2026-11-09 20:08:20,523 sats.satellite.EO              INFO       <4609.00> EO: target index 14 tasked
2026-11-09 20:08:20,523 sats.satellite.EO              INFO       <4609.00> EO: Target(tgt-4460) tasked for imaging
2026-11-09 20:08:20,524 sats.satellite.EO              INFO       <4609.00> EO: Target(tgt-4460) window enabled: 4730.4 to 4778.1
2026-11-09 20:08:20,524 sats.satellite.EO              INFO       <4609.00> EO: setting timed terminal event at 4778.1
2026-11-09 20:08:20,554 sats.satellite.EO              INFO       <4778.50> EO: timed termination at 4778.1 for Target(tgt-4460) window
2026-11-09 20:08:20,555 data.base                      INFO       <4778.50> Total reward: {}
2026-11-09 20:08:20,556 comm.communication             INFO       <4778.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,556 sats.satellite.EO              INFO       <4778.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,558 utils.orbital                  WARNING    <4778.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,559 gym                            INFO       <4778.50> Step reward: 0.0
2026-11-09 20:08:20,559 gym                            INFO       <4778.50> === STARTING STEP ===
2026-11-09 20:08:20,560 sats.satellite.EO              INFO       <4778.50> EO: target index 26 tasked
2026-11-09 20:08:20,560 sats.satellite.EO              INFO       <4778.50> EO: Target(tgt-2221) tasked for imaging
2026-11-09 20:08:20,561 sats.satellite.EO              INFO       <4778.50> EO: Target(tgt-2221) window enabled: 4858.4 to 4930.7
2026-11-09 20:08:20,561 sats.satellite.EO              INFO       <4778.50> EO: setting timed terminal event at 4930.7
2026-11-09 20:08:20,585 sats.satellite.EO              INFO       <4931.00> EO: timed termination at 4930.7 for Target(tgt-2221) window
2026-11-09 20:08:20,586 data.base                      INFO       <4931.00> Total reward: {}
2026-11-09 20:08:20,586 comm.communication             INFO       <4931.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,586 sats.satellite.EO              INFO       <4931.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,588 utils.orbital                  WARNING    <4931.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,589 gym                            INFO       <4931.00> Step reward: 0.0
2026-11-09 20:08:20,589 gym                            INFO       <4931.00> === STARTING STEP ===
2026-11-09 20:08:20,590 sats.satellite.EO              INFO       <4931.00> EO: target index 27 tasked
2026-11-09 20:08:20,590 sats.satellite.EO              INFO       <4931.00> EO: Target(tgt-7126) tasked for imaging
2026-11-09 20:08:20,591 sats.satellite.EO              INFO       <4931.00> EO: Target(tgt-7126) window enabled: 4997.4 to 5118.0
2026-11-09 20:08:20,591 sats.satellite.EO              INFO       <4931.00> EO: setting timed terminal event at 5118.0
2026-11-09 20:08:20,620 sats.satellite.EO              INFO       <5118.00> EO: timed termination at 5118.0 for Target(tgt-7126) window
2026-11-09 20:08:20,621 data.base                      INFO       <5118.00> Total reward: {}
2026-11-09 20:08:20,621 comm.communication             INFO       <5118.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,622 sats.satellite.EO              INFO       <5118.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,623 utils.orbital                  WARNING    <5118.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,625 gym                            INFO       <5118.00> Step reward: 0.0
2026-11-09 20:08:20,625 gym                            INFO       <5118.00> === STARTING STEP ===
2026-11-09 20:08:20,625 sats.satellite.EO              INFO       <5118.00> EO: target index 26 tasked
2026-11-09 20:08:20,625 sats.satellite.EO              INFO       <5118.00> EO: Target(tgt-1584) tasked for imaging
2026-11-09 20:08:20,626 sats.satellite.EO              INFO       <5118.00> EO: Target(tgt-1584) window enabled: 5326.2 to 5364.6
2026-11-09 20:08:20,626 sats.satellite.EO              INFO       <5118.00> EO: setting timed terminal event at 5364.6
2026-11-09 20:08:20,671 sats.satellite.EO              INFO       <5365.00> EO: timed termination at 5364.6 for Target(tgt-1584) window
2026-11-09 20:08:20,672 data.base                      INFO       <5365.00> Total reward: {}
2026-11-09 20:08:20,672 comm.communication             INFO       <5365.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,673 sats.satellite.EO              INFO       <5365.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,674 utils.orbital                  WARNING    <5365.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,675 gym                            INFO       <5365.00> Step reward: 0.0
2026-11-09 20:08:20,676 gym                            INFO       <5365.00> === STARTING STEP ===
2026-11-09 20:08:20,676 sats.satellite.EO              INFO       <5365.00> EO: target index 9 tasked
2026-11-09 20:08:20,676 sats.satellite.EO              INFO       <5365.00> EO: Target(tgt-1011) tasked for imaging
2026-11-09 20:08:20,677 sats.satellite.EO              INFO       <5365.00> EO: Target(tgt-1011) window enabled: 5312.4 to 5434.7
2026-11-09 20:08:20,677 sats.satellite.EO              INFO       <5365.00> EO: setting timed terminal event at 5434.7
2026-11-09 20:08:20,691 sats.satellite.EO              INFO       <5435.00> EO: timed termination at 5434.7 for Target(tgt-1011) window
2026-11-09 20:08:20,692 data.base                      INFO       <5435.00> Total reward: {}
2026-11-09 20:08:20,692 comm.communication             INFO       <5435.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,692 sats.satellite.EO              INFO       <5435.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,694 utils.orbital                  WARNING    <5435.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,695 gym                            INFO       <5435.00> Step reward: 0.0
2026-11-09 20:08:20,696 gym                            INFO       <5435.00> === STARTING STEP ===
2026-11-09 20:08:20,696 sats.satellite.EO              INFO       <5435.00> EO: target index 19 tasked
2026-11-09 20:08:20,696 sats.satellite.EO              INFO       <5435.00> EO: Target(tgt-3958) tasked for imaging
2026-11-09 20:08:20,697 sats.satellite.EO              INFO       <5435.00> EO: Target(tgt-3958) window enabled: 5517.9 to 5581.4
2026-11-09 20:08:20,697 sats.satellite.EO              INFO       <5435.00> EO: setting timed terminal event at 5581.4
2026-11-09 20:08:20,721 sats.satellite.EO              INFO       <5581.50> EO: timed termination at 5581.4 for Target(tgt-3958) window
2026-11-09 20:08:20,722 data.base                      INFO       <5581.50> Total reward: {}
2026-11-09 20:08:20,722 comm.communication             INFO       <5581.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,723 sats.satellite.EO              INFO       <5581.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,724 utils.orbital                  WARNING    <5581.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,726 gym                            INFO       <5581.50> Step reward: 0.0
2026-11-09 20:08:20,726 gym                            INFO       <5581.50> === STARTING STEP ===
2026-11-09 20:08:20,726 sats.satellite.EO              INFO       <5581.50> EO: target index 6 tasked
2026-11-09 20:08:20,727 sats.satellite.EO              INFO       <5581.50> EO: Target(tgt-1310) tasked for imaging
2026-11-09 20:08:20,727 sats.satellite.EO              INFO       <5581.50> EO: Target(tgt-1310) window enabled: 5524.9 to 5623.0
2026-11-09 20:08:20,727 sats.satellite.EO              INFO       <5581.50> EO: setting timed terminal event at 5623.0
2026-11-09 20:08:20,735 sats.satellite.EO              INFO       <5623.00> EO: timed termination at 5623.0 for Target(tgt-1310) window
2026-11-09 20:08:20,736 data.base                      INFO       <5623.00> Total reward: {}
2026-11-09 20:08:20,736 comm.communication             INFO       <5623.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,737 sats.satellite.EO              INFO       <5623.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,738 utils.orbital                  WARNING    <5623.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,739 gym                            INFO       <5623.00> Step reward: 0.0
2026-11-09 20:08:20,740 gym                            INFO       <5623.00> === STARTING STEP ===
2026-11-09 20:08:20,740 sats.satellite.EO              INFO       <5623.00> EO: target index 29 tasked
2026-11-09 20:08:20,740 sats.satellite.EO              INFO       <5623.00> EO: Target(tgt-8084) tasked for imaging
2026-11-09 20:08:20,741 sats.satellite.EO              INFO       <5623.00> EO: Target(tgt-8084) window enabled: 5733.9 to 5842.9
2026-11-09 20:08:20,741 sats.satellite.EO              INFO       <5623.00> EO: setting timed terminal event at 5842.9
2026-11-09 20:08:20,774 sats.satellite.EO              INFO       <5843.00> EO: timed termination at 5842.9 for Target(tgt-8084) window
2026-11-09 20:08:20,775 data.base                      INFO       <5843.00> Total reward: {}
2026-11-09 20:08:20,775 comm.communication             INFO       <5843.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,776 sats.satellite.EO              INFO       <5843.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,777 utils.orbital                  WARNING    <5843.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,779 gym                            INFO       <5843.00> Step reward: 0.0
2026-11-09 20:08:20,779 gym                            INFO       <5843.00> === STARTING STEP ===
2026-11-09 20:08:20,779 sats.satellite.EO              INFO       <5843.00> EO: target index 6 tasked
2026-11-09 20:08:20,780 sats.satellite.EO              INFO       <5843.00> EO: Target(tgt-8263) tasked for imaging
2026-11-09 20:08:20,780 sats.satellite.EO              INFO       <5843.00> EO: Target(tgt-8263) window enabled: 5793.6 to 5914.1
2026-11-09 20:08:20,780 sats.satellite.EO              INFO       <5843.00> EO: setting timed terminal event at 5914.1
2026-11-09 20:08:20,792 sats.satellite.EO              INFO       <5914.50> EO: timed termination at 5914.1 for Target(tgt-8263) window
2026-11-09 20:08:20,793 data.base                      INFO       <5914.50> Total reward: {}
2026-11-09 20:08:20,793 comm.communication             INFO       <5914.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,794 sats.satellite.EO              INFO       <5914.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,795 utils.orbital                  WARNING    <5914.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,797 gym                            INFO       <5914.50> Step reward: 0.0
2026-11-09 20:08:20,797 gym                            INFO       <5914.50> === STARTING STEP ===
2026-11-09 20:08:20,797 sats.satellite.EO              INFO       <5914.50> EO: target index 15 tasked
2026-11-09 20:08:20,798 sats.satellite.EO              INFO       <5914.50> EO: Target(tgt-9900) tasked for imaging
2026-11-09 20:08:20,798 sats.satellite.EO              INFO       <5914.50> EO: Target(tgt-9900) window enabled: 5868.6 to 5990.8
2026-11-09 20:08:20,798 sats.satellite.EO              INFO       <5914.50> EO: setting timed terminal event at 5990.8
2026-11-09 20:08:20,811 sats.satellite.EO              INFO       <5991.00> EO: timed termination at 5990.8 for Target(tgt-9900) window
2026-11-09 20:08:20,811 data.base                      INFO       <5991.00> Total reward: {}
2026-11-09 20:08:20,812 comm.communication             INFO       <5991.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,812 sats.satellite.EO              INFO       <5991.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,814 utils.orbital                  WARNING    <5991.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,815 gym                            INFO       <5991.00> Step reward: 0.0
2026-11-09 20:08:20,815 gym                            INFO       <5991.00> === STARTING STEP ===
2026-11-09 20:08:20,816 sats.satellite.EO              INFO       <5991.00> EO: target index 8 tasked
2026-11-09 20:08:20,816 sats.satellite.EO              INFO       <5991.00> EO: Target(tgt-8747) tasked for imaging
2026-11-09 20:08:20,817 sats.satellite.EO              INFO       <5991.00> EO: Target(tgt-8747) window enabled: 5979.4 to 6066.0
2026-11-09 20:08:20,817 sats.satellite.EO              INFO       <5991.00> EO: setting timed terminal event at 6066.0
2026-11-09 20:08:20,831 sats.satellite.EO              INFO       <6066.50> EO: timed termination at 6066.0 for Target(tgt-8747) window
2026-11-09 20:08:20,831 data.base                      INFO       <6066.50> Total reward: {}
2026-11-09 20:08:20,832 comm.communication             INFO       <6066.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,832 sats.satellite.EO              INFO       <6066.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,834 utils.orbital                  WARNING    <6066.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,835 gym                            INFO       <6066.50> Step reward: 0.0
2026-11-09 20:08:20,835 gym                            INFO       <6066.50> === STARTING STEP ===
2026-11-09 20:08:20,836 sats.satellite.EO              INFO       <6066.50> EO: target index 1 tasked
2026-11-09 20:08:20,836 sats.satellite.EO              INFO       <6066.50> EO: Target(tgt-5568) tasked for imaging
2026-11-09 20:08:20,836 sats.satellite.EO              INFO       <6066.50> EO: Target(tgt-5568) window enabled: 5981.5 to 6079.8
2026-11-09 20:08:20,836 sats.satellite.EO              INFO       <6066.50> EO: setting timed terminal event at 6079.8
2026-11-09 20:08:20,840 sats.satellite.EO              INFO       <6080.00> EO: timed termination at 6079.8 for Target(tgt-5568) window
2026-11-09 20:08:20,840 data.base                      INFO       <6080.00> Total reward: {}
2026-11-09 20:08:20,841 comm.communication             INFO       <6080.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,841 sats.satellite.EO              INFO       <6080.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,842 utils.orbital                  WARNING    <6080.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,844 gym                            INFO       <6080.00> Step reward: 0.0
2026-11-09 20:08:20,844 gym                            INFO       <6080.00> === STARTING STEP ===
2026-11-09 20:08:20,844 sats.satellite.EO              INFO       <6080.00> EO: target index 21 tasked
2026-11-09 20:08:20,845 sats.satellite.EO              INFO       <6080.00> EO: Target(tgt-6031) tasked for imaging
2026-11-09 20:08:20,845 sats.satellite.EO              INFO       <6080.00> EO: Target(tgt-6031) window enabled: 6095.9 to 6217.0
2026-11-09 20:08:20,845 sats.satellite.EO              INFO       <6080.00> EO: setting timed terminal event at 6217.0
2026-11-09 20:08:20,867 sats.satellite.EO              INFO       <6217.50> EO: timed termination at 6217.0 for Target(tgt-6031) window
2026-11-09 20:08:20,868 data.base                      INFO       <6217.50> Total reward: {}
2026-11-09 20:08:20,868 comm.communication             INFO       <6217.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,869 sats.satellite.EO              INFO       <6217.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,871 utils.orbital                  WARNING    <6217.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,872 gym                            INFO       <6217.50> Step reward: 0.0
2026-11-09 20:08:20,872 gym                            INFO       <6217.50> === STARTING STEP ===
2026-11-09 20:08:20,873 sats.satellite.EO              INFO       <6217.50> EO: target index 2 tasked
2026-11-09 20:08:20,873 sats.satellite.EO              INFO       <6217.50> EO: Target(tgt-904) tasked for imaging
2026-11-09 20:08:20,874 sats.satellite.EO              INFO       <6217.50> EO: Target(tgt-904) window enabled: 6143.1 to 6235.9
2026-11-09 20:08:20,874 sats.satellite.EO              INFO       <6217.50> EO: setting timed terminal event at 6235.9
2026-11-09 20:08:20,878 sats.satellite.EO              INFO       <6236.00> EO: timed termination at 6235.9 for Target(tgt-904) window
2026-11-09 20:08:20,879 data.base                      INFO       <6236.00> Total reward: {}
2026-11-09 20:08:20,879 comm.communication             INFO       <6236.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,879 sats.satellite.EO              INFO       <6236.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,881 utils.orbital                  WARNING    <6236.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,882 gym                            INFO       <6236.00> Step reward: 0.0
2026-11-09 20:08:20,882 gym                            INFO       <6236.00> === STARTING STEP ===
2026-11-09 20:08:20,883 sats.satellite.EO              INFO       <6236.00> EO: target index 31 tasked
2026-11-09 20:08:20,883 sats.satellite.EO              INFO       <6236.00> EO: Target(tgt-7989) tasked for imaging
2026-11-09 20:08:20,883 sats.satellite.EO              INFO       <6236.00> EO: Target(tgt-7989) window enabled: 6399.4 to 6502.2
2026-11-09 20:08:20,884 sats.satellite.EO              INFO       <6236.00> EO: setting timed terminal event at 6502.2
2026-11-09 20:08:20,925 sats.satellite.EO              INFO       <6502.50> EO: timed termination at 6502.2 for Target(tgt-7989) window
2026-11-09 20:08:20,926 data.base                      INFO       <6502.50> Total reward: {}
2026-11-09 20:08:20,927 comm.communication             INFO       <6502.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,927 sats.satellite.EO              INFO       <6502.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,929 utils.orbital                  WARNING    <6502.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,930 gym                            INFO       <6502.50> Step reward: 0.0
2026-11-09 20:08:20,931 gym                            INFO       <6502.50> === STARTING STEP ===
2026-11-09 20:08:20,931 sats.satellite.EO              INFO       <6502.50> EO: target index 6 tasked
2026-11-09 20:08:20,931 sats.satellite.EO              INFO       <6502.50> EO: Target(tgt-1168) tasked for imaging
2026-11-09 20:08:20,932 sats.satellite.EO              INFO       <6502.50> EO: Target(tgt-1168) window enabled: 6437.9 to 6532.4
2026-11-09 20:08:20,932 sats.satellite.EO              INFO       <6502.50> EO: setting timed terminal event at 6532.4
2026-11-09 20:08:20,938 sats.satellite.EO              INFO       <6532.50> EO: timed termination at 6532.4 for Target(tgt-1168) window
2026-11-09 20:08:20,938 data.base                      INFO       <6532.50> Total reward: {}
2026-11-09 20:08:20,938 comm.communication             INFO       <6532.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,939 sats.satellite.EO              INFO       <6532.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,941 utils.orbital                  WARNING    <6532.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,942 gym                            INFO       <6532.50> Step reward: 0.0
2026-11-09 20:08:20,942 gym                            INFO       <6532.50> === STARTING STEP ===
2026-11-09 20:08:20,942 sats.satellite.EO              INFO       <6532.50> EO: target index 0 tasked
2026-11-09 20:08:20,943 sats.satellite.EO              INFO       <6532.50> EO: Target(tgt-4276) tasked for imaging
2026-11-09 20:08:20,943 sats.satellite.EO              INFO       <6532.50> EO: Target(tgt-4276) window enabled: 6424.4 to 6536.6
2026-11-09 20:08:20,943 sats.satellite.EO              INFO       <6532.50> EO: setting timed terminal event at 6536.6
2026-11-09 20:08:20,945 sats.satellite.EO              INFO       <6537.00> EO: timed termination at 6536.6 for Target(tgt-4276) window
2026-11-09 20:08:20,946 data.base                      INFO       <6537.00> Total reward: {}
2026-11-09 20:08:20,946 comm.communication             INFO       <6537.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,947 sats.satellite.EO              INFO       <6537.00> EO: Satellite EO requires retasking
2026-11-09 20:08:20,948 utils.orbital                  WARNING    <6537.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,949 gym                            INFO       <6537.00> Step reward: 0.0
2026-11-09 20:08:20,950 gym                            INFO       <6537.00> === STARTING STEP ===
2026-11-09 20:08:20,950 sats.satellite.EO              INFO       <6537.00> EO: target index 13 tasked
2026-11-09 20:08:20,950 sats.satellite.EO              INFO       <6537.00> EO: Target(tgt-8840) tasked for imaging
2026-11-09 20:08:20,951 sats.satellite.EO              INFO       <6537.00> EO: Target(tgt-8840) window enabled: 6650.2 to 6703.5
2026-11-09 20:08:20,951 sats.satellite.EO              INFO       <6537.00> EO: setting timed terminal event at 6703.5
2026-11-09 20:08:20,976 sats.satellite.EO              INFO       <6703.50> EO: timed termination at 6703.5 for Target(tgt-8840) window
2026-11-09 20:08:20,978 data.base                      INFO       <6703.50> Total reward: {}
2026-11-09 20:08:20,978 comm.communication             INFO       <6703.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:20,978 sats.satellite.EO              INFO       <6703.50> EO: Satellite EO requires retasking
2026-11-09 20:08:20,980 utils.orbital                  WARNING    <6703.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:20,982 gym                            INFO       <6703.50> Step reward: 0.0
2026-11-09 20:08:20,982 gym                            INFO       <6703.50> === STARTING STEP ===
2026-11-09 20:08:20,982 sats.satellite.EO              INFO       <6703.50> EO: target index 11 tasked
2026-11-09 20:08:20,982 sats.satellite.EO              INFO       <6703.50> EO: Target(tgt-1397) tasked for imaging
2026-11-09 20:08:20,983 sats.satellite.EO              INFO       <6703.50> EO: Target(tgt-1397) window enabled: 6678.9 to 6799.0
2026-11-09 20:08:20,983 sats.satellite.EO              INFO       <6703.50> EO: setting timed terminal event at 6799.0
2026-11-09 20:08:20,999 sats.satellite.EO              INFO       <6799.00> EO: timed termination at 6799.0 for Target(tgt-1397) window
2026-11-09 20:08:21,000 data.base                      INFO       <6799.00> Total reward: {}
2026-11-09 20:08:21,000 comm.communication             INFO       <6799.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:21,001 sats.satellite.EO              INFO       <6799.00> EO: Satellite EO requires retasking
2026-11-09 20:08:21,003 utils.orbital                  WARNING    <6799.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:21,004 gym                            INFO       <6799.00> Step reward: 0.0
2026-11-09 20:08:21,004 gym                            INFO       <6799.00> === STARTING STEP ===
2026-11-09 20:08:21,004 sats.satellite.EO              INFO       <6799.00> EO: target index 22 tasked
2026-11-09 20:08:21,005 sats.satellite.EO              INFO       <6799.00> EO: Target(tgt-8021) tasked for imaging
2026-11-09 20:08:21,006 sats.satellite.EO              INFO       <6799.00> EO: Target(tgt-8021) window enabled: 6963.2 to 6983.7
2026-11-09 20:08:21,006 sats.satellite.EO              INFO       <6799.00> EO: setting timed terminal event at 6983.7
2026-11-09 20:08:21,035 sats.satellite.EO              INFO       <6984.00> EO: timed termination at 6983.7 for Target(tgt-8021) window
2026-11-09 20:08:21,037 data.base                      INFO       <6984.00> Total reward: {}
2026-11-09 20:08:21,037 comm.communication             INFO       <6984.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:21,038 sats.satellite.EO              INFO       <6984.00> EO: Satellite EO requires retasking
2026-11-09 20:08:21,039 utils.orbital                  WARNING    <6984.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:21,041 gym                            INFO       <6984.00> Step reward: 0.0
2026-11-09 20:08:21,041 gym                            INFO       <6984.00> === STARTING STEP ===
2026-11-09 20:08:21,041 sats.satellite.EO              INFO       <6984.00> EO: target index 19 tasked
2026-11-09 20:08:21,042 sats.satellite.EO              INFO       <6984.00> EO: Target(tgt-70) tasked for imaging
2026-11-09 20:08:21,042 sats.satellite.EO              INFO       <6984.00> EO: Target(tgt-70) window enabled: 7089.5 to 7174.4
2026-11-09 20:08:21,043 sats.satellite.EO              INFO       <6984.00> EO: setting timed terminal event at 7174.4
2026-11-09 20:08:21,076 sats.satellite.EO              INFO       <7174.50> EO: timed termination at 7174.4 for Target(tgt-70) window
2026-11-09 20:08:21,077 data.base                      INFO       <7174.50> Total reward: {}
2026-11-09 20:08:21,077 comm.communication             INFO       <7174.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:21,079 sats.satellite.EO              INFO       <7174.50> EO: Satellite EO requires retasking
2026-11-09 20:08:21,081 utils.orbital                  WARNING    <7174.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:21,082 gym                            INFO       <7174.50> Step reward: 0.0
2026-11-09 20:08:21,083 gym                            INFO       <7174.50> === STARTING STEP ===
2026-11-09 20:08:21,083 sats.satellite.EO              INFO       <7174.50> EO: target index 21 tasked
2026-11-09 20:08:21,083 sats.satellite.EO              INFO       <7174.50> EO: Target(tgt-552) tasked for imaging
2026-11-09 20:08:21,084 sats.satellite.EO              INFO       <7174.50> EO: Target(tgt-552) window enabled: 7231.3 to 7342.0
2026-11-09 20:08:21,084 sats.satellite.EO              INFO       <7174.50> EO: setting timed terminal event at 7342.0
2026-11-09 20:08:21,116 sats.satellite.EO              INFO       <7342.00> EO: timed termination at 7342.0 for Target(tgt-552) window
2026-11-09 20:08:21,117 data.base                      INFO       <7342.00> Total reward: {}
2026-11-09 20:08:21,117 comm.communication             INFO       <7342.00> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:21,118 sats.satellite.EO              INFO       <7342.00> EO: Satellite EO requires retasking
2026-11-09 20:08:21,120 utils.orbital                  WARNING    <7342.00> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:21,121 gym                            INFO       <7342.00> Step reward: 0.0
2026-11-09 20:08:21,121 gym                            INFO       <7342.00> === STARTING STEP ===
2026-11-09 20:08:21,121 sats.satellite.EO              INFO       <7342.00> EO: target index 21 tasked
2026-11-09 20:08:21,122 sats.satellite.EO              INFO       <7342.00> EO: Target(tgt-8273) tasked for imaging
2026-11-09 20:08:21,122 sats.satellite.EO              INFO       <7342.00> EO: Target(tgt-8273) window enabled: 7592.3 to 7624.2
2026-11-09 20:08:21,123 sats.satellite.EO              INFO       <7342.00> EO: setting timed terminal event at 7624.2
2026-11-09 20:08:21,140 sats.satellite.EO              WARNING    <7450.50> EO: failed battery_valid check
2026-11-09 20:08:21,141 data.base                      INFO       <7450.50> Total reward: {}
2026-11-09 20:08:21,142 comm.communication             INFO       <7450.50> Optimizing data communication between all pairs of satellites
2026-11-09 20:08:21,144 utils.orbital                  WARNING    <7450.50> Could not find eclipse transitions in next 12000.0 seconds
2026-11-09 20:08:21,144 gym                            INFO       <7450.50> Step reward: 0.0
2026-11-09 20:08:21,145 gym                            INFO       <7450.50> Episode terminated: True
2026-11-09 20:08:21,145 gym                            INFO       <7450.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(1.3417736547253707)}
Covered by clouds: {Target(tgt-8067), Target(tgt-3571), Target(tgt-7965), Target(tgt-6889), Target(tgt-794), Target(tgt-7091), Target(tgt-3273), Target(tgt-8473), Target(tgt-7959), Target(tgt-4293)}
Not covered by clouds: {Target(tgt-8239), Target(tgt-1315), Target(tgt-4933), Target(tgt-2470), Target(tgt-436), Target(tgt-2383), Target(tgt-174), Target(tgt-166), Target(tgt-218)}