gpt4 book ai didi

java - Optaplanner 不使用其他 BinAvailabilty 来获取分配给事件

转载 作者:行者123 更新时间:2023-12-01 17:09:14 25 4
gpt4 key购买 nike

        @PlanningEntity
public class BinAvailablity {
private int id;
private Interval interval;
private Bin bin;
private int roomMax;
@InverseRelationShadowVariable(sourceVariableName = "binAvailablity")
private List<Event> events = new ArrayList<>();
private List<Interval> nonAvailablity;
}


public class Event {

private int id;
@CustomShadowVariable(variableListenerClass = IntervalAssigningListener.class,
sources = {@PlanningVariableReference(variableName = "binAvailablity")})
private Interval interval;//assignning listener variable
private boolean isPinned;
private TotalTime totalTime;
@PlanningVariable(valueRangeProviderRefs = "binAvailablities")
private BinAvailablity binAvailablity;//plannig variable
private List<Staff> staffList;
private List<Equipment> equipmentList;
private List<Interval> nonAvailability;}

我的配置是:-

<?xml version="1.0" encoding="UTF-8"?>
<solver>
<solutionClass>com.strategy.eagle.domains.optaplanner.EventBinAssignation</solutionClass>
<entityClass>com.strategy.eagle.domains.optaplanner.Event</entityClass>
<entityClass>com.strategy.eagle.domains.optaplanner.BinAvailablity</entityClass>
<scoreDirectorFactory>
<scoreDrl>Optaplanner/EventScheduling.drl</scoreDrl>
</scoreDirectorFactory>
<termination>
<secondsSpentLimit>200</secondsSpentLimit>

<bestScoreLimit>0hard/0soft</bestScoreLimit>


</termination>


<constructionHeuristic>
<constructionHeuristicType>FIRST_FIT</constructionHeuristicType>
</constructionHeuristic>
<localSearch>

<!-- -->
<localSearchType>HILL_CLIMBING</localSearchType>
</localSearch>
</solver>

@PlanningSolution公共(public)类 EventBinAssignation {

private String id;

@PlanningScore
private HardSoftScore score;

@ProblemFactCollectionProperty
@ValueRangeProvider(id = "binAvailablities")
List<BinAvailablity> binAvailablities;

@PlanningEntityCollectionProperty
List<Event> events;

}

我已经使用 Event 和 BinAvailability 创建了两个实体。我需要将事件分配给 binAvailability。但 Optaplanner 仅将事件分配给第一个 binAvailability。 Optaplanner 没有使用任何其他 binAvailability 来分配分数卡住的事件,但它不使用任何其他 binAvaillbity 来分配具有某些特定条件的事件。所以请帮忙。

最佳答案

如果 OptaPlanner 仅将事件分配给第一个 binAvailability,则可能是因为您的硬约束不匹配(在您的 ScoreDrl 中)。打开 TRACE 日志记录并查找每个 CH 移动期间的分数 数字。

或者将 System.out.println 放入 DRL 中该约束的 then 中。或者迁移到 ConstraintStreams 并在 penalize() matchWeighter lamdba 中放置一个调试器断点。

关于java - Optaplanner 不使用其他 BinAvailabilty 来获取分配给事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61440569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com