Changes#

2.6.0 (2026-04-05)#

  • Add support for partitioning graphs with node and edge weights.

  • Add function to convert circle sky regions to polygons.

  • Add function to calculate approximate orientation of UVEX for a ground pass.

2.5.0 (2026-03-20)#

  • Add support for pointlike FOVs and FOVs that are nonconvex polygons.

  • The function m4opt.fov.footprint_healpix now has a default value for the target_coord argument.

2.4.0 (2026-03-06)#

  • Add exposure time models for Vera C. Rubin Observatory and Zwicky Transient Facility.

  • Update installation instructions for users of academic editions of CPLEX.

  • Drop support for Python 3.12.

2.3.1 (2026-01-23)#

  • Fix an issue where MILP optimization could terminate early before CPLEX had found a best bound. This was prone to happen after MIP restarts.

2.3.0 (2026-01-22)#

  • When available memory is limited by the --memory option, spool CPLEX’s node file to disk.

  • If the solution is aborted because the best bound falls below the objective lower cutoff, then record the solution status as aborted, lower cutoff reached.

2.2.1 (2026-01-16)#

  • Fix crash for sky maps with invalid pixels when using a fixed absolute magnitude.

2.2.0 (2026-01-15)#

  • Add support to the scheduler for pointwise distance distributions but fixed absolute magnitude.

2.1.0 (2025-12-31)#

  • Add the method m4opt.milp.Model.to_stream.

  • Add the method m4opt.utils.optimization.partition_graph_color.

2.0.1 (2025-06-12)#

  • Allow passing any options to METIS.

2.0.0 (2025-06-09)#

  • Allow each mission to have one or several different sky grids.

  • Add support for combining constraints using boolean operators (lhs | rhs, lhs & rhs, ~op).

  • The Mission.constraints property no longer accepts a list of constraints. To combine multiple constraints, use boolean operators.

  • The Mission.detector property is now optional. Only adaptive exposure time observing strategies require it to be defined.

  • Add Earth radiation belt constraint.

  • Add two new missions: Vera C. Rubin Observatory and Zwicky Transient Facility.

  • Add a mixed integer programming Traveling Salesman solver.

1.0.0 (2025-04-07)#

  • Add citation file.

  • Refactor obsever position classes to support both Earth-fixed and Earth-orbiting observers.

  • Add basic positional astronomy constraints on right ascension, declination, altitutide, azimuth, and airmass.

  • Add at-night constraint for Earth-fixed observers.

  • Add logical constraints (and, or, not).

  • Add an exact Traveling Salesman solver as a utility function.

  • Move the DustExtinction class to the m4opt.synphot.extinction module to prepare for adding other sources of extinction (e.g., atmospheric).

  • Add optional zoom inset to animation.

0.1.1 (2025-02-24)#

  • Update PyPI long description. No functional changes in this release.

0.1.0 (2025-02-24)#

  • First release.