概要#
以下の各節では、JijModeling で数理最適化問題を扱う上で必要となる基本的な事項について個別に見ていきます。 また、「はじめに」節でも触れた Plain API と Decorator API それぞれの記法についても、適宜同時に紹介していきます。 読み進める前にクイックスタート(SCIP版、OpenJij版の少なくとも一方)に目を通して全体の雰囲気を掴んでおくと、スムーズに読み進められるでしょう。
参考
そもそも数理最適化とは何か?という点については、JijZept の「数理最適化の基礎」などの他の文献をご参照ください。
本節で扱う内容は以下の通りです:
数理モデルの宣言:JijModeling では、変数や制約条件などはすべて特定の数理モデルに紐付けて扱われます。そこで、数理モデルを宣言する方法について最初に扱います。
変数の定義:数理最適化問題を構成する決定変数と、インスタンスデータを流し込むことで確定するパラメータであるプレースホルダー、またそれらの族の種類や宣言方法について採り上げます。
式の構築:目的関数や制約条件の定義や、または変数のシェイプの宣言などにも使われる JijModeling の式の構築方法について説明します。
数理モデルの定式化:これまでの要素を用いて、数理モデルの目的関数や制約条件を設定する方法を紹介します。
インスタンスの生成:インタンスデータを入力しインスタンスを生成する方法を学びます。また、制約検出の制御についても簡単に触れます。
用語法#
以下、「自然数」といった場合は\(0\)を含む非負整数を指すことにします。また、自然数・整数・実数をまとめて「スカラー」と呼ぶことにします。 また、\(1, 2, 3\) や \(5.2\) などのように、変数を含まず具体的な数値を表す定数式の事を、以下では「定数リテラル」と呼ぶことにします。