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に-=演算子の型ヒントを追加しました。