0

Drools のユーザー フォーラムに投稿してみましたが、何の反応も得られませんでした (彼らは忙しいだけだと思います)。

「最高のスコア」を提供していないように見えるため、得られた結果に非常に混乱しています。ログ出力の一部を次に示します。

[construction steps] 
2013-03-13 08:00:08,305 [com....] INFO  Phase constructionHeuristic ended: step total (60), time spend (2222), best score (-200hard/-2780soft). 
[local search steps] 
2013-03-13 08:00:21,807 [com....] INFO  Phase localSearch ended: step total (42), time spend (15724), best score (0hard/-2495soft). 
2013-03-13 08:00:21,807 [com....] INFO  Solving ended: time spend (15724), best score (0hard/-2495soft), average calculate count per second (3748). 

ただし、返される結果には壊れたハード制約が含まれています (ログには「解決が終了しました: 時間 (15724)、最高のスコア (0hard/-2495soft)」と明確に記載されています) - スコア付きの結果が得られます - 200hard/-2495soft (建設フェーズのハード スコアとローカル検索フェーズのソフト スコアのようです)。これが本来あるべき姿ですか?マニュアルの何かを見逃していませんか (私はそれを読みましたが、完全には消化していません)?

これが私のソルバー構成のほとんどです(潜在的に関連する部分のみ):

<termination>
        <terminationCompositionStyle>OR</terminationCompositionStyle>
        <maximumSecondsSpend>60</maximumSecondsSpend>
        <scoreAttained>0hard/0soft</scoreAttained>
</termination>

<constructionHeuristic>
        <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
    <constructionHeuristicPickEarlyType>FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING</constructionHeuristicPickEarlyType>  
</constructionHeuristic>

<localSearch>
        <termination>
                <terminationCompositionStyle>OR</terminationCompositionStyle>
                <maximumUnimprovedStepCount>20</maximumUnimprovedStepCount>
                <scoreAttained>0hard/0soft</scoreAttained>
        </termination>
        <unionMoveSelector>
            <changeMoveSelector>
              <entitySelector>
                <entityFilterClass>com.....RequiredTypeEntityFilter</entityFilterClass>
              </entitySelector>
            </changeMoveSelector>
            <swapMoveSelector>
              <entitySelector>
                <entityFilterClass>com.....RequiredTypeEntityFilter</entityFilterClass>
              </entitySelector>
            </swapMoveSelector>
        </unionMoveSelector>
        <acceptor>
              <solutionTabuSize>1000</solutionTabuSize>
              <planningEntityTabuSize>7</planningEntityTabuSize>
        </acceptor>
        <forager>
                <minimalAcceptedSelection>1000</minimalAcceptedSelection>
        </forager>
</localSearch>

前もって感謝します!

編集:ここに役立つかもしれないもう少しの情報があります...上記のように、私の最高の(ハード)スコアは0であると言われていますが、それが提供するソリューションにはハード制約違反が含まれています。制約を出力するためのコードをいくつか追加しました (DroolsScoreDirector を使用して WorkingMemory を取得し、最終的に ConstraintOccurrences を取得します)... この出力はハード制約も示しています。

ConstraintType: NEGATIVE_HARD, RuleID: endLocationMustMatchStartLocation, Causes:...
4

1 に答える 1