起诉程序:Optaplanner:在起诉书列表中自定义包含

tl;dr在起诉书列表中,是否有一种方法可以仅包含(例如)来自BiConstraintStream<A, B>的对象A?除了这个问题之外,是否可以在ProblemFact的构造期间在ProblemFact上设置对PlanningEntitys 的引用,以便稍后在计算期间快速引用它们?

完整的问题:

我目前有一个约束,看起来大致如下:

        return constraintFactory
                .forEach(Partition.class)
                .groupBy(Partition::getStudent, toList())
                .filter((student, partitions) -> student.getMinEnrollments() != null)
                .penalize("Not enough hours enrolled",
                        HardSoftScore.ONE_SOFT,
                        (student, partitionList) -> student.getMinEnrollments() - partitionList.stream().filter(Partition::getEnrolled).count();
                );

这给了我我想要的惩罚,在我的情况下,对每个没有足够注册的学生的惩罚。

解决后,当我查看起诉书清单时,我看到类似

        -12soft: justification (STUDENT_1) has 1 matches:
            -12soft: constraint (Not enough hours enrolled)
        -12soft: justification ([List, Of, Partition, Objects, ...]) has 1 matches:
            -12soft: constraint (Not enough hours enrolled)
        -8soft: justification (STUDENT_2) has 1 matches:
            -8soft: constraint (Not enough hours enrolled)
        ...

这对我来说(一些实验似乎证实了这一点),(Uni,Bi,Tri,Quad)ConstraintStream 的每个部分都在起诉书列表中,我想这在某种程度上是有意义的。

在我的用例中(因为我想使用起诉书列表),对于这个约束,我只希望学生出现在这个列表中,而不是参与列表。

我尝试过的一件事是创建一个 BiConstraintStream & lt;学生,整数 & gt;其中“整数”是我想要设置的惩罚,并以类似的结尾

.penalize("Not enough hours enrolled",
                HardSoftScore.ONE_SOFT,
                (student, penalty) -> penalty
        );

这在理论上是有效的(结果正确),但我仍然得到原始数据作为我的起诉书清单的一部分。

最后我尝试的是,在我的 PlanningSolution 的构建过程中,我设置了一个列表Partition对象(我的PlanningEntitys)在我的Student对象是 ProblemFacts。

        return constraintFactory
                .forEach(Student.class)
                .filter(student -> student.getMinEnrollments() != null)
                .penalize("Not enough hours enrolledv2",
                        HardSoftScore.ONE_SOFT,
                        (student) -> student.getMinEnrollments() - student.getPartitions().filter(Partition::getEnrolled).count();
                );

我想这将是更有效的,因为我在初始化时间预先计算参与和学生之间的关系,而不是在每个惩罚计算(学生不是参与计划变量,所以没有问题)。

然而,这是行不通的,因为在约束计算点 student.getPartitions()对象不再对应于我最初构建的 PlanningEntities(我猜 Optaplanner 做了一些克隆这些对象,这意味着引用不能这样使用?)

有没有办法实现我想要的?另请参阅上面的 tl;dr。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(409)
Eternal:具有结构的永久存储模式(eternal pattern)
上一篇
西门子流量累计程序:寻找西门子之星的中心(siemens star)
下一篇

相关推荐

  • 客户投诉程序:投诉存储状态表(ever table in sap)

    关于客户投诉程序的问题,在ever table in sap中经常遇到,我正在尝试下载 SAPQPRS表,以获取 [物理样品,材料编号,批次和物理样品状态(样品已存储 & amp;样品存在)] 的列表。我正在使用 SAP.Net Connector 调用功能模块RFC_READ_TABLE读取表QPRS。…

    2024-01-14 10:56:53
    0 86 94
  • 加载资源文件失败:如何从资源文件夹加载 Sprites[]

    关于加载资源文件失败的问题,在the sprites resources中经常遇到,我在 Unity 的 2D 游戏。…

    2024-01-31 12:09:48
    0 82 21
  • 小程序底部导航栏:自定义底部导航栏布局(bottom navigation bar)

    关于小程序底部导航栏的问题,在bottom navigation bar中经常遇到,我想创建以下自定义BottomNavigationBar。…

    2023-10-20 09:19:47
    0 90 89
  • At ra:'read-ra' 与直接赋值

    关于At ra的问题,在bash read -t中经常遇到,在 bash(版本 3)脚本中,我想保存传递的命令行参数,以便我可以迭代它们几次(使用 shift)并可能剥离其中的一些。…

    2024-02-01 11:14:02
    0 88 58
  • Iphone主题:jQuery移动 iPhone主题

    关于Iphone主题的问题,在mobileiphone中经常遇到,上网,我没有找到 jQuery Mobile 的 iPhone 主题。可能有人已经做到了?…

    2024-02-03 15:21:59
    0 46 70
  • 魅族m8是什么系统:在指令编码表中使用“r/m8”是什么意思

    关于魅族m8是什么系统的问题,在what does m8 mean中经常遇到,来自this page的ADD指令文档具有下表的各种编码:…

    2024-01-24 16:20:50
    0 10 55
  • Jj网页:在JS或jQuery中将格式日期 jj-mm-aaaa更改为jj/mm/aaaa

    关于Jj网页的问题,在aaaa mm jj中经常遇到,对不起,我是 Js 的初学者。在我的输入中,格式日期如下…

    2023-12-30 08:16:25
    0 83 98
  • Wang meng xi:AdobeReaderXI未打开评论

    关于Wang meng xi的问题,在adobe reader xi vs dc中经常遇到,我使用 adobe reader 为学生写评论,因为我正在标记 (我是一名导师)。标记大约 50 个作业后,我回去检查我写的一些评论,突然我无法打开它们 (评论)。我可以看到评论贴纸 / 图标,但无法单击 / 查看评论,我不确定发生了什么。我使用 adobe reader 版本 11。…

    2023-12-23 15:07:11
    0 26 65

发表评论

登录 后才能评论

评论列表(62条)