Skip to content

Commit a6b7de9

Browse files
committed
copilot
1 parent 69bdc3c commit a6b7de9

5 files changed

Lines changed: 13 additions & 10 deletions

File tree

core/src/main/java/ai/timefold/solver/core/impl/bavet/common/tuple/ActivitySupport.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public interface ActivitySupport {
9595
* @return true if this lifecycle can produce tuples
9696
*/
9797
default boolean isActive() {
98-
throw new IllegalStateException("Impossible state: node (%s) not yet called initialized."
98+
throw new IllegalStateException("Impossible state: node (%s) not yet initialized (afterAllFactsInserted not called)."
9999
.formatted(this));
100100
}
101101

core/src/main/java/ai/timefold/solver/core/impl/neighborhood/stream/enumerating/DatasetSession.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import java.util.Map;
55
import java.util.Objects;
66

7-
import ai.timefold.solver.core.impl.bavet.AbstractBavetNodeNetwork;
87
import ai.timefold.solver.core.impl.bavet.AbstractSession;
98
import ai.timefold.solver.core.impl.bavet.common.tuple.UniTuple;
9+
import ai.timefold.solver.core.impl.neighborhood.NeighborhoodsBavetNodeNetwork;
1010
import ai.timefold.solver.core.impl.neighborhood.stream.enumerating.common.AbstractDataset;
1111
import ai.timefold.solver.core.impl.neighborhood.stream.enumerating.common.AbstractDatasetInstance;
1212
import ai.timefold.solver.core.impl.neighborhood.stream.enumerating.common.AbstractLeftDataset;
@@ -17,14 +17,15 @@
1717
import org.jspecify.annotations.NullMarked;
1818

1919
@NullMarked
20-
public final class DatasetSession<Solution_> extends AbstractSession {
20+
public final class DatasetSession<Solution_>
21+
extends AbstractSession<NeighborhoodsBavetNodeNetwork> {
2122

2223
private final Map<AbstractDataset<Solution_>, AbstractDatasetInstance<Solution_, ?>> leftDatasetInstanceMap =
2324
new IdentityHashMap<>();
2425
private final Map<AbstractDataset<Solution_>, AbstractDatasetInstance<Solution_, ?>> rightDatasetInstanceMap =
2526
new IdentityHashMap<>();
2627

27-
DatasetSession(AbstractBavetNodeNetwork nodeNetwork) {
28+
DatasetSession(NeighborhoodsBavetNodeNetwork nodeNetwork) {
2829
super(nodeNetwork);
2930
}
3031

core/src/main/java/ai/timefold/solver/core/impl/neighborhood/stream/enumerating/DatasetSessionFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import java.util.List;
77
import java.util.Set;
88

9-
import ai.timefold.solver.core.impl.bavet.AbstractBavetNodeNetwork;
109
import ai.timefold.solver.core.impl.bavet.common.AbstractRootNode;
1110
import ai.timefold.solver.core.impl.bavet.uni.AbstractForEachUniNode;
11+
import ai.timefold.solver.core.impl.neighborhood.NeighborhoodsBavetNodeNetwork;
1212
import ai.timefold.solver.core.impl.neighborhood.stream.enumerating.common.AbstractEnumeratingStream;
1313
import ai.timefold.solver.core.impl.neighborhood.stream.enumerating.common.DataNodeBuildHelper;
1414
import ai.timefold.solver.core.impl.score.director.SessionContext;
@@ -38,7 +38,7 @@ public DatasetSession<Solution_> buildSession(SessionContext<Solution_> context)
3838
return session;
3939
}
4040

41-
private AbstractBavetNodeNetwork buildNodeNetwork(Set<AbstractEnumeratingStream<Solution_>> enumeratingStreamSet,
41+
private NeighborhoodsBavetNodeNetwork buildNodeNetwork(Set<AbstractEnumeratingStream<Solution_>> enumeratingStreamSet,
4242
DataNodeBuildHelper<Solution_> buildHelper) {
4343
var declaredClassToNodeMap = new LinkedHashMap<Class<?>, List<AbstractRootNode<?>>>();
4444
var nodeList = buildHelper.buildNodeList(enumeratingStreamSet, buildHelper,

core/src/main/java/ai/timefold/solver/core/impl/neighborhood/stream/enumerating/common/AbstractDatasetInstance.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public abstract class AbstractDatasetInstance<Solution_, Tuple_ extends Tuple>
1313

1414
private final AbstractDataset<Solution_> parent;
1515
protected final int entryStoreIndex;
16+
private boolean upstreamCanProduceTuples;
1617

1718
protected AbstractDatasetInstance(AbstractDataset<Solution_> parent, int entryStoreIndex) {
1819
this.parent = Objects.requireNonNull(parent);
@@ -21,12 +22,12 @@ protected AbstractDatasetInstance(AbstractDataset<Solution_> parent, int entrySt
2122

2223
@Override
2324
public void afterAllFactsInserted(boolean upstreamCanProduceTuples) {
24-
// TODO implement
25+
this.upstreamCanProduceTuples = upstreamCanProduceTuples;
2526
}
2627

2728
@Override
2829
public boolean isActive() {
29-
return true; // TODO implement
30+
return upstreamCanProduceTuples;
3031
}
3132

3233
public AbstractDataset<Solution_> getParent() {

docs/src/modules/ROOT/pages/constraints-and-score/performance.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ the constraint may still be deactivated at runtime,
9393
if the engine can prove that it will never contribute to the score.
9494
For example, a constraint using `forEach(Visit.class)` will be deactivated
9595
if there are no `Visit` instances in the solution.
96-
This is inferior though to manually setting the constraint weight to zero,
96+
97+
This is inferior to manually setting the constraint weight to zero,
9798
as the engine can only perform optimizations it can guarantee are safe
98-
based on the information it has.
99+
based on the limited information it has.
99100
With full understanding of the domain,
100101
you are in a much better position to know which constraints are relevant and which are not,
101102
and you can set the weights accordingly.

0 commit comments

Comments
 (0)