Arpit-Bansal's picture
structrue change for schedule
f6aa8e8
"""
Trainset Scheduling Optimization Package
This package provides multi-objective optimization algorithms for metro trainset scheduling.
It includes various optimization methods like Genetic Algorithm, CMA-ES, PSO, and Simulated Annealing.
Main classes:
- TrainsetSchedulingOptimizer: Main interface for optimization
- OptimizationConfig: Configuration parameters
- OptimizationResult: Result container
Usage:
from greedyOptim import optimize_trainset_schedule, OptimizationConfig
config = OptimizationConfig(required_service_trains=20, min_standby=3)
result = optimize_trainset_schedule(data, method='ga', config=config)
"""
from .models import (
OptimizationResult, OptimizationConfig, TrainsetConstraints,
ScheduleResult, ScheduleTrainset, ServiceBlock, FleetSummary,
OptimizationMetrics, ScheduleAlert, TrainStatus, MaintenanceType, AlertSeverity,
StationStop, Trip
)
from .evaluator import TrainsetSchedulingEvaluator
from .genetic_algorithm import GeneticAlgorithmOptimizer
from .advanced_optimizers import CMAESOptimizer, ParticleSwarmOptimizer, SimulatedAnnealingOptimizer
from .hybrid_optimizers import (
MultiObjectiveOptimizer, AdaptiveOptimizer, EnsembleOptimizer,
HyperParameterOptimizer, optimize_with_hybrid_methods
)
from .scheduler import (
TrainsetSchedulingOptimizer,
optimize_trainset_schedule,
compare_optimization_methods
)
from .error_handling import (
safe_optimize, DataValidator, OptimizationError,
DataValidationError, ConstraintViolationError, ConfigurationError
)
from .schedule_generator import ScheduleGenerator, generate_schedule_from_result
from .station_loader import (
StationDataLoader, get_station_loader, get_route_distance, get_terminals,
Station, RouteInfo
)
from .service_blocks import ServiceBlockGenerator
# Optional OR-Tools integration
try:
from .ortools_optimizers import (
optimize_with_ortools, check_ortools_availability,
CPSATOptimizer, MIPOptimizer
)
ORTOOLS_AVAILABLE = True
except ImportError:
ORTOOLS_AVAILABLE = False
optimize_with_ortools = None
check_ortools_availability = None
CPSATOptimizer = None
MIPOptimizer = None
__version__ = "1.0.0"
__author__ = "Metro Optimization Team"
__all__ = [
'OptimizationResult',
'OptimizationConfig',
'TrainsetConstraints',
'ScheduleResult',
'ScheduleTrainset',
'ServiceBlock',
'FleetSummary',
'OptimizationMetrics',
'ScheduleAlert',
'TrainStatus',
'MaintenanceType',
'AlertSeverity',
'TrainsetSchedulingEvaluator',
'GeneticAlgorithmOptimizer',
'CMAESOptimizer',
'ParticleSwarmOptimizer',
'SimulatedAnnealingOptimizer',
'MultiObjectiveOptimizer',
'AdaptiveOptimizer',
'EnsembleOptimizer',
'HyperParameterOptimizer',
'TrainsetSchedulingOptimizer',
'optimize_trainset_schedule',
'compare_optimization_methods',
'optimize_with_hybrid_methods',
'safe_optimize',
'DataValidator',
'OptimizationError',
'DataValidationError',
'ConstraintViolationError',
'ConfigurationError',
'ScheduleGenerator',
'generate_schedule_from_result',
'StationDataLoader',
'get_station_loader',
'get_route_distance',
'get_terminals',
'Station',
'RouteInfo',
'ServiceBlockGenerator'
]
# Add OR-Tools to exports if available
if ORTOOLS_AVAILABLE:
__all__.extend([
'optimize_with_ortools',
'check_ortools_availability',
'CPSATOptimizer',
'MIPOptimizer'
])