32 lines
695 B
Python
32 lines
695 B
Python
from __future__ import annotations
|
|
from typing import TYPE_CHECKING
|
|
|
|
from pydantic import BaseModel
|
|
from typing import Optional
|
|
|
|
from pulp import lpSum
|
|
|
|
if TYPE_CHECKING:
|
|
from models.solver_run import SolverRun
|
|
from models.problem import Problem
|
|
|
|
class Target(BaseModel):
|
|
theta: float
|
|
value: float
|
|
result: Optional[float] = None
|
|
drift: float = 0.0
|
|
|
|
@classmethod
|
|
def max_drift(cls) -> int:
|
|
return 15
|
|
|
|
@classmethod
|
|
def max_drift_increment(cls) -> int:
|
|
return 1 # 10%
|
|
|
|
def minimum(self) -> float:
|
|
return self.value - (self.value * self.drift)
|
|
|
|
def maximum(self) -> float:
|
|
return self.value + (self.value * self.drift)
|