|
|
@ -204,17 +204,26 @@ class StaticLazyConstraintsComponent(Component):
|
|
|
|
x: Dict[Hashable, List[List[float]]] = {}
|
|
|
|
x: Dict[Hashable, List[List[float]]] = {}
|
|
|
|
y: Dict[Hashable, List[List[float]]] = {}
|
|
|
|
y: Dict[Hashable, List[List[float]]] = {}
|
|
|
|
cids: Dict[Hashable, List[str]] = {}
|
|
|
|
cids: Dict[Hashable, List[str]] = {}
|
|
|
|
assert sample.after_load is not None
|
|
|
|
instance_features = sample.get("instance_features_user")
|
|
|
|
constraints = sample.after_load.constraints
|
|
|
|
constr_features = sample.get("lp_constr_features")
|
|
|
|
assert constraints is not None
|
|
|
|
constr_names = sample.get("constr_names")
|
|
|
|
assert constraints.names is not None
|
|
|
|
constr_categories = sample.get("constr_categories")
|
|
|
|
assert constraints.lazy is not None
|
|
|
|
constr_lazy = sample.get("constr_lazy")
|
|
|
|
assert constraints.categories is not None
|
|
|
|
lazy_enforced = sample.get("lazy_enforced")
|
|
|
|
for (cidx, cname) in enumerate(constraints.names):
|
|
|
|
if constr_features is None:
|
|
|
|
|
|
|
|
constr_features = sample.get("constr_features_user")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assert instance_features is not None
|
|
|
|
|
|
|
|
assert constr_features is not None
|
|
|
|
|
|
|
|
assert constr_names is not None
|
|
|
|
|
|
|
|
assert constr_categories is not None
|
|
|
|
|
|
|
|
assert constr_lazy is not None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (cidx, cname) in enumerate(constr_names):
|
|
|
|
# Initialize categories
|
|
|
|
# Initialize categories
|
|
|
|
if not constraints.lazy[cidx]:
|
|
|
|
if not constr_lazy[cidx]:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
category = constraints.categories[cidx]
|
|
|
|
category = constr_categories[cidx]
|
|
|
|
if category is None:
|
|
|
|
if category is None:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
if category not in x:
|
|
|
|
if category not in x:
|
|
|
@ -223,18 +232,12 @@ class StaticLazyConstraintsComponent(Component):
|
|
|
|
cids[category] = []
|
|
|
|
cids[category] = []
|
|
|
|
|
|
|
|
|
|
|
|
# Features
|
|
|
|
# Features
|
|
|
|
sf = sample.after_load
|
|
|
|
features = list(instance_features)
|
|
|
|
if sample.after_lp is not None:
|
|
|
|
features.extend(constr_features[cidx])
|
|
|
|
sf = sample.after_lp
|
|
|
|
|
|
|
|
assert sf.instance is not None
|
|
|
|
|
|
|
|
assert sf.constraints is not None
|
|
|
|
|
|
|
|
features = list(sf.instance.to_list())
|
|
|
|
|
|
|
|
features.extend(sf.constraints.to_list(cidx))
|
|
|
|
|
|
|
|
x[category].append(features)
|
|
|
|
x[category].append(features)
|
|
|
|
cids[category].append(cname)
|
|
|
|
cids[category].append(cname)
|
|
|
|
|
|
|
|
|
|
|
|
# Labels
|
|
|
|
# Labels
|
|
|
|
lazy_enforced = sample.get("lazy_enforced")
|
|
|
|
|
|
|
|
if lazy_enforced is not None:
|
|
|
|
if lazy_enforced is not None:
|
|
|
|
if cname in lazy_enforced:
|
|
|
|
if cname in lazy_enforced:
|
|
|
|
y[category] += [[False, True]]
|
|
|
|
y[category] += [[False, True]]
|
|
|
|