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-09-02 14:51:08,451 gym                            INFO       Calling env.reset() to get observation space
2026-09-02 14:51:08,451 gym                            INFO       Resetting environment with seed=2237106624
2026-09-02 14:51:08,453 scene.targets                  INFO       Generating 4602 targets
2026-09-02 14:51:08,673 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-09-02 14:51:09,495 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-09-02 14:51:09,502 gym                            INFO       Resetting environment with seed=1
2026-09-02 14:51:09,504 scene.targets                  INFO       Generating 9920 targets
2026-09-02 14:51:09,698 sats.satellite.EO              INFO       <0.00> EO: Finding opportunity windows from 0.00 to 17400.00 seconds
2026-09-02 14:51:11,434 utils.orbital                  WARNING    <0.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,435 gym                            INFO       <0.00> Environment reset

It is possible to printing out the actions and observations. The composed satellite action_description returns a human-readable action map each satellite has the same action space and similar observation space.

[9]:
print("Actions:", satellites[0].action_description)
print("States:", env.unwrapped.satellites[0].observation_description, "\n")

# Using the composed satellite features also provides a human-readable state:
for satellite in env.unwrapped.satellites:
    for k, v in satellite.observation_builder.obs_dict().items():
        print(f"{k}:  {v}")
Actions: ['action_charge', 'action_image_0', 'action_image_1', 'action_image_2', 'action_image_3', 'action_image_4', 'action_image_5', 'action_image_6', 'action_image_7', 'action_image_8', 'action_image_9', 'action_image_10', 'action_image_11', 'action_image_12', 'action_image_13', 'action_image_14', 'action_image_15', 'action_image_16', 'action_image_17', 'action_image_18', 'action_image_19', 'action_image_20', 'action_image_21', 'action_image_22', 'action_image_23', 'action_image_24', 'action_image_25', 'action_image_26', 'action_image_27', 'action_image_28', 'action_image_29', 'action_image_30', 'action_image_31']
States: [np.str_('sat_props.omega_BP_P_normd[0]'), np.str_('sat_props.omega_BP_P_normd[1]'), np.str_('sat_props.omega_BP_P_normd[2]'), np.str_('sat_props.c_hat_P[0]'), np.str_('sat_props.c_hat_P[1]'), np.str_('sat_props.c_hat_P[2]'), np.str_('sat_props.r_BN_P_normd[0]'), np.str_('sat_props.r_BN_P_normd[1]'), np.str_('sat_props.r_BN_P_normd[2]'), np.str_('sat_props.v_BN_P_normd[0]'), np.str_('sat_props.v_BN_P_normd[1]'), np.str_('sat_props.v_BN_P_normd[2]'), np.str_('sat_props.battery_charge_fraction'), np.str_('sat_props.solar_angle_norm'), np.str_('ground_station.ground_station_0.opportunity_open_normd'), np.str_('ground_station.ground_station_0.opportunity_close_normd'), np.str_('eclipse[0]'), np.str_('eclipse[1]'), np.str_('target.target_0.priority'), np.str_('target.target_0.prop_1'), np.str_('target.target_0.prop_2'), np.str_('target.target_1.priority'), np.str_('target.target_1.prop_1'), np.str_('target.target_1.prop_2'), np.str_('target.target_2.priority'), np.str_('target.target_2.prop_1'), np.str_('target.target_2.prop_2'), np.str_('target.target_3.priority'), np.str_('target.target_3.prop_1'), np.str_('target.target_3.prop_2'), np.str_('target.target_4.priority'), np.str_('target.target_4.prop_1'), np.str_('target.target_4.prop_2'), np.str_('target.target_5.priority'), np.str_('target.target_5.prop_1'), np.str_('target.target_5.prop_2'), np.str_('target.target_6.priority'), np.str_('target.target_6.prop_1'), np.str_('target.target_6.prop_2'), np.str_('target.target_7.priority'), np.str_('target.target_7.prop_1'), np.str_('target.target_7.prop_2'), np.str_('target.target_8.priority'), np.str_('target.target_8.prop_1'), np.str_('target.target_8.prop_2'), np.str_('target.target_9.priority'), np.str_('target.target_9.prop_1'), np.str_('target.target_9.prop_2'), np.str_('target.target_10.priority'), np.str_('target.target_10.prop_1'), np.str_('target.target_10.prop_2'), np.str_('target.target_11.priority'), np.str_('target.target_11.prop_1'), np.str_('target.target_11.prop_2'), np.str_('target.target_12.priority'), np.str_('target.target_12.prop_1'), np.str_('target.target_12.prop_2'), np.str_('target.target_13.priority'), np.str_('target.target_13.prop_1'), np.str_('target.target_13.prop_2'), np.str_('target.target_14.priority'), np.str_('target.target_14.prop_1'), np.str_('target.target_14.prop_2'), np.str_('target.target_15.priority'), np.str_('target.target_15.prop_1'), np.str_('target.target_15.prop_2'), np.str_('target.target_16.priority'), np.str_('target.target_16.prop_1'), np.str_('target.target_16.prop_2'), np.str_('target.target_17.priority'), np.str_('target.target_17.prop_1'), np.str_('target.target_17.prop_2'), np.str_('target.target_18.priority'), np.str_('target.target_18.prop_1'), np.str_('target.target_18.prop_2'), np.str_('target.target_19.priority'), np.str_('target.target_19.prop_1'), np.str_('target.target_19.prop_2'), np.str_('target.target_20.priority'), np.str_('target.target_20.prop_1'), np.str_('target.target_20.prop_2'), np.str_('target.target_21.priority'), np.str_('target.target_21.prop_1'), np.str_('target.target_21.prop_2'), np.str_('target.target_22.priority'), np.str_('target.target_22.prop_1'), np.str_('target.target_22.prop_2'), np.str_('target.target_23.priority'), np.str_('target.target_23.prop_1'), np.str_('target.target_23.prop_2'), np.str_('target.target_24.priority'), np.str_('target.target_24.prop_1'), np.str_('target.target_24.prop_2'), np.str_('target.target_25.priority'), np.str_('target.target_25.prop_1'), np.str_('target.target_25.prop_2'), np.str_('target.target_26.priority'), np.str_('target.target_26.prop_1'), np.str_('target.target_26.prop_2'), np.str_('target.target_27.priority'), np.str_('target.target_27.prop_1'), np.str_('target.target_27.prop_2'), np.str_('target.target_28.priority'), np.str_('target.target_28.prop_1'), np.str_('target.target_28.prop_2'), np.str_('target.target_29.priority'), np.str_('target.target_29.prop_1'), np.str_('target.target_29.prop_2'), np.str_('target.target_30.priority'), np.str_('target.target_30.prop_1'), np.str_('target.target_30.prop_2'), np.str_('target.target_31.priority'), np.str_('target.target_31.prop_1'), np.str_('target.target_31.prop_2'), np.str_('time')]

sat_props:  {'omega_BP_P_normd': array([ 0.00275859, -0.00064194, -0.0038198 ]), 'c_hat_P': array([-0.92971139, -0.08402577, -0.35857551]), 'r_BN_P_normd': array([-0.86709638,  0.63816435,  0.03753885]), 'v_BN_P_normd': array([0.25160036, 0.28603904, 0.94893265]), 'battery_charge_fraction': 0.48805353449026784, 'solar_angle_norm': np.float64(0.3699294044324927)}
ground_station:  {'ground_station_0': {'opportunity_open_normd': 0.5643954203724235, 'opportunity_close_normd': 0.6302962032834142}}
eclipse:  [1.0, 1.0]
target:  {'target_0': {'priority': 0.15188087924578286, 'prop_1': np.float64(0.99621184759255), 'prop_2': 0.01994306637679705}, 'target_1': {'priority': 0.45408991725807724, 'prop_1': np.float64(0.874052642439568), 'prop_2': 0.024897489369114685}, 'target_2': {'priority': 0.9974742584612157, 'prop_1': np.float64(0.23281787763016193), 'prop_2': 0.017187270653050937}, 'target_3': {'priority': 0.6226449255263621, 'prop_1': np.float64(0.16615572477135115), 'prop_2': 0.0397428591914165}, 'target_4': {'priority': 0.64110481456894, 'prop_1': np.float64(0.43956713900862204), 'prop_2': 0.0340473472529546}, 'target_5': {'priority': 0.06188246788512386, 'prop_1': np.float64(1.0), 'prop_2': 0.04915355747465875}, 'target_6': {'priority': 0.41637743150489814, 'prop_1': np.float64(0.6414641561471661), 'prop_2': 0.03964127131943236}, 'target_7': {'priority': 0.11649443653250835, 'prop_1': np.float64(1.0), 'prop_2': 0.030915002844493736}, 'target_8': {'priority': 0.024073691044198653, 'prop_1': np.float64(0.7824145445337269), 'prop_2': 0.012737288328598622}, 'target_9': {'priority': 0.9837855541915604, 'prop_1': np.float64(0.5999478704231446), 'prop_2': 0.041158164826759686}, 'target_10': {'priority': 0.5006195729230891, 'prop_1': np.float64(0.33257922871550927), 'prop_2': 0.030972496793019902}, 'target_11': {'priority': 0.9818994020158649, 'prop_1': np.float64(0.2795779616797209), 'prop_2': 0.014305523848347735}, 'target_12': {'priority': 0.34420130779211366, 'prop_1': np.float64(0.9921866170914561), 'prop_2': 0.025988506848865646}, 'target_13': {'priority': 0.03597928584932897, 'prop_1': np.float64(0.25849229848356386), 'prop_2': 0.02508709527630866}, 'target_14': {'priority': 0.6106826298238791, 'prop_1': np.float64(0.4331358500437723), 'prop_2': 0.04619760042322715}, 'target_15': {'priority': 0.6172276417522594, 'prop_1': np.float64(0.6040285964715363), 'prop_2': 0.021453269167399543}, 'target_16': {'priority': 0.4059609797467638, 'prop_1': np.float64(0.3150991123390838), 'prop_2': 0.026283028618400962}, 'target_17': {'priority': 0.618930423097489, 'prop_1': np.float64(0.26503065014605437), 'prop_2': 0.03970130222062493}, 'target_18': {'priority': 0.4534325175961308, 'prop_1': np.float64(0.1726335068120615), 'prop_2': 0.019029710522383173}, 'target_19': {'priority': 0.2191222392982266, 'prop_1': np.float64(0.6471546794019115), 'prop_2': 0.02363442279473462}, 'target_20': {'priority': 0.0012690216963487932, 'prop_1': np.float64(0.34316798721006386), 'prop_2': 0.024782907724775677}, 'target_21': {'priority': 0.8729048676586963, 'prop_1': np.float64(1.0), 'prop_2': 0.03974937121258252}, 'target_22': {'priority': 0.8112195342113623, 'prop_1': np.float64(1.0), 'prop_2': 0.044297123184459865}, 'target_23': {'priority': 0.7330033732927641, 'prop_1': np.float64(0.527906413489412), 'prop_2': 0.029396772692939825}, 'target_24': {'priority': 0.9621731191427757, 'prop_1': np.float64(1.0), 'prop_2': 0.020288225732818424}, 'target_25': {'priority': 0.9058084167065523, 'prop_1': np.float64(0.3745867778323258), 'prop_2': 0.04866955536519839}, 'target_26': {'priority': 0.7199403969458167, 'prop_1': np.float64(0.45615182138411925), 'prop_2': 0.04409986297714217}, 'target_27': {'priority': 0.0231224939829332, 'prop_1': np.float64(0.42635750848590165), 'prop_2': 0.03331115189104554}, 'target_28': {'priority': 0.8601729369162051, 'prop_1': np.float64(0.9538964971620012), 'prop_2': 0.03781681927036095}, 'target_29': {'priority': 0.0494800239061014, 'prop_1': np.float64(0.2245229655462288), 'prop_2': 0.012364549909917715}, 'target_30': {'priority': 0.19971974218805755, 'prop_1': np.float64(0.08501284636907142), 'prop_2': 0.030059267434030895}, 'target_31': {'priority': 0.9689104709978394, 'prop_1': np.float64(0.9468153199274215), 'prop_2': 0.02370500523690022}}
time:  0.0

