2011-07-08 8 views
1

スコア。しかし、私はスコアを使用する方法を見ることができません。 configがDroolsのは、だから私はDroolsのでカスタムスコアを作成しました

<scoreDefinition> 

タグを持っていますが、SIMPLEまたはHARD_AND_SOFTよりも、この他の内側に何かを置くと、エラーが発生します。

私が作成したスコアを使用するようにソルバーを構成するにはどうすればよいのでしょうか?ドキュメントはこれを示唆しているようですが、詳細には触れません。私が見ることができるもの、恥であるカスタムスコアはサポートがない可能性があるため

答えて

3

これが可能(通常の練習)を意味するものではなく、バリケードがありますました。私はちょうどこのドキュメント追加

は、カスタムの実装は、カスタムスコアを実装するには

スコア、あなた「はまた、カスタムScoreDefinitionを実装する必要がありますでしょう。 AbstractScoreDefinitionを拡張し(HardAndSoftScoreDefinitionまたはSimpleScoreDefinitionを貼り付けることが望ましい)、そこから開始します。

次に、あなたのSolverConfig.xmlでカスタムScoreDefinitionあなたをフック:

<scoreDefinition> 
    <scoreDefinitionClass>org.drools.planner.examples.my.score.definition.MyScoreDefinition</scoreDefinitionClass> 
</scoreDefinition> 

通行止め

を私は5.3または5.4用の修正ちゃうバリケードがあります:

をScoreDefinitionConfigありこのコード:

/** 
* @TODO score-in-solution refactor 
*/ 
public ScoreCalculator buildScoreCalculator() { 
    if (scoreDefinitionType != null) { 
     switch (scoreDefinitionType) { 
      case SIMPLE: 
       return new SimpleScoreCalculator(); 
      case SIMPLE_DOUBLE: 
       return new SimpleDoubleScoreCalculator(); 
      case HARD_AND_SOFT: 
       return new DefaultHardAndSoftConstraintScoreCalculator(); 
      default: 
       throw new IllegalStateException("The scoreDefinitionType (" + scoreDefinitionType 
         + ") is not implemented"); 
     } 
    } else { 
     return new SimpleScoreCalculator(); 
    } 
} 

これに対処する1つの方法は、カスタムSelector、Acceptor、またはForagerを使用するセクションのマニュアルに記載されているように、ScoreDefinitionConfigを拡張してそのメソッドを上書きすることです。

+0

追跡する問題は次のとおりです。https://issues.jboss.org/browse/JBRULES-3160 –

1

... 私はScoreDefinitionConfigクラスを確認し、私はこれを見た:だから

    switch (scoreDefinitionType) { 
       case SIMPLE: 
        return new SimpleScoreDefinition(); 
       case HARD_AND_SOFT: 
        return new HardAndSoftScoreDefinition(); 
       default: 
        throw new IllegalStateException("scoreDefinitionType (" 
          + scoreDefinitionType + ") not implemented"); 

を、SIMPLE以外HARD_AND_SOFTはそれをカットしません...

これに関する洞察はありますか?

KR、 ルイス

+0

ScoreDefinitionConfigには、「scoreDefinitionType」の代わりに「scoreDefinitionClass」があります。これはカスタムスコアを使用するためのものです。他の答えを見てください。 –

関連する問題