1. LocalSolverホーム
  2. クイックスタートガイド
  3. Javaでユーザーのファーストモデルを解く

Javaでユーザーのファーストモデルを解く

LocalSolverはC++言語で実装されます。オブジェクト指向アプリケーション・プログラミングインターフェースはJava5.0(または上位)向けに提供され、ユーザーのJavaビジネス・アプリケーション内に完全な統合が可能です。
LocalSolverのAPIsはアクセスするクラス数が限られており、使いやすい形になっています。
LocalSolverがカプセル化した数理計画ソルバーであることを前述しました。ソルバーを実行するため、モデルをインスタンス化し、追加のコードを記述する必要はありません。

下記は、quick tour of LocalSolver's modeler.で紹介したナップザック・トイ例題を解くため、Javaコードで記述しています。

/********** Toy.java **********/

import localsolver.*;

public class Toy {

  public static void main(String [] args) {
    int[] weights = {10, 60, 30, 40, 30, 20, 20, 2};
    int[] values = {1, 10, 15, 40, 60, 90, 100, 15};
    
    LocalSolver localsolver = new LocalSolver();
    LSModel model = localsolver.getModel();
    
    // 0-1 decisions

    LSExpression[] x = new LSExpression[8];
    for (int i = 0; i < 8; i++) 
      x[i] = model.createExpression(LSOperator.Bool);
    
    // knapsackWeight <- 10*x0 + 60*x1 + 30*x2 + 40*x3 + 30*x4 + 20*x5 + 20*x6 + 2*x7;
    LSExpression knapsackWeight = model.createExpression(LSOperator.Sum);
    for (int i = 0; i < 8; i++)
      knapsackWeight.addOperand(model.createExpression(LSOperator.Prod, weights[i], x[i]));
    
    // knapsackWeight <= 102;

    model.addConstraint(model.createExpression(LSOperator.Leq, knapsackWeight, 102));
    
    // knapsackValue <- 1*x0 + 10*x1 + 15*x2 + 40*x3 + 60*x4 + 90*x5 + 100*x6 + 15*x7;
    LSExpression knapsackValue = model.createExpression(LSOperator.Sum);
    for (int i = 0; i < 8; i++) 
      knapsackValue.addOperand(model.createExpression(LSOperator.Prod, values[i], x[i]));
    
    // maximize knapsackValue;

    model.addObjective(knapsackValue, LSObjectiveDirection.Maximize);
    
    // close model, then solve
    model.close();
    LSPhase phase = localsolver.createPhase();
    phase.setTimeLimit(1);
    localsolver.solve();
  }
}

Javaプログラムの構造が対応するLSP構造になっていることがわかります。
まず最初に、入力データの読み込みを行います。その後、いくつかの表現式を生成し、ナップザック・モデルを宣言します。モデルを終了させると、Windows上のソルバーを開始する前に探索をパラメータ化できます。

コンパイルするために、Java Development kit5.0(または上位)をユーザーのコンピュータにインストールする必要があります。Windows上では、上記のプログラムでコンパイルし下記の行で、実行します。

javac Toy.java -cp %LS_HOME%\bin\localsolver.jar
java -cp %LS_HOME%\bin\localsolver.jar;. -Djava.library.path=%LS_HOME%\bin\ Toy

Linux上では、上記のプログラムがコンパイルされ、下記の行で実行します。

javac Toy.java -cp /opt/localsolver_2_0/bin/localsolver.jar
java -cp /opt/localsolver_2_0/bin/localsolver.jar:. -Djava.library.path=/opt/localsolver_2_0/bin/ Toy

プログラムのコンパイル及び実行に関して、トラブルが発生した場合、必要システム構成およびインストール手順を参照ください。またAPIsに関する詳細情報はJava API Referenceを参照ください。

このページの先頭へ