Then, run the simulation until timeout or agent failure.

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

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

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

    if terminated or truncated:
        print("Episode complete.")
        break
2026-09-02 14:51:11,448 gym                            INFO       <0.00> === STARTING STEP ===
2026-09-02 14:51:11,449 sats.satellite.EO              INFO       <0.00> EO: action_charge tasked for 60.0 seconds
2026-09-02 14:51:11,449 sats.satellite.EO              INFO       <0.00> EO: setting timed terminal event at 60.0
2026-09-02 14:51:11,457 sats.satellite.EO              INFO       <60.00> EO: timed termination at 60.0 for action_charge
2026-09-02 14:51:11,459 data.base                      INFO       <60.00> Total reward: {}
2026-09-02 14:51:11,459 comm.communication             INFO       <60.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,460 sats.satellite.EO              INFO       <60.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,462 utils.orbital                  WARNING    <60.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,464 gym                            INFO       <60.00> Step reward: 0.0
2026-09-02 14:51:11,465 gym                            INFO       <60.00> === STARTING STEP ===
2026-09-02 14:51:11,466 sats.satellite.EO              WARNING    <60.00> EO: Requires retasking but received no task.
2026-09-02 14:51:11,496 sim.simulator                  INFO       <360.00> Max step duration reached
2026-09-02 14:51:11,497 data.base                      INFO       <360.00> Total reward: {}
2026-09-02 14:51:11,497 comm.communication             INFO       <360.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,498 sats.satellite.EO              INFO       <360.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,501 utils.orbital                  WARNING    <360.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,503 gym                            INFO       <360.00> Step reward: 0.0
2026-09-02 14:51:11,503 gym                            INFO       <360.00> === STARTING STEP ===
2026-09-02 14:51:11,503 sats.satellite.EO              INFO       <360.00> EO: target index 0 tasked
2026-09-02 14:51:11,504 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) tasked for imaging
2026-09-02 14:51:11,505 sats.satellite.EO              INFO       <360.00> EO: Target(tgt-7918) window enabled: 256.2 to 377.2
2026-09-02 14:51:11,505 sats.satellite.EO              INFO       <360.00> EO: setting timed terminal event at 377.2
2026-09-02 14:51:11,511 sats.satellite.EO              INFO       <377.50> EO: timed termination at 377.2 for Target(tgt-7918) window
2026-09-02 14:51:11,512 data.base                      INFO       <377.50> Total reward: {}
2026-09-02 14:51:11,512 comm.communication             INFO       <377.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,513 sats.satellite.EO              INFO       <377.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,515 utils.orbital                  WARNING    <377.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,517 gym                            INFO       <377.50> Step reward: 0.0
2026-09-02 14:51:11,517 gym                            INFO       <377.50> === STARTING STEP ===
2026-09-02 14:51:11,518 sats.satellite.EO              INFO       <377.50> EO: target index 24 tasked
2026-09-02 14:51:11,518 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-3644) tasked for imaging
2026-09-02 14:51:11,519 sats.satellite.EO              INFO       <377.50> EO: Target(tgt-3644) window enabled: 510.3 to 581.5
2026-09-02 14:51:11,520 sats.satellite.EO              INFO       <377.50> EO: setting timed terminal event at 581.5
2026-09-02 14:51:11,559 sats.satellite.EO              INFO       <511.50> EO: imaged Target(tgt-3644)
2026-09-02 14:51:11,560 data.base                      INFO       <511.50> Total reward: {}
2026-09-02 14:51:11,561 comm.communication             INFO       <511.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,562 sats.satellite.EO              INFO       <511.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,564 utils.orbital                  WARNING    <511.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,566 gym                            INFO       <511.50> Step reward: 0.0
2026-09-02 14:51:11,567 gym                            INFO       <511.50> === STARTING STEP ===
2026-09-02 14:51:11,567 sats.satellite.EO              INFO       <511.50> EO: target index 15 tasked
2026-09-02 14:51:11,567 sats.satellite.EO              INFO       <511.50> EO: Target(tgt-4293) tasked for imaging
2026-09-02 14:51:11,569 sats.satellite.EO              INFO       <511.50> EO: Target(tgt-4293) window enabled: 519.6 to 608.4
2026-09-02 14:51:11,569 sats.satellite.EO              INFO       <511.50> EO: setting timed terminal event at 608.4
2026-09-02 14:51:11,575 sats.satellite.EO              INFO       <528.50> EO: imaged Target(tgt-4293)
2026-09-02 14:51:11,576 data.base                      INFO       <528.50> Total reward: {}
2026-09-02 14:51:11,577 comm.communication             INFO       <528.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,577 sats.satellite.EO              INFO       <528.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,579 utils.orbital                  WARNING    <528.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,581 gym                            INFO       <528.50> Step reward: 0.0
2026-09-02 14:51:11,582 gym                            INFO       <528.50> === STARTING STEP ===
2026-09-02 14:51:11,583 sats.satellite.EO              INFO       <528.50> EO: target index 3 tasked
2026-09-02 14:51:11,583 sats.satellite.EO              INFO       <528.50> EO: Target(tgt-8899) tasked for imaging
2026-09-02 14:51:11,584 sats.satellite.EO              INFO       <528.50> EO: Target(tgt-8899) window enabled: 427.1 to 549.2
2026-09-02 14:51:11,584 sats.satellite.EO              INFO       <528.50> EO: setting timed terminal event at 549.2
2026-09-02 14:51:11,592 sats.satellite.EO              INFO       <549.50> EO: timed termination at 549.2 for Target(tgt-8899) window
2026-09-02 14:51:11,593 data.base                      INFO       <549.50> Total reward: {}
2026-09-02 14:51:11,593 comm.communication             INFO       <549.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,594 sats.satellite.EO              INFO       <549.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,596 utils.orbital                  WARNING    <549.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,598 gym                            INFO       <549.50> Step reward: 0.0
2026-09-02 14:51:11,598 gym                            INFO       <549.50> === STARTING STEP ===
2026-09-02 14:51:11,599 sats.satellite.EO              INFO       <549.50> EO: target index 30 tasked
2026-09-02 14:51:11,599 sats.satellite.EO              INFO       <549.50> EO: Target(tgt-6591) tasked for imaging
2026-09-02 14:51:11,600 sats.satellite.EO              INFO       <549.50> EO: Target(tgt-6591) window enabled: 683.6 to 772.5
2026-09-02 14:51:11,601 sats.satellite.EO              INFO       <549.50> EO: setting timed terminal event at 772.5
2026-09-02 14:51:11,640 sats.satellite.EO              INFO       <685.00> EO: imaged Target(tgt-6591)
2026-09-02 14:51:11,641 data.base                      INFO       <685.00> Total reward: {}
2026-09-02 14:51:11,642 comm.communication             INFO       <685.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,643 sats.satellite.EO              INFO       <685.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,645 utils.orbital                  WARNING    <685.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,647 gym                            INFO       <685.00> Step reward: 0.0
2026-09-02 14:51:11,648 gym                            INFO       <685.00> === STARTING STEP ===
2026-09-02 14:51:11,648 sats.satellite.EO              INFO       <685.00> EO: target index 7 tasked
2026-09-02 14:51:11,648 sats.satellite.EO              INFO       <685.00> EO: Target(tgt-9831) tasked for imaging
2026-09-02 14:51:11,649 sats.satellite.EO              INFO       <685.00> EO: Target(tgt-9831) window enabled: 637.5 to 751.4
2026-09-02 14:51:11,650 sats.satellite.EO              INFO       <685.00> EO: setting timed terminal event at 751.4
2026-09-02 14:51:11,657 sats.satellite.EO              INFO       <711.50> EO: imaged Target(tgt-9831)
2026-09-02 14:51:11,658 data.base                      INFO       <711.50> Total reward: {}
2026-09-02 14:51:11,658 comm.communication             INFO       <711.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,659 sats.satellite.EO              INFO       <711.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,661 utils.orbital                  WARNING    <711.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,663 gym                            INFO       <711.50> Step reward: 0.0
2026-09-02 14:51:11,663 gym                            INFO       <711.50> === STARTING STEP ===
2026-09-02 14:51:11,664 sats.satellite.EO              INFO       <711.50> EO: target index 27 tasked
2026-09-02 14:51:11,664 sats.satellite.EO              INFO       <711.50> EO: Target(tgt-6530) tasked for imaging
2026-09-02 14:51:11,665 sats.satellite.EO              INFO       <711.50> EO: Target(tgt-6530) window enabled: 840.4 to 956.2
2026-09-02 14:51:11,665 sats.satellite.EO              INFO       <711.50> EO: setting timed terminal event at 956.2
2026-09-02 14:51:11,695 sats.satellite.EO              INFO       <841.50> EO: imaged Target(tgt-6530)
2026-09-02 14:51:11,697 data.base                      INFO       <841.50> Total reward: {'EO': np.float64(0.18803631818136546)}
2026-09-02 14:51:11,697 comm.communication             INFO       <841.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,698 sats.satellite.EO              INFO       <841.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,700 utils.orbital                  WARNING    <841.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,702 gym                            INFO       <841.50> Step reward: 0.18803631818136546
2026-09-02 14:51:11,703 gym                            INFO       <841.50> === STARTING STEP ===
2026-09-02 14:51:11,703 sats.satellite.EO              INFO       <841.50> EO: target index 13 tasked
2026-09-02 14:51:11,704 sats.satellite.EO              INFO       <841.50> EO: Target(tgt-6054) tasked for imaging
2026-09-02 14:51:11,704 sats.satellite.EO              INFO       <841.50> EO: Target(tgt-6054) window enabled: 870.6 to 991.3
2026-09-02 14:51:11,705 sats.satellite.EO              INFO       <841.50> EO: setting timed terminal event at 991.3
2026-09-02 14:51:11,713 sats.satellite.EO              INFO       <872.00> EO: imaged Target(tgt-6054)
2026-09-02 14:51:11,714 data.base                      INFO       <872.00> Total reward: {'EO': np.float64(0.2308835475704117)}
2026-09-02 14:51:11,715 comm.communication             INFO       <872.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,715 sats.satellite.EO              INFO       <872.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,717 utils.orbital                  WARNING    <872.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,719 gym                            INFO       <872.00> Step reward: 0.2308835475704117
2026-09-02 14:51:11,720 gym                            INFO       <872.00> === STARTING STEP ===
2026-09-02 14:51:11,720 sats.satellite.EO              INFO       <872.00> EO: target index 14 tasked
2026-09-02 14:51:11,721 sats.satellite.EO              INFO       <872.00> EO: Target(tgt-4774) tasked for imaging
2026-09-02 14:51:11,722 sats.satellite.EO              INFO       <872.00> EO: Target(tgt-4774) window enabled: 903.9 to 1024.8
2026-09-02 14:51:11,722 sats.satellite.EO              INFO       <872.00> EO: setting timed terminal event at 1024.8
2026-09-02 14:51:11,731 sats.satellite.EO              INFO       <905.00> EO: imaged Target(tgt-4774)
2026-09-02 14:51:11,732 data.base                      INFO       <905.00> Total reward: {'EO': np.float64(0.48582537334624454)}
2026-09-02 14:51:11,732 comm.communication             INFO       <905.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,733 sats.satellite.EO              INFO       <905.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,735 utils.orbital                  WARNING    <905.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,737 gym                            INFO       <905.00> Step reward: 0.48582537334624454
2026-09-02 14:51:11,737 gym                            INFO       <905.00> === STARTING STEP ===
2026-09-02 14:51:11,738 sats.satellite.EO              INFO       <905.00> EO: target index 31 tasked
2026-09-02 14:51:11,738 sats.satellite.EO              INFO       <905.00> EO: Target(tgt-4212) tasked for imaging
2026-09-02 14:51:11,739 sats.satellite.EO              INFO       <905.00> EO: Target(tgt-4212) window enabled: 1146.1 to 1210.7
2026-09-02 14:51:11,739 sats.satellite.EO              INFO       <905.00> EO: setting timed terminal event at 1210.7
2026-09-02 14:51:11,792 sats.satellite.EO              INFO       <1147.50> EO: imaged Target(tgt-4212)
2026-09-02 14:51:11,793 data.base                      INFO       <1147.50> Total reward: {}
2026-09-02 14:51:11,794 comm.communication             INFO       <1147.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,794 sats.satellite.EO              INFO       <1147.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,797 utils.orbital                  WARNING    <1147.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,799 gym                            INFO       <1147.50> Step reward: 0.0
2026-09-02 14:51:11,799 gym                            INFO       <1147.50> === STARTING STEP ===
2026-09-02 14:51:11,800 sats.satellite.EO              INFO       <1147.50> EO: target index 26 tasked
2026-09-02 14:51:11,800 sats.satellite.EO              INFO       <1147.50> EO: Target(tgt-7842) tasked for imaging
2026-09-02 14:51:11,801 sats.satellite.EO              INFO       <1147.50> EO: Target(tgt-7842) window enabled: 1338.8 to 1349.9
2026-09-02 14:51:11,802 sats.satellite.EO              INFO       <1147.50> EO: setting timed terminal event at 1349.9
2026-09-02 14:51:11,843 sats.satellite.EO              INFO       <1340.00> EO: imaged Target(tgt-7842)
2026-09-02 14:51:11,844 data.base                      INFO       <1340.00> Total reward: {}
2026-09-02 14:51:11,845 comm.communication             INFO       <1340.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,846 sats.satellite.EO              INFO       <1340.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,848 utils.orbital                  WARNING    <1340.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,850 gym                            INFO       <1340.00> Step reward: 0.0
2026-09-02 14:51:11,851 gym                            INFO       <1340.00> === STARTING STEP ===
2026-09-02 14:51:11,851 sats.satellite.EO              INFO       <1340.00> EO: target index 26 tasked
2026-09-02 14:51:11,852 sats.satellite.EO              INFO       <1340.00> EO: Target(tgt-8067) tasked for imaging
2026-09-02 14:51:11,853 sats.satellite.EO              INFO       <1340.00> EO: Target(tgt-8067) window enabled: 1483.5 to 1555.9
2026-09-02 14:51:11,853 sats.satellite.EO              INFO       <1340.00> EO: setting timed terminal event at 1555.9
2026-09-02 14:51:11,891 sats.satellite.EO              INFO       <1484.50> EO: imaged Target(tgt-8067)
2026-09-02 14:51:11,893 data.base                      INFO       <1484.50> Total reward: {}
2026-09-02 14:51:11,893 comm.communication             INFO       <1484.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,895 sats.satellite.EO              INFO       <1484.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,897 utils.orbital                  WARNING    <1484.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,899 gym                            INFO       <1484.50> Step reward: 0.0
2026-09-02 14:51:11,899 gym                            INFO       <1484.50> === STARTING STEP ===
2026-09-02 14:51:11,900 sats.satellite.EO              INFO       <1484.50> EO: target index 16 tasked
2026-09-02 14:51:11,900 sats.satellite.EO              INFO       <1484.50> EO: Target(tgt-5097) tasked for imaging
2026-09-02 14:51:11,901 sats.satellite.EO              INFO       <1484.50> EO: Target(tgt-5097) window enabled: 1640.3 to 1649.1
2026-09-02 14:51:11,901 sats.satellite.EO              INFO       <1484.50> EO: setting timed terminal event at 1649.1
2026-09-02 14:51:11,947 sats.satellite.EO              INFO       <1641.50> EO: imaged Target(tgt-5097)
2026-09-02 14:51:11,949 data.base                      INFO       <1641.50> Total reward: {}
2026-09-02 14:51:11,949 comm.communication             INFO       <1641.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,950 sats.satellite.EO              INFO       <1641.50> EO: Satellite EO requires retasking
2026-09-02 14:51:11,952 utils.orbital                  WARNING    <1641.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,954 gym                            INFO       <1641.50> Step reward: 0.0
2026-09-02 14:51:11,954 gym                            INFO       <1641.50> === STARTING STEP ===
2026-09-02 14:51:11,955 sats.satellite.EO              INFO       <1641.50> EO: target index 12 tasked
2026-09-02 14:51:11,955 sats.satellite.EO              INFO       <1641.50> EO: Target(tgt-3948) tasked for imaging
2026-09-02 14:51:11,956 sats.satellite.EO              INFO       <1641.50> EO: Target(tgt-3948) window enabled: 1635.7 to 1749.7
2026-09-02 14:51:11,956 sats.satellite.EO              INFO       <1641.50> EO: setting timed terminal event at 1749.7
2026-09-02 14:51:11,965 sats.satellite.EO              INFO       <1676.00> EO: imaged Target(tgt-3948)
2026-09-02 14:51:11,966 data.base                      INFO       <1676.00> Total reward: {}
2026-09-02 14:51:11,967 comm.communication             INFO       <1676.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:11,967 sats.satellite.EO              INFO       <1676.00> EO: Satellite EO requires retasking
2026-09-02 14:51:11,970 utils.orbital                  WARNING    <1676.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:11,972 gym                            INFO       <1676.00> Step reward: 0.0
2026-09-02 14:51:11,972 gym                            INFO       <1676.00> === STARTING STEP ===
2026-09-02 14:51:11,973 sats.satellite.EO              INFO       <1676.00> EO: target index 28 tasked
2026-09-02 14:51:11,973 sats.satellite.EO              INFO       <1676.00> EO: Target(tgt-8335) tasked for imaging
2026-09-02 14:51:11,974 sats.satellite.EO              INFO       <1676.00> EO: Target(tgt-8335) window enabled: 1839.9 to 1947.0
2026-09-02 14:51:11,975 sats.satellite.EO              INFO       <1676.00> EO: setting timed terminal event at 1947.0
2026-09-02 14:51:12,010 sats.satellite.EO              INFO       <1841.00> EO: imaged Target(tgt-8335)
2026-09-02 14:51:12,011 data.base                      INFO       <1841.00> Total reward: {}
2026-09-02 14:51:12,012 comm.communication             INFO       <1841.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,013 sats.satellite.EO              INFO       <1841.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,015 utils.orbital                  WARNING    <1841.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,017 gym                            INFO       <1841.00> Step reward: 0.0
2026-09-02 14:51:12,017 gym                            INFO       <1841.00> === STARTING STEP ===
2026-09-02 14:51:12,018 sats.satellite.EO              INFO       <1841.00> EO: target index 8 tasked
2026-09-02 14:51:12,018 sats.satellite.EO              INFO       <1841.00> EO: Target(tgt-2545) tasked for imaging
2026-09-02 14:51:12,019 sats.satellite.EO              INFO       <1841.00> EO: Target(tgt-2545) window enabled: 1867.9 to 1934.6
2026-09-02 14:51:12,019 sats.satellite.EO              INFO       <1841.00> EO: setting timed terminal event at 1934.6
2026-09-02 14:51:12,030 sats.satellite.EO              INFO       <1884.00> EO: imaged Target(tgt-2545)
2026-09-02 14:51:12,031 data.base                      INFO       <1884.00> Total reward: {'EO': np.float64(0.5468069287153451)}
2026-09-02 14:51:12,032 comm.communication             INFO       <1884.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,033 sats.satellite.EO              INFO       <1884.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,035 utils.orbital                  WARNING    <1884.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,036 gym                            INFO       <1884.00> Step reward: 0.5468069287153451
2026-09-02 14:51:12,037 gym                            INFO       <1884.00> === STARTING STEP ===
2026-09-02 14:51:12,037 sats.satellite.EO              INFO       <1884.00> EO: target index 27 tasked
2026-09-02 14:51:12,037 sats.satellite.EO              INFO       <1884.00> EO: Target(tgt-186) tasked for imaging
2026-09-02 14:51:12,038 sats.satellite.EO              INFO       <1884.00> EO: Target(tgt-186) window enabled: 2180.1 to 2194.7
2026-09-02 14:51:12,038 sats.satellite.EO              INFO       <1884.00> EO: setting timed terminal event at 2194.7
2026-09-02 14:51:12,124 sats.satellite.EO              INFO       <2181.50> EO: imaged Target(tgt-186)
2026-09-02 14:51:12,125 data.base                      INFO       <2181.50> Total reward: {'EO': np.float64(0.006628217489164302)}
2026-09-02 14:51:12,126 comm.communication             INFO       <2181.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,126 sats.satellite.EO              INFO       <2181.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,128 utils.orbital                  WARNING    <2181.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,130 gym                            INFO       <2181.50> Step reward: 0.006628217489164302
2026-09-02 14:51:12,131 gym                            INFO       <2181.50> === STARTING STEP ===
2026-09-02 14:51:12,131 sats.satellite.EO              INFO       <2181.50> EO: target index 25 tasked
2026-09-02 14:51:12,132 sats.satellite.EO              INFO       <2181.50> EO: Target(tgt-3226) tasked for imaging
2026-09-02 14:51:12,133 sats.satellite.EO              INFO       <2181.50> EO: Target(tgt-3226) window enabled: 2225.1 to 2335.3
2026-09-02 14:51:12,133 sats.satellite.EO              INFO       <2181.50> EO: setting timed terminal event at 2335.3
2026-09-02 14:51:12,144 sats.satellite.EO              INFO       <2226.50> EO: imaged Target(tgt-3226)
2026-09-02 14:51:12,145 data.base                      INFO       <2226.50> Total reward: {'EO': np.float64(0.457137629765038)}
2026-09-02 14:51:12,146 comm.communication             INFO       <2226.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,147 sats.satellite.EO              INFO       <2226.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,149 utils.orbital                  WARNING    <2226.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,151 gym                            INFO       <2226.50> Step reward: 0.457137629765038
2026-09-02 14:51:12,151 gym                            INFO       <2226.50> === STARTING STEP ===
2026-09-02 14:51:12,151 sats.satellite.EO              INFO       <2226.50> EO: target index 31 tasked
2026-09-02 14:51:12,152 sats.satellite.EO              INFO       <2226.50> EO: Target(tgt-9452) tasked for imaging
2026-09-02 14:51:12,153 sats.satellite.EO              INFO       <2226.50> EO: Target(tgt-9452) window enabled: 2398.2 to 2435.2
2026-09-02 14:51:12,153 sats.satellite.EO              INFO       <2226.50> EO: setting timed terminal event at 2435.2
2026-09-02 14:51:12,191 sats.satellite.EO              INFO       <2399.50> EO: imaged Target(tgt-9452)
2026-09-02 14:51:12,192 data.base                      INFO       <2399.50> Total reward: {'EO': np.float64(0.895967532933986)}
2026-09-02 14:51:12,193 comm.communication             INFO       <2399.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,193 sats.satellite.EO              INFO       <2399.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,195 utils.orbital                  WARNING    <2399.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,197 gym                            INFO       <2399.50> Step reward: 0.895967532933986
2026-09-02 14:51:12,198 gym                            INFO       <2399.50> === STARTING STEP ===
2026-09-02 14:51:12,198 sats.satellite.EO              INFO       <2399.50> EO: target index 28 tasked
2026-09-02 14:51:12,198 sats.satellite.EO              INFO       <2399.50> EO: Target(tgt-9629) tasked for imaging
2026-09-02 14:51:12,199 sats.satellite.EO              INFO       <2399.50> EO: Target(tgt-9629) window enabled: 2494.2 to 2591.8
2026-09-02 14:51:12,199 sats.satellite.EO              INFO       <2399.50> EO: setting timed terminal event at 2591.8
2026-09-02 14:51:12,228 sats.satellite.EO              INFO       <2495.50> EO: imaged Target(tgt-9629)
2026-09-02 14:51:12,229 data.base                      INFO       <2495.50> Total reward: {'EO': np.float64(0.7514519670814692)}
2026-09-02 14:51:12,230 comm.communication             INFO       <2495.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,231 sats.satellite.EO              INFO       <2495.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,233 utils.orbital                  WARNING    <2495.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,235 gym                            INFO       <2495.50> Step reward: 0.7514519670814692
2026-09-02 14:51:12,235 gym                            INFO       <2495.50> === STARTING STEP ===
2026-09-02 14:51:12,236 sats.satellite.EO              INFO       <2495.50> EO: target index 2 tasked
2026-09-02 14:51:12,236 sats.satellite.EO              INFO       <2495.50> EO: Target(tgt-6735) tasked for imaging
2026-09-02 14:51:12,237 sats.satellite.EO              INFO       <2495.50> EO: Target(tgt-6735) window enabled: 2404.7 to 2525.1
2026-09-02 14:51:12,238 sats.satellite.EO              INFO       <2495.50> EO: setting timed terminal event at 2525.1
2026-09-02 14:51:12,245 sats.satellite.EO              INFO       <2525.50> EO: timed termination at 2525.1 for Target(tgt-6735) window
2026-09-02 14:51:12,247 data.base                      INFO       <2525.50> Total reward: {}
2026-09-02 14:51:12,247 comm.communication             INFO       <2525.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,248 sats.satellite.EO              INFO       <2525.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,250 utils.orbital                  WARNING    <2525.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,252 gym                            INFO       <2525.50> Step reward: 0.0
2026-09-02 14:51:12,253 gym                            INFO       <2525.50> === STARTING STEP ===
2026-09-02 14:51:12,253 sats.satellite.EO              INFO       <2525.50> EO: target index 15 tasked
2026-09-02 14:51:12,253 sats.satellite.EO              INFO       <2525.50> EO: Target(tgt-9131) tasked for imaging
2026-09-02 14:51:12,254 sats.satellite.EO              INFO       <2525.50> EO: Target(tgt-9131) window enabled: 2610.7 to 2645.7
2026-09-02 14:51:12,255 sats.satellite.EO              INFO       <2525.50> EO: setting timed terminal event at 2645.7
2026-09-02 14:51:12,274 sats.satellite.EO              INFO       <2612.00> EO: imaged Target(tgt-9131)
2026-09-02 14:51:12,275 data.base                      INFO       <2612.00> Total reward: {'EO': np.float64(0.38879530062011813)}
2026-09-02 14:51:12,276 comm.communication             INFO       <2612.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,277 sats.satellite.EO              INFO       <2612.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,279 utils.orbital                  WARNING    <2612.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,281 gym                            INFO       <2612.00> Step reward: 0.38879530062011813
2026-09-02 14:51:12,281 gym                            INFO       <2612.00> === STARTING STEP ===
2026-09-02 14:51:12,281 sats.satellite.EO              INFO       <2612.00> EO: target index 24 tasked
2026-09-02 14:51:12,282 sats.satellite.EO              INFO       <2612.00> EO: Target(tgt-4977) tasked for imaging
2026-09-02 14:51:12,283 sats.satellite.EO              INFO       <2612.00> EO: Target(tgt-4977) window enabled: 2726.3 to 2823.7
2026-09-02 14:51:12,283 sats.satellite.EO              INFO       <2612.00> EO: setting timed terminal event at 2823.7
2026-09-02 14:51:12,339 sats.satellite.EO              INFO       <2824.00> EO: timed termination at 2823.7 for Target(tgt-4977) window
2026-09-02 14:51:12,340 data.base                      INFO       <2824.00> Total reward: {}
2026-09-02 14:51:12,340 comm.communication             INFO       <2824.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,341 sats.satellite.EO              INFO       <2824.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,343 utils.orbital                  WARNING    <2824.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,345 gym                            INFO       <2824.00> Step reward: 0.0
2026-09-02 14:51:12,346 gym                            INFO       <2824.00> === STARTING STEP ===
2026-09-02 14:51:12,346 sats.satellite.EO              INFO       <2824.00> EO: target index 16 tasked
2026-09-02 14:51:12,346 sats.satellite.EO              INFO       <2824.00> EO: Target(tgt-6148) tasked for imaging
2026-09-02 14:51:12,347 sats.satellite.EO              INFO       <2824.00> EO: Target(tgt-6148) window enabled: 2830.8 to 2949.2
2026-09-02 14:51:12,348 sats.satellite.EO              INFO       <2824.00> EO: setting timed terminal event at 2949.2
2026-09-02 14:51:12,375 sats.satellite.EO              INFO       <2949.50> EO: timed termination at 2949.2 for Target(tgt-6148) window
2026-09-02 14:51:12,376 data.base                      INFO       <2949.50> Total reward: {}
2026-09-02 14:51:12,377 comm.communication             INFO       <2949.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,378 sats.satellite.EO              INFO       <2949.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,380 utils.orbital                  WARNING    <2949.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,381 gym                            INFO       <2949.50> Step reward: 0.0
2026-09-02 14:51:12,382 gym                            INFO       <2949.50> === STARTING STEP ===
2026-09-02 14:51:12,382 sats.satellite.EO              INFO       <2949.50> EO: target index 27 tasked
2026-09-02 14:51:12,383 sats.satellite.EO              INFO       <2949.50> EO: Target(tgt-6110) tasked for imaging
2026-09-02 14:51:12,384 sats.satellite.EO              INFO       <2949.50> EO: Target(tgt-6110) window enabled: 3065.9 to 3171.4
2026-09-02 14:51:12,385 sats.satellite.EO              INFO       <2949.50> EO: setting timed terminal event at 3171.4
2026-09-02 14:51:12,434 sats.satellite.EO              INFO       <3171.50> EO: timed termination at 3171.4 for Target(tgt-6110) window
2026-09-02 14:51:12,435 data.base                      INFO       <3171.50> Total reward: {}
2026-09-02 14:51:12,436 comm.communication             INFO       <3171.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,436 sats.satellite.EO              INFO       <3171.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,438 utils.orbital                  WARNING    <3171.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,440 gym                            INFO       <3171.50> Step reward: 0.0
2026-09-02 14:51:12,441 gym                            INFO       <3171.50> === STARTING STEP ===
2026-09-02 14:51:12,441 sats.satellite.EO              INFO       <3171.50> EO: target index 18 tasked
2026-09-02 14:51:12,442 sats.satellite.EO              INFO       <3171.50> EO: Target(tgt-6676) tasked for imaging
2026-09-02 14:51:12,443 sats.satellite.EO              INFO       <3171.50> EO: Target(tgt-6676) window enabled: 3299.3 to 3399.9
2026-09-02 14:51:12,444 sats.satellite.EO              INFO       <3171.50> EO: setting timed terminal event at 3399.9
2026-09-02 14:51:12,509 sats.satellite.EO              INFO       <3400.00> EO: timed termination at 3399.9 for Target(tgt-6676) window
2026-09-02 14:51:12,511 data.base                      INFO       <3400.00> Total reward: {}
2026-09-02 14:51:12,511 comm.communication             INFO       <3400.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,512 sats.satellite.EO              INFO       <3400.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,514 utils.orbital                  WARNING    <3400.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,516 gym                            INFO       <3400.00> Step reward: 0.0
2026-09-02 14:51:12,517 gym                            INFO       <3400.00> === STARTING STEP ===
2026-09-02 14:51:12,517 sats.satellite.EO              INFO       <3400.00> EO: target index 18 tasked
2026-09-02 14:51:12,517 sats.satellite.EO              INFO       <3400.00> EO: Target(tgt-958) tasked for imaging
2026-09-02 14:51:12,519 sats.satellite.EO              INFO       <3400.00> EO: Target(tgt-958) window enabled: 3449.2 to 3538.5
2026-09-02 14:51:12,519 sats.satellite.EO              INFO       <3400.00> EO: setting timed terminal event at 3538.5
2026-09-02 14:51:12,549 sats.satellite.EO              INFO       <3538.50> EO: timed termination at 3538.5 for Target(tgt-958) window
2026-09-02 14:51:12,551 data.base                      INFO       <3538.50> Total reward: {}
2026-09-02 14:51:12,551 comm.communication             INFO       <3538.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,552 sats.satellite.EO              INFO       <3538.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,554 utils.orbital                  WARNING    <3538.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,556 gym                            INFO       <3538.50> Step reward: 0.0
2026-09-02 14:51:12,556 gym                            INFO       <3538.50> === STARTING STEP ===
2026-09-02 14:51:12,557 sats.satellite.EO              INFO       <3538.50> EO: target index 7 tasked
2026-09-02 14:51:12,557 sats.satellite.EO              INFO       <3538.50> EO: Target(tgt-7314) tasked for imaging
2026-09-02 14:51:12,559 sats.satellite.EO              INFO       <3538.50> EO: Target(tgt-7314) window enabled: 3536.7 to 3581.1
2026-09-02 14:51:12,559 sats.satellite.EO              INFO       <3538.50> EO: setting timed terminal event at 3581.1
2026-09-02 14:51:12,569 sats.satellite.EO              INFO       <3581.50> EO: timed termination at 3581.1 for Target(tgt-7314) window
2026-09-02 14:51:12,570 data.base                      INFO       <3581.50> Total reward: {}
2026-09-02 14:51:12,571 comm.communication             INFO       <3581.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,572 sats.satellite.EO              INFO       <3581.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,574 utils.orbital                  WARNING    <3581.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,575 gym                            INFO       <3581.50> Step reward: 0.0
2026-09-02 14:51:12,576 gym                            INFO       <3581.50> === STARTING STEP ===
2026-09-02 14:51:12,576 sats.satellite.EO              INFO       <3581.50> EO: target index 16 tasked
2026-09-02 14:51:12,577 sats.satellite.EO              INFO       <3581.50> EO: Target(tgt-9780) tasked for imaging
2026-09-02 14:51:12,577 sats.satellite.EO              INFO       <3581.50> EO: Target(tgt-9780) window enabled: 3622.9 to 3717.0
2026-09-02 14:51:12,578 sats.satellite.EO              INFO       <3581.50> EO: setting timed terminal event at 3717.0
2026-09-02 14:51:12,608 sats.satellite.EO              INFO       <3717.00> EO: timed termination at 3717.0 for Target(tgt-9780) window
2026-09-02 14:51:12,609 data.base                      INFO       <3717.00> Total reward: {}
2026-09-02 14:51:12,609 comm.communication             INFO       <3717.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,610 sats.satellite.EO              INFO       <3717.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,612 utils.orbital                  WARNING    <3717.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,614 gym                            INFO       <3717.00> Step reward: 0.0
2026-09-02 14:51:12,614 gym                            INFO       <3717.00> === STARTING STEP ===
2026-09-02 14:51:12,615 sats.satellite.EO              INFO       <3717.00> EO: target index 3 tasked
2026-09-02 14:51:12,615 sats.satellite.EO              INFO       <3717.00> EO: Target(tgt-2951) tasked for imaging
2026-09-02 14:51:12,616 sats.satellite.EO              INFO       <3717.00> EO: Target(tgt-2951) window enabled: 3683.5 to 3751.7
2026-09-02 14:51:12,616 sats.satellite.EO              INFO       <3717.00> EO: setting timed terminal event at 3751.7
2026-09-02 14:51:12,625 sats.satellite.EO              INFO       <3752.00> EO: timed termination at 3751.7 for Target(tgt-2951) window
2026-09-02 14:51:12,626 data.base                      INFO       <3752.00> Total reward: {}
2026-09-02 14:51:12,626 comm.communication             INFO       <3752.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,627 sats.satellite.EO              INFO       <3752.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,629 utils.orbital                  WARNING    <3752.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,631 gym                            INFO       <3752.00> Step reward: 0.0
2026-09-02 14:51:12,632 gym                            INFO       <3752.00> === STARTING STEP ===
2026-09-02 14:51:12,632 sats.satellite.EO              INFO       <3752.00> EO: target index 22 tasked
2026-09-02 14:51:12,633 sats.satellite.EO              INFO       <3752.00> EO: Target(tgt-1364) tasked for imaging
2026-09-02 14:51:12,633 sats.satellite.EO              INFO       <3752.00> EO: Target(tgt-1364) window enabled: 3808.2 to 3923.9
2026-09-02 14:51:12,634 sats.satellite.EO              INFO       <3752.00> EO: setting timed terminal event at 3923.9
2026-09-02 14:51:12,672 sats.satellite.EO              INFO       <3924.00> EO: timed termination at 3923.9 for Target(tgt-1364) window
2026-09-02 14:51:12,673 data.base                      INFO       <3924.00> Total reward: {}
2026-09-02 14:51:12,673 comm.communication             INFO       <3924.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,674 sats.satellite.EO              INFO       <3924.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,676 utils.orbital                  WARNING    <3924.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,678 gym                            INFO       <3924.00> Step reward: 0.0
2026-09-02 14:51:12,679 gym                            INFO       <3924.00> === STARTING STEP ===
2026-09-02 14:51:12,679 sats.satellite.EO              INFO       <3924.00> EO: target index 16 tasked
2026-09-02 14:51:12,680 sats.satellite.EO              INFO       <3924.00> EO: Target(tgt-3643) tasked for imaging
2026-09-02 14:51:12,681 sats.satellite.EO              INFO       <3924.00> EO: Target(tgt-3643) window enabled: 3989.4 to 4103.8
2026-09-02 14:51:12,681 sats.satellite.EO              INFO       <3924.00> EO: setting timed terminal event at 4103.8
2026-09-02 14:51:12,720 sats.satellite.EO              INFO       <4104.00> EO: timed termination at 4103.8 for Target(tgt-3643) window
2026-09-02 14:51:12,721 data.base                      INFO       <4104.00> Total reward: {}
2026-09-02 14:51:12,721 comm.communication             INFO       <4104.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,722 sats.satellite.EO              INFO       <4104.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,724 utils.orbital                  WARNING    <4104.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,726 gym                            INFO       <4104.00> Step reward: 0.0
2026-09-02 14:51:12,727 gym                            INFO       <4104.00> === STARTING STEP ===
2026-09-02 14:51:12,727 sats.satellite.EO              INFO       <4104.00> EO: target index 23 tasked
2026-09-02 14:51:12,728 sats.satellite.EO              INFO       <4104.00> EO: Target(tgt-5269) tasked for imaging
2026-09-02 14:51:12,729 sats.satellite.EO              INFO       <4104.00> EO: Target(tgt-5269) window enabled: 4212.5 to 4296.0
2026-09-02 14:51:12,729 sats.satellite.EO              INFO       <4104.00> EO: setting timed terminal event at 4296.0
2026-09-02 14:51:12,771 sats.satellite.EO              INFO       <4296.00> EO: timed termination at 4296.0 for Target(tgt-5269) window
2026-09-02 14:51:12,772 data.base                      INFO       <4296.00> Total reward: {}
2026-09-02 14:51:12,772 comm.communication             INFO       <4296.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,773 sats.satellite.EO              INFO       <4296.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,775 utils.orbital                  WARNING    <4296.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,778 gym                            INFO       <4296.00> Step reward: 0.0
2026-09-02 14:51:12,778 gym                            INFO       <4296.00> === STARTING STEP ===
2026-09-02 14:51:12,779 sats.satellite.EO              INFO       <4296.00> EO: target index 27 tasked
2026-09-02 14:51:12,779 sats.satellite.EO              INFO       <4296.00> EO: Target(tgt-8368) tasked for imaging
2026-09-02 14:51:12,780 sats.satellite.EO              INFO       <4296.00> EO: Target(tgt-8368) window enabled: 4408.5 to 4474.2
2026-09-02 14:51:12,781 sats.satellite.EO              INFO       <4296.00> EO: setting timed terminal event at 4474.2
2026-09-02 14:51:12,819 sats.satellite.EO              INFO       <4474.50> EO: timed termination at 4474.2 for Target(tgt-8368) window
2026-09-02 14:51:12,820 data.base                      INFO       <4474.50> Total reward: {}
2026-09-02 14:51:12,821 comm.communication             INFO       <4474.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,822 sats.satellite.EO              INFO       <4474.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,824 utils.orbital                  WARNING    <4474.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,826 gym                            INFO       <4474.50> Step reward: 0.0
2026-09-02 14:51:12,826 gym                            INFO       <4474.50> === STARTING STEP ===
2026-09-02 14:51:12,827 sats.satellite.EO              INFO       <4474.50> EO: target index 17 tasked
2026-09-02 14:51:12,827 sats.satellite.EO              INFO       <4474.50> EO: Target(tgt-3326) tasked for imaging
2026-09-02 14:51:12,828 sats.satellite.EO              INFO       <4474.50> EO: Target(tgt-3326) window enabled: 4509.5 to 4595.3
2026-09-02 14:51:12,828 sats.satellite.EO              INFO       <4474.50> EO: setting timed terminal event at 4595.3
2026-09-02 14:51:12,855 sats.satellite.EO              INFO       <4595.50> EO: timed termination at 4595.3 for Target(tgt-3326) window
2026-09-02 14:51:12,856 data.base                      INFO       <4595.50> Total reward: {}
2026-09-02 14:51:12,857 comm.communication             INFO       <4595.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,857 sats.satellite.EO              INFO       <4595.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,859 utils.orbital                  WARNING    <4595.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,861 gym                            INFO       <4595.50> Step reward: 0.0
2026-09-02 14:51:12,862 gym                            INFO       <4595.50> === STARTING STEP ===
2026-09-02 14:51:12,862 sats.satellite.EO              INFO       <4595.50> EO: target index 12 tasked
2026-09-02 14:51:12,862 sats.satellite.EO              INFO       <4595.50> EO: Target(tgt-9140) tasked for imaging
2026-09-02 14:51:12,863 sats.satellite.EO              INFO       <4595.50> EO: Target(tgt-9140) window enabled: 4721.4 to 4756.0
2026-09-02 14:51:12,864 sats.satellite.EO              INFO       <4595.50> EO: setting timed terminal event at 4756.0
2026-09-02 14:51:12,899 sats.satellite.EO              INFO       <4756.00> EO: timed termination at 4756.0 for Target(tgt-9140) window
2026-09-02 14:51:12,900 data.base                      INFO       <4756.00> Total reward: {}
2026-09-02 14:51:12,900 comm.communication             INFO       <4756.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,901 sats.satellite.EO              INFO       <4756.00> EO: Satellite EO requires retasking
2026-09-02 14:51:12,903 utils.orbital                  WARNING    <4756.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,905 gym                            INFO       <4756.00> Step reward: 0.0
2026-09-02 14:51:12,906 gym                            INFO       <4756.00> === STARTING STEP ===
2026-09-02 14:51:12,906 sats.satellite.EO              INFO       <4756.00> EO: target index 17 tasked
2026-09-02 14:51:12,907 sats.satellite.EO              INFO       <4756.00> EO: Target(tgt-4718) tasked for imaging
2026-09-02 14:51:12,908 sats.satellite.EO              INFO       <4756.00> EO: Target(tgt-4718) window enabled: 4750.8 to 4868.3
2026-09-02 14:51:12,908 sats.satellite.EO              INFO       <4756.00> EO: setting timed terminal event at 4868.3
2026-09-02 14:51:12,933 sats.satellite.EO              INFO       <4868.50> EO: timed termination at 4868.3 for Target(tgt-4718) window
2026-09-02 14:51:12,934 data.base                      INFO       <4868.50> Total reward: {}
2026-09-02 14:51:12,935 comm.communication             INFO       <4868.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,936 sats.satellite.EO              INFO       <4868.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,938 utils.orbital                  WARNING    <4868.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,939 gym                            INFO       <4868.50> Step reward: 0.0
2026-09-02 14:51:12,940 gym                            INFO       <4868.50> === STARTING STEP ===
2026-09-02 14:51:12,940 sats.satellite.EO              INFO       <4868.50> EO: target index 8 tasked
2026-09-02 14:51:12,941 sats.satellite.EO              INFO       <4868.50> EO: Target(tgt-5996) tasked for imaging
2026-09-02 14:51:12,942 sats.satellite.EO              INFO       <4868.50> EO: Target(tgt-5996) window enabled: 4788.6 to 4910.0
2026-09-02 14:51:12,942 sats.satellite.EO              INFO       <4868.50> EO: setting timed terminal event at 4910.0
2026-09-02 14:51:12,956 sats.satellite.EO              INFO       <4910.50> EO: timed termination at 4910.0 for Target(tgt-5996) window
2026-09-02 14:51:12,957 data.base                      INFO       <4910.50> Total reward: {}
2026-09-02 14:51:12,957 comm.communication             INFO       <4910.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:12,958 sats.satellite.EO              INFO       <4910.50> EO: Satellite EO requires retasking
2026-09-02 14:51:12,960 utils.orbital                  WARNING    <4910.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:12,962 gym                            INFO       <4910.50> Step reward: 0.0
2026-09-02 14:51:12,963 gym                            INFO       <4910.50> === STARTING STEP ===
2026-09-02 14:51:12,963 sats.satellite.EO              INFO       <4910.50> EO: target index 17 tasked
2026-09-02 14:51:12,963 sats.satellite.EO              INFO       <4910.50> EO: Target(tgt-8356) tasked for imaging
2026-09-02 14:51:12,965 sats.satellite.EO              INFO       <4910.50> EO: Target(tgt-8356) window enabled: 4996.1 to 5040.2
2026-09-02 14:51:12,965 sats.satellite.EO              INFO       <4910.50> EO: setting timed terminal event at 5040.2
2026-09-02 14:51:13,003 sats.satellite.EO              INFO       <5040.50> EO: timed termination at 5040.2 for Target(tgt-8356) window
2026-09-02 14:51:13,004 data.base                      INFO       <5040.50> Total reward: {}
2026-09-02 14:51:13,005 comm.communication             INFO       <5040.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,006 sats.satellite.EO              INFO       <5040.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,008 utils.orbital                  WARNING    <5040.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,010 gym                            INFO       <5040.50> Step reward: 0.0
2026-09-02 14:51:13,010 gym                            INFO       <5040.50> === STARTING STEP ===
2026-09-02 14:51:13,011 sats.satellite.EO              INFO       <5040.50> EO: target index 8 tasked
2026-09-02 14:51:13,011 sats.satellite.EO              INFO       <5040.50> EO: Target(tgt-3087) tasked for imaging
2026-09-02 14:51:13,012 sats.satellite.EO              INFO       <5040.50> EO: Target(tgt-3087) window enabled: 5019.8 to 5098.8
2026-09-02 14:51:13,013 sats.satellite.EO              INFO       <5040.50> EO: setting timed terminal event at 5098.8
2026-09-02 14:51:13,029 sats.satellite.EO              INFO       <5099.00> EO: timed termination at 5098.8 for Target(tgt-3087) window
2026-09-02 14:51:13,030 data.base                      INFO       <5099.00> Total reward: {}
2026-09-02 14:51:13,030 comm.communication             INFO       <5099.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,031 sats.satellite.EO              INFO       <5099.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,033 utils.orbital                  WARNING    <5099.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,035 gym                            INFO       <5099.00> Step reward: 0.0
2026-09-02 14:51:13,035 gym                            INFO       <5099.00> === STARTING STEP ===
2026-09-02 14:51:13,036 sats.satellite.EO              INFO       <5099.00> EO: target index 5 tasked
2026-09-02 14:51:13,036 sats.satellite.EO              INFO       <5099.00> EO: Target(tgt-8584) tasked for imaging
2026-09-02 14:51:13,037 sats.satellite.EO              INFO       <5099.00> EO: Target(tgt-8584) window enabled: 5005.1 to 5126.7
2026-09-02 14:51:13,038 sats.satellite.EO              INFO       <5099.00> EO: setting timed terminal event at 5126.7
2026-09-02 14:51:13,047 sats.satellite.EO              INFO       <5127.00> EO: timed termination at 5126.7 for Target(tgt-8584) window
2026-09-02 14:51:13,048 data.base                      INFO       <5127.00> Total reward: {}
2026-09-02 14:51:13,048 comm.communication             INFO       <5127.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,049 sats.satellite.EO              INFO       <5127.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,051 utils.orbital                  WARNING    <5127.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,053 gym                            INFO       <5127.00> Step reward: 0.0
2026-09-02 14:51:13,054 gym                            INFO       <5127.00> === STARTING STEP ===
2026-09-02 14:51:13,054 sats.satellite.EO              INFO       <5127.00> EO: target index 22 tasked
2026-09-02 14:51:13,055 sats.satellite.EO              INFO       <5127.00> EO: Target(tgt-8158) tasked for imaging
2026-09-02 14:51:13,055 sats.satellite.EO              INFO       <5127.00> EO: Target(tgt-8158) window enabled: 5228.5 to 5350.8
2026-09-02 14:51:13,056 sats.satellite.EO              INFO       <5127.00> EO: setting timed terminal event at 5350.8
2026-09-02 14:51:13,121 sats.satellite.EO              INFO       <5351.00> EO: timed termination at 5350.8 for Target(tgt-8158) window
2026-09-02 14:51:13,122 data.base                      INFO       <5351.00> Total reward: {}
2026-09-02 14:51:13,122 comm.communication             INFO       <5351.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,124 sats.satellite.EO              INFO       <5351.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,126 utils.orbital                  WARNING    <5351.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,128 gym                            INFO       <5351.00> Step reward: 0.0
2026-09-02 14:51:13,129 gym                            INFO       <5351.00> === STARTING STEP ===
2026-09-02 14:51:13,129 sats.satellite.EO              INFO       <5351.00> EO: target index 22 tasked
2026-09-02 14:51:13,130 sats.satellite.EO              INFO       <5351.00> EO: Target(tgt-2061) tasked for imaging
2026-09-02 14:51:13,130 sats.satellite.EO              INFO       <5351.00> EO: Target(tgt-2061) window enabled: 5442.7 to 5522.5
2026-09-02 14:51:13,131 sats.satellite.EO              INFO       <5351.00> EO: setting timed terminal event at 5522.5
2026-09-02 14:51:13,168 sats.satellite.EO              INFO       <5523.00> EO: timed termination at 5522.5 for Target(tgt-2061) window
2026-09-02 14:51:13,169 data.base                      INFO       <5523.00> Total reward: {}
2026-09-02 14:51:13,170 comm.communication             INFO       <5523.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,171 sats.satellite.EO              INFO       <5523.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,173 utils.orbital                  WARNING    <5523.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,175 gym                            INFO       <5523.00> Step reward: 0.0
2026-09-02 14:51:13,176 gym                            INFO       <5523.00> === STARTING STEP ===
2026-09-02 14:51:13,176 sats.satellite.EO              INFO       <5523.00> EO: target index 10 tasked
2026-09-02 14:51:13,177 sats.satellite.EO              INFO       <5523.00> EO: Target(tgt-2352) tasked for imaging
2026-09-02 14:51:13,178 sats.satellite.EO              INFO       <5523.00> EO: Target(tgt-2352) window enabled: 5465.7 to 5588.2
2026-09-02 14:51:13,178 sats.satellite.EO              INFO       <5523.00> EO: setting timed terminal event at 5588.2
2026-09-02 14:51:13,198 sats.satellite.EO              INFO       <5588.50> EO: timed termination at 5588.2 for Target(tgt-2352) window
2026-09-02 14:51:13,199 data.base                      INFO       <5588.50> Total reward: {}
2026-09-02 14:51:13,200 comm.communication             INFO       <5588.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,201 sats.satellite.EO              INFO       <5588.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,203 utils.orbital                  WARNING    <5588.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,205 gym                            INFO       <5588.50> Step reward: 0.0
2026-09-02 14:51:13,205 gym                            INFO       <5588.50> === STARTING STEP ===
2026-09-02 14:51:13,206 sats.satellite.EO              INFO       <5588.50> EO: target index 1 tasked
2026-09-02 14:51:13,206 sats.satellite.EO              INFO       <5588.50> EO: Target(tgt-1867) tasked for imaging
2026-09-02 14:51:13,207 sats.satellite.EO              INFO       <5588.50> EO: Target(tgt-1867) window enabled: 5495.7 to 5608.9
2026-09-02 14:51:13,208 sats.satellite.EO              INFO       <5588.50> EO: setting timed terminal event at 5608.9
2026-09-02 14:51:13,213 sats.satellite.EO              INFO       <5609.00> EO: timed termination at 5608.9 for Target(tgt-1867) window
2026-09-02 14:51:13,214 data.base                      INFO       <5609.00> Total reward: {}
2026-09-02 14:51:13,215 comm.communication             INFO       <5609.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,216 sats.satellite.EO              INFO       <5609.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,218 utils.orbital                  WARNING    <5609.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,220 gym                            INFO       <5609.00> Step reward: 0.0
2026-09-02 14:51:13,220 gym                            INFO       <5609.00> === STARTING STEP ===
2026-09-02 14:51:13,221 sats.satellite.EO              INFO       <5609.00> EO: target index 6 tasked
2026-09-02 14:51:13,221 sats.satellite.EO              INFO       <5609.00> EO: Target(tgt-6374) tasked for imaging
2026-09-02 14:51:13,222 sats.satellite.EO              INFO       <5609.00> EO: Target(tgt-6374) window enabled: 5527.7 to 5647.4
2026-09-02 14:51:13,223 sats.satellite.EO              INFO       <5609.00> EO: setting timed terminal event at 5647.4
2026-09-02 14:51:13,235 sats.satellite.EO              INFO       <5647.50> EO: timed termination at 5647.4 for Target(tgt-6374) window
2026-09-02 14:51:13,236 data.base                      INFO       <5647.50> Total reward: {}
2026-09-02 14:51:13,236 comm.communication             INFO       <5647.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,237 sats.satellite.EO              INFO       <5647.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,239 utils.orbital                  WARNING    <5647.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,241 gym                            INFO       <5647.50> Step reward: 0.0
2026-09-02 14:51:13,242 gym                            INFO       <5647.50> === STARTING STEP ===
2026-09-02 14:51:13,242 sats.satellite.EO              INFO       <5647.50> EO: target index 30 tasked
2026-09-02 14:51:13,243 sats.satellite.EO              INFO       <5647.50> EO: Target(tgt-6013) tasked for imaging
2026-09-02 14:51:13,244 sats.satellite.EO              INFO       <5647.50> EO: Target(tgt-6013) window enabled: 5819.0 to 5895.1
2026-09-02 14:51:13,244 sats.satellite.EO              INFO       <5647.50> EO: setting timed terminal event at 5895.1
2026-09-02 14:51:13,316 sats.satellite.EO              INFO       <5895.50> EO: timed termination at 5895.1 for Target(tgt-6013) window
2026-09-02 14:51:13,317 data.base                      INFO       <5895.50> Total reward: {}
2026-09-02 14:51:13,318 comm.communication             INFO       <5895.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,319 sats.satellite.EO              INFO       <5895.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,321 utils.orbital                  WARNING    <5895.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,324 gym                            INFO       <5895.50> Step reward: 0.0
2026-09-02 14:51:13,324 gym                            INFO       <5895.50> === STARTING STEP ===
2026-09-02 14:51:13,324 sats.satellite.EO              INFO       <5895.50> EO: target index 16 tasked
2026-09-02 14:51:13,325 sats.satellite.EO              INFO       <5895.50> EO: Target(tgt-2991) tasked for imaging
2026-09-02 14:51:13,326 sats.satellite.EO              INFO       <5895.50> EO: Target(tgt-2991) window enabled: 5900.9 to 5990.2
2026-09-02 14:51:13,326 sats.satellite.EO              INFO       <5895.50> EO: setting timed terminal event at 5990.2
2026-09-02 14:51:13,351 sats.satellite.EO              INFO       <5990.50> EO: timed termination at 5990.2 for Target(tgt-2991) window
2026-09-02 14:51:13,352 data.base                      INFO       <5990.50> Total reward: {}
2026-09-02 14:51:13,353 comm.communication             INFO       <5990.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,354 sats.satellite.EO              INFO       <5990.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,356 utils.orbital                  WARNING    <5990.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,359 gym                            INFO       <5990.50> Step reward: 0.0
2026-09-02 14:51:13,359 gym                            INFO       <5990.50> === STARTING STEP ===
2026-09-02 14:51:13,360 sats.satellite.EO              INFO       <5990.50> EO: target index 16 tasked
2026-09-02 14:51:13,360 sats.satellite.EO              INFO       <5990.50> EO: Target(tgt-2223) tasked for imaging
2026-09-02 14:51:13,361 sats.satellite.EO              INFO       <5990.50> EO: Target(tgt-2223) window enabled: 5983.7 to 6105.8
2026-09-02 14:51:13,362 sats.satellite.EO              INFO       <5990.50> EO: setting timed terminal event at 6105.8
2026-09-02 14:51:13,387 sats.satellite.EO              INFO       <6106.00> EO: timed termination at 6105.8 for Target(tgt-2223) window
2026-09-02 14:51:13,388 data.base                      INFO       <6106.00> Total reward: {}
2026-09-02 14:51:13,389 comm.communication             INFO       <6106.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,390 sats.satellite.EO              INFO       <6106.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,392 utils.orbital                  WARNING    <6106.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,394 gym                            INFO       <6106.00> Step reward: 0.0
2026-09-02 14:51:13,395 gym                            INFO       <6106.00> === STARTING STEP ===
2026-09-02 14:51:13,395 sats.satellite.EO              INFO       <6106.00> EO: target index 27 tasked
2026-09-02 14:51:13,396 sats.satellite.EO              INFO       <6106.00> EO: Target(tgt-2668) tasked for imaging
2026-09-02 14:51:13,396 sats.satellite.EO              INFO       <6106.00> EO: Target(tgt-2668) window enabled: 6276.7 to 6306.0
2026-09-02 14:51:13,397 sats.satellite.EO              INFO       <6106.00> EO: setting timed terminal event at 6306.0
2026-09-02 14:51:13,442 sats.satellite.EO              INFO       <6306.00> EO: timed termination at 6306.0 for Target(tgt-2668) window
2026-09-02 14:51:13,443 data.base                      INFO       <6306.00> Total reward: {}
2026-09-02 14:51:13,444 comm.communication             INFO       <6306.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,445 sats.satellite.EO              INFO       <6306.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,447 utils.orbital                  WARNING    <6306.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,449 gym                            INFO       <6306.00> Step reward: 0.0
2026-09-02 14:51:13,450 gym                            INFO       <6306.00> === STARTING STEP ===
2026-09-02 14:51:13,450 sats.satellite.EO              INFO       <6306.00> EO: target index 0 tasked
2026-09-02 14:51:13,451 sats.satellite.EO              INFO       <6306.00> EO: Target(tgt-7028) tasked for imaging
2026-09-02 14:51:13,452 sats.satellite.EO              INFO       <6306.00> EO: Target(tgt-7028) window enabled: 6190.3 to 6308.2
2026-09-02 14:51:13,452 sats.satellite.EO              INFO       <6306.00> EO: setting timed terminal event at 6308.2
2026-09-02 14:51:13,454 sats.satellite.EO              INFO       <6308.50> EO: timed termination at 6308.2 for Target(tgt-7028) window
2026-09-02 14:51:13,455 data.base                      INFO       <6308.50> Total reward: {}
2026-09-02 14:51:13,455 comm.communication             INFO       <6308.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,456 sats.satellite.EO              INFO       <6308.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,458 utils.orbital                  WARNING    <6308.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,460 gym                            INFO       <6308.50> Step reward: 0.0
2026-09-02 14:51:13,460 gym                            INFO       <6308.50> === STARTING STEP ===
2026-09-02 14:51:13,461 sats.satellite.EO              INFO       <6308.50> EO: action_charge tasked for 60.0 seconds
2026-09-02 14:51:13,461 sats.satellite.EO              INFO       <6308.50> EO: setting timed terminal event at 6368.5
2026-09-02 14:51:13,475 sats.satellite.EO              INFO       <6368.50> EO: timed termination at 6368.5 for action_charge
2026-09-02 14:51:13,476 data.base                      INFO       <6368.50> Total reward: {}
2026-09-02 14:51:13,477 comm.communication             INFO       <6368.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,478 sats.satellite.EO              INFO       <6368.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,480 utils.orbital                  WARNING    <6368.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,482 gym                            INFO       <6368.50> Step reward: 0.0
2026-09-02 14:51:13,482 gym                            INFO       <6368.50> === STARTING STEP ===
2026-09-02 14:51:13,483 sats.satellite.EO              INFO       <6368.50> EO: target index 26 tasked
2026-09-02 14:51:13,483 sats.satellite.EO              INFO       <6368.50> EO: Target(tgt-8662) tasked for imaging
2026-09-02 14:51:13,484 sats.satellite.EO              INFO       <6368.50> EO: Target(tgt-8662) window enabled: 6517.8 to 6562.0
2026-09-02 14:51:13,484 sats.satellite.EO              INFO       <6368.50> EO: setting timed terminal event at 6562.0
2026-09-02 14:51:13,526 sats.satellite.EO              INFO       <6562.50> EO: timed termination at 6562.0 for Target(tgt-8662) window
2026-09-02 14:51:13,528 data.base                      INFO       <6562.50> Total reward: {}
2026-09-02 14:51:13,528 comm.communication             INFO       <6562.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,529 sats.satellite.EO              INFO       <6562.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,531 utils.orbital                  WARNING    <6562.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,533 gym                            INFO       <6562.50> Step reward: 0.0
2026-09-02 14:51:13,534 gym                            INFO       <6562.50> === STARTING STEP ===
2026-09-02 14:51:13,534 sats.satellite.EO              INFO       <6562.50> EO: action_charge tasked for 60.0 seconds
2026-09-02 14:51:13,535 sats.satellite.EO              INFO       <6562.50> EO: setting timed terminal event at 6622.5
2026-09-02 14:51:13,553 sats.satellite.EO              INFO       <6622.50> EO: timed termination at 6622.5 for action_charge
2026-09-02 14:51:13,555 data.base                      INFO       <6622.50> Total reward: {}
2026-09-02 14:51:13,555 comm.communication             INFO       <6622.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,556 sats.satellite.EO              INFO       <6622.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,558 utils.orbital                  WARNING    <6622.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,560 gym                            INFO       <6622.50> Step reward: 0.0
2026-09-02 14:51:13,560 gym                            INFO       <6622.50> === STARTING STEP ===
2026-09-02 14:51:13,561 sats.satellite.EO              INFO       <6622.50> EO: target index 0 tasked
2026-09-02 14:51:13,561 sats.satellite.EO              INFO       <6622.50> EO: Target(tgt-774) tasked for imaging
2026-09-02 14:51:13,562 sats.satellite.EO              INFO       <6622.50> EO: Target(tgt-774) window enabled: 6552.4 to 6626.5
2026-09-02 14:51:13,563 sats.satellite.EO              INFO       <6622.50> EO: setting timed terminal event at 6626.5
2026-09-02 14:51:13,565 sats.satellite.EO              INFO       <6626.50> EO: timed termination at 6626.5 for Target(tgt-774) window
2026-09-02 14:51:13,566 data.base                      INFO       <6626.50> Total reward: {}
2026-09-02 14:51:13,567 comm.communication             INFO       <6626.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,567 sats.satellite.EO              INFO       <6626.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,570 utils.orbital                  WARNING    <6626.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,572 gym                            INFO       <6626.50> Step reward: 0.0
2026-09-02 14:51:13,572 gym                            INFO       <6626.50> === STARTING STEP ===
2026-09-02 14:51:13,573 sats.satellite.EO              INFO       <6626.50> EO: target index 19 tasked
2026-09-02 14:51:13,573 sats.satellite.EO              INFO       <6626.50> EO: Target(tgt-7753) tasked for imaging
2026-09-02 14:51:13,574 sats.satellite.EO              INFO       <6626.50> EO: Target(tgt-7753) window enabled: 6714.8 to 6812.5
2026-09-02 14:51:13,574 sats.satellite.EO              INFO       <6626.50> EO: setting timed terminal event at 6812.5
2026-09-02 14:51:13,623 sats.satellite.EO              INFO       <6812.50> EO: timed termination at 6812.5 for Target(tgt-7753) window
2026-09-02 14:51:13,624 data.base                      INFO       <6812.50> Total reward: {}
2026-09-02 14:51:13,624 comm.communication             INFO       <6812.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,625 sats.satellite.EO              INFO       <6812.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,628 utils.orbital                  WARNING    <6812.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,630 gym                            INFO       <6812.50> Step reward: 0.0
2026-09-02 14:51:13,630 gym                            INFO       <6812.50> === STARTING STEP ===
2026-09-02 14:51:13,631 sats.satellite.EO              INFO       <6812.50> EO: target index 0 tasked
2026-09-02 14:51:13,631 sats.satellite.EO              INFO       <6812.50> EO: Target(tgt-5816) tasked for imaging
2026-09-02 14:51:13,632 sats.satellite.EO              INFO       <6812.50> EO: Target(tgt-5816) window enabled: 6719.8 to 6824.7
2026-09-02 14:51:13,633 sats.satellite.EO              INFO       <6812.50> EO: setting timed terminal event at 6824.7
2026-09-02 14:51:13,637 sats.satellite.EO              INFO       <6825.00> EO: timed termination at 6824.7 for Target(tgt-5816) window
2026-09-02 14:51:13,638 data.base                      INFO       <6825.00> Total reward: {}
2026-09-02 14:51:13,638 comm.communication             INFO       <6825.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,639 sats.satellite.EO              INFO       <6825.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,641 utils.orbital                  WARNING    <6825.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,643 gym                            INFO       <6825.00> Step reward: 0.0
2026-09-02 14:51:13,643 gym                            INFO       <6825.00> === STARTING STEP ===
2026-09-02 14:51:13,644 sats.satellite.EO              INFO       <6825.00> EO: target index 29 tasked
2026-09-02 14:51:13,644 sats.satellite.EO              INFO       <6825.00> EO: Target(tgt-8239) tasked for imaging
2026-09-02 14:51:13,645 sats.satellite.EO              INFO       <6825.00> EO: Target(tgt-8239) window enabled: 6930.3 to 7026.4
2026-09-02 14:51:13,645 sats.satellite.EO              INFO       <6825.00> EO: setting timed terminal event at 7026.4
2026-09-02 14:51:13,690 sats.satellite.EO              INFO       <7026.50> EO: timed termination at 7026.4 for Target(tgt-8239) window
2026-09-02 14:51:13,691 data.base                      INFO       <7026.50> Total reward: {}
2026-09-02 14:51:13,692 comm.communication             INFO       <7026.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,693 sats.satellite.EO              INFO       <7026.50> EO: Satellite EO requires retasking
2026-09-02 14:51:13,695 utils.orbital                  WARNING    <7026.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,697 gym                            INFO       <7026.50> Step reward: 0.0
2026-09-02 14:51:13,698 gym                            INFO       <7026.50> === STARTING STEP ===
2026-09-02 14:51:13,698 sats.satellite.EO              INFO       <7026.50> EO: target index 26 tasked
2026-09-02 14:51:13,699 sats.satellite.EO              INFO       <7026.50> EO: Target(tgt-1821) tasked for imaging
2026-09-02 14:51:13,700 sats.satellite.EO              INFO       <7026.50> EO: Target(tgt-1821) window enabled: 7171.7 to 7250.9
2026-09-02 14:51:13,701 sats.satellite.EO              INFO       <7026.50> EO: setting timed terminal event at 7250.9
2026-09-02 14:51:13,748 sats.satellite.EO              INFO       <7251.00> EO: timed termination at 7250.9 for Target(tgt-1821) window
2026-09-02 14:51:13,750 data.base                      INFO       <7251.00> Total reward: {}
2026-09-02 14:51:13,750 comm.communication             INFO       <7251.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,751 sats.satellite.EO              INFO       <7251.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,753 utils.orbital                  WARNING    <7251.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,755 gym                            INFO       <7251.00> Step reward: 0.0
2026-09-02 14:51:13,756 gym                            INFO       <7251.00> === STARTING STEP ===
2026-09-02 14:51:13,756 sats.satellite.EO              INFO       <7251.00> EO: target index 12 tasked
2026-09-02 14:51:13,757 sats.satellite.EO              INFO       <7251.00> EO: Target(tgt-2076) tasked for imaging
2026-09-02 14:51:13,758 sats.satellite.EO              INFO       <7251.00> EO: Target(tgt-2076) window enabled: 7259.9 to 7376.7
2026-09-02 14:51:13,758 sats.satellite.EO              INFO       <7251.00> EO: setting timed terminal event at 7376.7
2026-09-02 14:51:13,791 sats.satellite.EO              INFO       <7377.00> EO: timed termination at 7376.7 for Target(tgt-2076) window
2026-09-02 14:51:13,792 data.base                      INFO       <7377.00> Total reward: {}
2026-09-02 14:51:13,792 comm.communication             INFO       <7377.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,793 sats.satellite.EO              INFO       <7377.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,796 utils.orbital                  WARNING    <7377.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,798 gym                            INFO       <7377.00> Step reward: 0.0
2026-09-02 14:51:13,798 gym                            INFO       <7377.00> === STARTING STEP ===
2026-09-02 14:51:13,799 sats.satellite.EO              INFO       <7377.00> EO: target index 27 tasked
2026-09-02 14:51:13,799 sats.satellite.EO              INFO       <7377.00> EO: Target(tgt-7400) tasked for imaging
2026-09-02 14:51:13,801 sats.satellite.EO              INFO       <7377.00> EO: Target(tgt-7400) window enabled: 7713.3 to 7767.7
2026-09-02 14:51:13,801 sats.satellite.EO              INFO       <7377.00> EO: setting timed terminal event at 7767.7
2026-09-02 14:51:13,865 sim.simulator                  INFO       <7677.00> Max step duration reached
2026-09-02 14:51:13,866 data.base                      INFO       <7677.00> Total reward: {}
2026-09-02 14:51:13,866 comm.communication             INFO       <7677.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,869 utils.orbital                  WARNING    <7677.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,871 gym                            INFO       <7677.00> Step reward: 0.0
2026-09-02 14:51:13,872 gym                            INFO       <7677.00> === STARTING STEP ===
2026-09-02 14:51:13,872 sats.satellite.EO              INFO       <7677.00> EO: target index 26 tasked
2026-09-02 14:51:13,873 sats.satellite.EO              INFO       <7677.00> EO: Target(tgt-4266) tasked for imaging
2026-09-02 14:51:13,874 sats.satellite.EO              INFO       <7677.00> EO: Target(tgt-4266) window enabled: 7800.3 to 7915.6
2026-09-02 14:51:13,874 sats.satellite.EO              INFO       <7677.00> EO: setting timed terminal event at 7915.6
2026-09-02 14:51:13,935 sats.satellite.EO              INFO       <7916.00> EO: timed termination at 7915.6 for Target(tgt-4266) window
2026-09-02 14:51:13,936 data.base                      INFO       <7916.00> Total reward: {}
2026-09-02 14:51:13,936 comm.communication             INFO       <7916.00> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:13,937 sats.satellite.EO              INFO       <7916.00> EO: Satellite EO requires retasking
2026-09-02 14:51:13,940 utils.orbital                  WARNING    <7916.00> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:13,942 gym                            INFO       <7916.00> Step reward: 0.0
2026-09-02 14:51:13,942 gym                            INFO       <7916.00> === STARTING STEP ===
2026-09-02 14:51:13,943 sats.satellite.EO              INFO       <7916.00> EO: target index 30 tasked
2026-09-02 14:51:13,944 sats.satellite.EO              INFO       <7916.00> EO: Target(tgt-2733) tasked for imaging
2026-09-02 14:51:13,945 sats.satellite.EO              INFO       <7916.00> EO: Target(tgt-2733) window enabled: 8033.4 to 8144.3
2026-09-02 14:51:13,945 sats.satellite.EO              INFO       <7916.00> EO: setting timed terminal event at 8144.3
2026-09-02 14:51:14,011 sats.satellite.EO              INFO       <8144.50> EO: timed termination at 8144.3 for Target(tgt-2733) window
2026-09-02 14:51:14,013 data.base                      INFO       <8144.50> Total reward: {}
2026-09-02 14:51:14,013 comm.communication             INFO       <8144.50> Optimizing data communication between all pairs of satellites
2026-09-02 14:51:14,014 sats.satellite.EO              INFO       <8144.50> EO: Satellite EO requires retasking
2026-09-02 14:51:14,017 utils.orbital                  WARNING    <8144.50> Could not find eclipse transitions in next 12000.0 seconds
2026-09-02 14:51:14,018 sats.satellite.EO              WARNING    <8144.50> EO: failed battery_valid check
2026-09-02 14:51:14,019 gym                            INFO       <8144.50> Step reward: 0.0
2026-09-02 14:51:14,019 gym                            INFO       <8144.50> Episode terminated: True
2026-09-02 14:51:14,020 gym                            INFO       <8144.50> Episode truncated: False
Episode complete.

After the running the simulation, we can check the reward, number of imaged targets that were covered by clouds and that were not covered by clouds (according to the threshold set in the rewarder).

[11]:
print("Total reward:", env.unwrapped.rewarder.cum_reward)
print("Covered by clouds:", env.unwrapped.rewarder.data.cloud_covered)
print("Not covered by clouds:", env.unwrapped.rewarder.data.cloud_free)
Total reward: {'EO': np.float64(3.9515328157031426)}
Covered by clouds: {Target(tgt-3948), Target(tgt-8335), Target(tgt-4212), Target(tgt-6591), Target(tgt-7842), Target(tgt-5097), Target(tgt-9831), Target(tgt-3644), Target(tgt-4293), Target(tgt-8067)}
Not covered by clouds: {Target(tgt-2545), Target(tgt-9629), Target(tgt-9131), Target(tgt-6530), Target(tgt-4774), Target(tgt-9452), Target(tgt-186), Target(tgt-6054), Target(tgt-3226)}