Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 我的optaplanner解决方案没有';在解决问题开始后不久,情况不会有所改善。如何调试这个?_Debugging_Logging_Output_Optaplanner - Fatal编程技术网

Debugging 我的optaplanner解决方案没有';在解决问题开始后不久,情况不会有所改善。如何调试这个?

Debugging 我的optaplanner解决方案没有';在解决问题开始后不久,情况不会有所改善。如何调试这个?,debugging,logging,output,optaplanner,Debugging,Logging,Output,Optaplanner,在我的解决方案开始求解后不久,我只得到了初始分数的一次更新(从-54init/0hard/0medium/-33275soft到0hard/0medium/-34035soft),之后其他任何东西都不会移动(例如UI仍然显示“正在求解…”和右角的橙色波浪) 因此,我寻找更多的调试输出(由于未知的原因没有成功),试图确定是否没有执行进一步的步骤,或者这些步骤是否没有产生任何更好的结果(据我所知,分数应该有所提高)。更令人费解的是,如果我正确地克隆了一个问题事实的一个类,那么它的不确定性——也许我看

在我的解决方案开始求解后不久,我只得到了初始分数的一次更新(从-54init/0hard/0medium/-33275soft到0hard/0medium/-34035soft),之后其他任何东西都不会移动(例如UI仍然显示“正在求解…”和右角的橙色波浪)

因此,我寻找更多的调试输出(由于未知的原因没有成功),试图确定是否没有执行进一步的步骤,或者这些步骤是否没有产生任何更好的结果(据我所知,分数应该有所提高)。更令人费解的是,如果我正确地克隆了一个问题事实的一个类,那么它的不确定性——也许我看到的是没有正确地完成它的迹象


所以现在我被我的选择束缚住了,主要是缺乏与Optaplanner合作的经验(我当然想更好地了解这一点)。我知道这是一个相当基本的Optaplanner问题,但是有稍微多一点Optaplanner工作经验的人能给我一些关于我进一步调试可能性的线索吗?如果我能有更多类似于示例中发生的事情的调试输出(例如,我的logback.xml应该放在哪里)?

关于调试信息:我发现缺少与示例类似的调试日志输出的maven配方如下:

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
        <scope>runtime</scope>
    </dependency>

回写
回归经典
1.2.3
运行时
因此,在添加了该配方之后,我获得了与示例中相同的正确调试日志记录(从示例复制的logback.xml文件已正确放置在参考资料文件夹中)


调试输出进一步表明,解算器正在正确地处理各种可能性。因此,我必须开始调试约束…

是的,打开
跟踪
调试
日志记录以查看optaplanner所做的选择。是的,我一直在关注这些有用的信息(现在在一些初始问题之后,正如您所注意到的),如果打开EnvironmentMode FULL_ASSERT(这会减慢一切速度),会发生什么? 它失败了吗?它没有失败:在没有环境模式的情况下,行为保持原样。也就是说:解算器总是不断地通过其他备选方案,只是分数没有提高。我能从中扣除什么?现在,我不得不说(“承认”),这(仍然)是一个简单的问题。也许没有更好的解决办法。注释出一个约束导致了相同的行为,只是约束结果被卡在另一个值上(和现在一样保留该值),我发现分数没有损坏。不幸的是(?!),这并不是因为我没有破坏它:这是因为阴影变量没有被更新(并且保持在0的值,因此没有在相关约束的惩罚()计算中正确计数)。仍在寻找原因:/在本地搜索阶段使用哪种算法?我有类似的问题,模拟退火,但不是禁忌搜索。同样在大约15分钟后,溶液开始再次通过模拟退火发生变化。那么你运行这个算法多久了?这里使用了禁忌搜索。然而,我的发现被证明是错误的(如果你通读了这里的所有内容):我希望看到这些动作,但我没有看到任何动作。但这一发现是错误的,因为日志记录没有正确设置。所以我确实选择了移动,只是没有在日志输出中看到它们。OTOH,这不是不可能的,这取决于你的情况,一个本地搜索选择比另一个好得多。也许您应该看看如何在不同的本地搜索阶段对您的解决方案进行基准测试。