28 lines
738 B
Python
28 lines
738 B
Python
from dataclasses import dataclass
|
|
from datetime import timedelta
|
|
|
|
from core.domain.map.CrnPoint import CrnPoint
|
|
from core.domain.optimization.OptimizationPointType import OptimizationPointType
|
|
|
|
|
|
@dataclass
|
|
class OptimizationPoint:
|
|
crnPoint: CrnPoint
|
|
serviceTime: timedelta
|
|
demand: int
|
|
visitFrequency: float
|
|
type: OptimizationPointType
|
|
group = None
|
|
|
|
@staticmethod
|
|
def fromJson(**kwargs) -> 'OptimizationPoint':
|
|
kwargs['serviceTime'] = timedelta(seconds=kwargs['serviceTime'])
|
|
kwargs['crnPoint'] = CrnPoint.fromJson(**kwargs['crnPoint'])
|
|
kwargs['type'] = OptimizationPointType(kwargs['type'])
|
|
|
|
return OptimizationPoint(**kwargs)
|
|
|
|
@property
|
|
def isVisited(self):
|
|
return self.visitFrequency > 0 and self.crnPoint.isVisited
|