JijModeling 2.3.2 リリースノート#

バグ修正#

制約検出の大幅なパフォーマンス改善#

制約検出機能が大幅に高速化し、旧来は一時間経っても完了しなかったモデルであっても 1 秒程度で完了するようになりました。 速度面から jijmodeling.Problem.eval()jijmodeling.Compiler.eval_problem()constraint_detection=False を指定していたモデルがある場合、いちど constraint_detection オプションを省略し有効化した状態で実行してみてください。

NamedExpr が単独のシェイプとして指定できるように#

これまでのバージョンでは、NamedExpr を長さとする一次元の配列を、以下のように直接シェイプに指定して定義するとエラーとなっていました:

import jijmodeling as jm

problem = jm.Problem("Test Problem")
w = problem.Float("w", ndim=1)
N = problem.NamedExpr("N", w.len_at(0))
v = problem.Float("v", shape=N)  # Errors!
Invalid comprehension syntax detected! Perhaps you used comprehension syntax outside decorator API, or used Python's builtin `sum` function etc., instead of `jijmodeling.sum`?

本リリースから、以下のように問題なく実行できるようになりました:

import jijmodeling as jm

problem = jm.Problem("Test Problem")
w = problem.Float("w", ndim=1)
N = problem.NamedExpr("N", w.len_at(0))
v = problem.Float("v", shape=N)
x = problem.BinaryVar("x", shape=N)

problem
\[\begin{array}{rl} \text{Problem}\colon &\text{Test Problem}\\\displaystyle \min &\displaystyle 0\\&\\\text{where}&\\&\text{Decision Variables:}\\&\qquad \begin{alignedat}{2}x&\in \mathop{\mathrm{Array}}\left[N;\left\{0, 1\right\}\right]&\quad &1\text{-dim binary variable}\\\end{alignedat}\\&\\&\text{Placeholders:}\\&\qquad \begin{alignedat}{2}v&\in \mathop{\mathrm{Array}}\left[N;\mathbb{R}\right]&\quad &1\text{-dimensional array of placeholders with elements in }\mathbb{R}\\w&\in \mathop{\mathrm{Array}}\left[(-);\mathbb{R}\right]&\quad &1\text{-dimensional array of placeholders with elements in }\mathbb{R}\\\end{alignedat}\\&\\&\text{Named Expressions:}\\&\qquad \begin{alignedat}{2}N&=\mathop{\mathtt{len\_{}at}}\left(w,0\right)&\quad &\in \mathbb{N}\\\end{alignedat}\end{array} \]

その他の変更#

  • DecoratedProblem-= 演算子の型ヒントを追加しました。