public abstract class BavetAbstractTriConstraintStream<Solution_,A,B,C> extends BavetAbstractConstraintStream<Solution_> implements InnerTriConstraintStream<A,B,C>
Modifier and Type | Field and Description |
---|---|
protected List<BavetAbstractTriConstraintStream<Solution_,A,B,C>> |
childStreamList |
constraintFactory
Constructor and Description |
---|
BavetAbstractTriConstraintStream(BavetConstraintFactory<Solution_> constraintFactory) |
Modifier and Type | Method and Description |
---|---|
protected void |
addChildStream(BavetAbstractTriConstraintStream<Solution_,A,B,C> childStream) |
protected void |
createChildNodeChains(BavetNodeBuildPolicy<Solution_> buildPolicy,
Score<?> constraintWeight,
int nodeOrder,
BavetAbstractTriNode<A,B,C> node) |
protected abstract BavetAbstractTriNode<A,B,C> |
createNode(BavetNodeBuildPolicy<Solution_> buildPolicy,
Score<?> constraintWeight,
int nodeOrder,
BavetAbstractTriNode<A,B,C> parentNode) |
BavetAbstractTriNode<A,B,C> |
createNodeChain(BavetNodeBuildPolicy<Solution_> buildPolicy,
Score<?> constraintWeight,
int nodeOrder,
BavetAbstractTriNode<A,B,C> parentNode) |
BavetAbstractTriConstraintStream<Solution_,A,B,C> |
filter(TriPredicate<A,B,C> predicate)
Exhaustively test each tuple of facts against the
TriPredicate
and match if TriPredicate.test(Object, Object, Object) returns true. |
Constraint |
impactScore(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
boolean positive) |
Constraint |
impactScore(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToIntTriFunction<A,B,C> matchWeigher,
boolean positive) |
Constraint |
impactScoreBigDecimal(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
TriFunction<A,B,C,BigDecimal> matchWeigher,
boolean positive) |
Constraint |
impactScoreConfigurable(String constraintPackage,
String constraintName,
boolean positive) |
Constraint |
impactScoreConfigurable(String constraintPackage,
String constraintName,
ToIntTriFunction<A,B,C> matchWeigher,
boolean positive) |
Constraint |
impactScoreConfigurableBigDecimal(String constraintPackage,
String constraintName,
TriFunction<A,B,C,BigDecimal> matchWeigher,
boolean positive) |
Constraint |
impactScoreConfigurableLong(String constraintPackage,
String constraintName,
ToLongTriFunction<A,B,C> matchWeigher,
boolean positive) |
Constraint |
impactScoreLong(String constraintPackage,
String constraintName,
Score<?> constraintWeight,
ToLongTriFunction<A,B,C> matchWeigher,
boolean positive) |
protected BavetAbstractTriNode<A,B,C> |
processNode(BavetNodeBuildPolicy<Solution_> buildPolicy,
int nodeOrder,
BavetAbstractTriNode<A,B,C> parentNode,
BavetAbstractTriNode<A,B,C> node) |
buildConstraint, buildConstraintConfigurable, getConstraintFactory, getFromStreamList
buildConstraintWeightExtractor, buildConstraintWeightExtractor, penalize, penalizeConfigurable, reward, rewardConfigurable, validateConstraintId
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
penalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLong
penalize, penalizeBigDecimal, penalizeConfigurable, penalizeConfigurableBigDecimal, penalizeConfigurableLong, penalizeLong, reward, rewardBigDecimal, rewardConfigurable, rewardConfigurableBigDecimal, rewardConfigurableLong, rewardLong
getConstraintFactory, penalize, penalize, penalizeConfigurable, penalizeConfigurable, reward, reward, rewardConfigurable, rewardConfigurable
public BavetAbstractTriConstraintStream(BavetConstraintFactory<Solution_> constraintFactory)
protected void addChildStream(BavetAbstractTriConstraintStream<Solution_,A,B,C> childStream)
public BavetAbstractTriConstraintStream<Solution_,A,B,C> filter(TriPredicate<A,B,C> predicate)
TriConstraintStream
TriPredicate
and match if TriPredicate.test(Object, Object, Object)
returns true.
Important: This is slower and less scalable than BiConstraintStream#join(UniConstraintStream, TriJoiner[])
with a proper TriJoiner
predicate (such as Joiners.equal(BiFunction, Function)
,
because the latter applies hashing and/or indexing, so it doesn't create every combination just to filter it out.
filter
in interface TriConstraintStream<A,B,C>
predicate
- never nullpublic final Constraint impactScore(String constraintPackage, String constraintName, Score<?> constraintWeight, boolean positive)
impactScore
in class AbstractConstraintStream<Solution_>
public final Constraint impactScore(String constraintPackage, String constraintName, Score<?> constraintWeight, ToIntTriFunction<A,B,C> matchWeigher, boolean positive)
impactScore
in interface InnerTriConstraintStream<A,B,C>
public final Constraint impactScoreLong(String constraintPackage, String constraintName, Score<?> constraintWeight, ToLongTriFunction<A,B,C> matchWeigher, boolean positive)
impactScoreLong
in interface InnerTriConstraintStream<A,B,C>
public final Constraint impactScoreBigDecimal(String constraintPackage, String constraintName, Score<?> constraintWeight, TriFunction<A,B,C,BigDecimal> matchWeigher, boolean positive)
impactScoreBigDecimal
in interface InnerTriConstraintStream<A,B,C>
public final Constraint impactScoreConfigurable(String constraintPackage, String constraintName, boolean positive)
impactScoreConfigurable
in class AbstractConstraintStream<Solution_>
public final Constraint impactScoreConfigurable(String constraintPackage, String constraintName, ToIntTriFunction<A,B,C> matchWeigher, boolean positive)
impactScoreConfigurable
in interface InnerTriConstraintStream<A,B,C>
public final Constraint impactScoreConfigurableLong(String constraintPackage, String constraintName, ToLongTriFunction<A,B,C> matchWeigher, boolean positive)
impactScoreConfigurableLong
in interface InnerTriConstraintStream<A,B,C>
public final Constraint impactScoreConfigurableBigDecimal(String constraintPackage, String constraintName, TriFunction<A,B,C,BigDecimal> matchWeigher, boolean positive)
impactScoreConfigurableBigDecimal
in interface InnerTriConstraintStream<A,B,C>
public BavetAbstractTriNode<A,B,C> createNodeChain(BavetNodeBuildPolicy<Solution_> buildPolicy, Score<?> constraintWeight, int nodeOrder, BavetAbstractTriNode<A,B,C> parentNode)
protected BavetAbstractTriNode<A,B,C> processNode(BavetNodeBuildPolicy<Solution_> buildPolicy, int nodeOrder, BavetAbstractTriNode<A,B,C> parentNode, BavetAbstractTriNode<A,B,C> node)
protected void createChildNodeChains(BavetNodeBuildPolicy<Solution_> buildPolicy, Score<?> constraintWeight, int nodeOrder, BavetAbstractTriNode<A,B,C> node)
protected abstract BavetAbstractTriNode<A,B,C> createNode(BavetNodeBuildPolicy<Solution_> buildPolicy, Score<?> constraintWeight, int nodeOrder, BavetAbstractTriNode<A,B,C> parentNode)
Copyright © 2006–2019 JBoss by Red Hat. All rights reserved.