1. LocalSolverホーム
  2. LocalSolver5.5ドキュメンテーション
  3. Pythonプログラマ向けAPI参照マニュアル

Pythonプログラマ向けAPI参照マニュアル

オブジェクト指向APIsはPython2.7、3.2または3.4に対応しています。Pythonビジネスアプリケーションの中でLocalSolverの完全な統合が可能です。LocalSolverが提供するAPIsは可能な限りクラス数を少なくした使いやすい形になっています。LocalSolverは独自の技術を統合した次世代―ハイブリット型・数理計画ソルバーです。:LocalSolverでユーザモデルを解くために、問題を分解する必要も、追加ロジックを記述する必要もありません。

モデルを作成する

まず初めに、お使いのマシンに「LocalSolver」環境を構築します。これはLocalSolverライブラリのメインクラスです。次に、表現式を使ってモデルを生成するために、クラス「LSModel」メソッドを使用します。LocalSolverにおいて表現式は特に重要な概念です。モデルはすべて表現式を使って生成します:変数、目的および制約もLSExpressionで表現します。クラスLSModelを使用して「LSExpression」を生成する方法が3通りあります。

1. 「LSModel.sum()」「LSModel.eq()」「LSModel.bool() 」、 または「LSModel.sqrt()」のような省略方法を使用することが可能です。

2. 「LSModel.create_expression()」を使用して上記の関数をさらに一般的な形式で表現することもできます。最初の引数として追加するには、表現式のタイプ型が必要です。続いて表現式のオペランド・リストを追加します。「LSExpression.add_operand()」を使用して、1つずつオペランドを追加していくこともできます。利用可能なオペランドの一覧は、 「LSOperator」をご確認ください。

3.3つ目の方法は、一般的な演算子にオーバーロードされた演算子を使用することができます。:
+, -, *, /, <=, >=, ==, !=, >, <, **, [], &, ^, |.

モデルを解く

表現式を使ったモデル作成を完了させるには、「LSModel.close()」 を使用して、モデル表現式の記述が完了したことを明示し、モデルの解を得るために「LocalSolver.solve()」をコールします。デフォルトでは、最適解が見つかるまで探索が続くように設定されています。時間制限の設定や、イタレーション回数に制限を設けたい場合は、「create_phase(),」を使って「LSPhase」を生成します。続いて一連の属性を設定してください。

解を抽出する

解は、属性「LocalSolver.solution」で抽出することができ、モデル内および解のステータスに全表現式の値を取り込むことができます。4通りのステータスがあります。

  • INCONSISTENT : ソルバーがモデルに実行可能解が存在しないことを証明しています。
  • INFEASIBLE : 実行不可能な解です。ある制約式または表現式が違反しています。
  • FEASIBLE : 実行可能解ですが、解の最適性は証明されていません。
  • OPTIMAL : 最適解です。すべての目的が満たされています。

解に表現式の値を得るために直接、 「LSExpression」で取得できる「value」の属性を使用することも可能です。

統計データを調べる

「LSStatistics」オブジェクトを使用して探索(イタレーション数、実行可能ムーブの%など)結果の統計データを調べることもできます。統計データはグローバル探索またはフェーズごとに提供されています。

エラーについて

全クラスおよびLocalSolver APIは例外送出することができます。LocalSolverに関連する例外の種類は、「LSError」です。

LocalSolver5.5ドキュメンテーション記事一覧