jcunit's blog

JCUnitの開発日誌(ログ)です。"その時点での"JCUnit作者の理解や考え、開発状況を日本語で書きます。

「禁則処理」について

Constraint Handlingについてだが、率直にいう。0.7.xの制約処理(禁則処理)はたぶん、バグだらけだ。 JCUnitで制約を取り扱う必要があるなら、0.8.xを使って欲しい。

どちらもIPO-G系のアルゴリズムに制約処理を埋め込んだもので、制約に違反するタプルが母体アルゴリズムによって選ばれると、制約回避のためのロジックが実行される作りだ。0.8.xではJava8の恩恵を素直に活かして簡潔な実装になっているし、メモ化による高速化の恩恵も受けている。0.7.xのロジックは複雑で、自然言語では説明しがたい。テストはしているが、設計自体が言語化しにくいのでおそらく不十分だろう。

また、制約を取り扱うためのインタフェースも0.8.xはかなりわかりやすいはずだ。今から使いはじめてくれる人がJCUnit 0.7.xを使う理由はほぼないと思う。

ぜひ0.8.xを使って欲しい。最近、「いわゆる禁則処理。」という過去のエントリへのアクセスが多いようなので、告知がてらポストする次第である。