JijModeling 1.11.0 リリースノート#

バグ修正: Interpreter が重複制約名に対してより寛容に#

JijModeling v1.10.0以降、Interpreter は同じ名前の制約を複数持つことができませんでしたが、1.9以前のバージョンではそうではありませんでした。 今回、Interpreter は重複した制約名に対してより寛容になり、以下のような挙動をするようになりました:

  • 問題ごとに制約を個別に扱うようになり、異なる問題の間で同名の制約が衝突しなくなりました。

  • 新しく評価された制約と同名の評価済制約が存在する場合、以下のいずれかの条件を満たせばエラーを引き起こしません。

    1. 定義済の forall パラメータ上では定義が一致する場合

    2. 追加される forall パラメータが以前では未定義である場合

この変更により、問題の緩和や分割の直感的な取り扱いが可能になります。

制約ヒント検出機能の改善#

  • eval_problemhints オプション引数を渡すことができるようになりました。これにより、検出する制約タイプのリストを指定できます。特定の制約タイプのみをサポートするソルバーを使用する場合に便利です。

    • hints = None(デフォルト):デフォルトの制約タイプセットを検出します(現在は OneHot のみ)。

    • hints = []:ヒント検出を完全に無効にします。

  • ヒント検出メカニズムは、代数的同値性をある程度考慮できるようになりました。

    • 例えば、次のような制約を One-Hot 制約として検出できるようになりました: $\( 0 = 1 - \sum_i (2 - 1) x_i\\ \sum_i 2 x_i + 1 = 3 \)$

  • jm.eval_problem() は、重複した変数に対して追加の制約を導き出すことができるようになりました。例えば、\(\sum_{i < 3} x_i = 1\) かつ \(x_1 = x_2\) のような制約が与えられた場合、追加的な制約 \(x_1 = 0\) を出力します。

  • jm.eval_problem() は、実行不可能な制約が検出された場合、例外を発生させるようになりました。例えば、\(\sum_{i < 0} x_i = 1\) のような入力は実行時例外となります。

その他の変更#

  • Stubファイルにより多くの型ヒントが追加されました!