Add instance-level features to instance.features

This commit is contained in:
2021-03-31 09:14:06 -05:00
parent 0f5a6745a4
commit 5db4addfa5
3 changed files with 18 additions and 1 deletions

View File

@@ -6,7 +6,7 @@ import numbers
import collections
from typing import TYPE_CHECKING, Dict
from miplearn.types import Features, ConstraintFeatures
from miplearn.types import Features, ConstraintFeatures, InstanceFeatures
if TYPE_CHECKING:
from miplearn import InternalSolver, Instance
@@ -21,6 +21,7 @@ class FeaturesExtractor:
def extract(self, instance: "Instance") -> Features:
return {
"Instance": self._extract_instance(instance),
"Constraints": self._extract_constraints(instance),
"Variables": self._extract_variables(instance),
}
@@ -83,3 +84,7 @@ class FeaturesExtractor:
"User features": user_features,
}
return constraints
@staticmethod
def _extract_instance(instance: "Instance") -> InstanceFeatures:
return {"User features": instance.get_instance_features()}

View File

@@ -73,6 +73,14 @@ LearningSolveStats = TypedDict(
total=False,
)
InstanceFeatures = TypedDict(
"InstanceFeatures",
{
"User features": List[float],
},
total=False,
)
VariableFeatures = TypedDict(
"VariableFeatures",
{
@@ -97,6 +105,7 @@ ConstraintFeatures = TypedDict(
Features = TypedDict(
"Features",
{
"Instance": InstanceFeatures,
"Variables": Dict[str, Dict[VarIndex, VariableFeatures]],
"Constraints": Dict[str, ConstraintFeatures],
},