File size: 3,547 Bytes
33c9f7f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1b2c6dc
 
 
f6aa8e8
 
1b2c6dc
33c9f7f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1b2c6dc
aece385
 
 
 
 
33c9f7f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1b2c6dc
 
 
 
 
 
 
 
 
33c9f7f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1b2c6dc
 
aece385
 
 
 
 
 
 
 
33c9f7f
737c68a
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
"""
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'
    ])