2015年11月18日水曜日

lp_solveをJavaで実行できるようにする

lp_solveをJavaで実行できるようにする

Javaをインストール
# yum install java

Java用のlp_solveを導入
http://sourceforge.net/projects/lpsolve/files/lpsolve/
から
lp_solve_5.5.2.0_java.zip
lp_solve_5.5.2.0_dev_ux64.tar.gz
をダウンロード。展開後

lp_solve_5.5_java/lib/ux64/liblpsolve55j.so
lp_solve_5.5_java/lib/lpsolve55j.jar
lp_solve_5.5.2.0_dev_ux64/liblpsolve55.so
を/usr/local/libにコピー
# chmod 755 /usr/local/lib/*

ライブラリへの環境変数の設定
ユーザで設定する場合
~]$ vi .bashrc
追加
export CLASSPATH=/usr/local/lib/lpsolve55j.jar:$CLASSPATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

環境変数の適用
~]$ source .bashrc

Javaファイル作成
~]$ vi Demo.java
 [Demo.java] サイトより
import lpsolve.*;

public class Demo {

  public static void main(String[] args) {
    try {
      // Create a problem with 4 variables and 0 constraints
      LpSolve solver = LpSolve.makeLp(0, 4);

      // add constraints
      solver.strAddConstraint("3 2 2 1", LpSolve.LE, 4);
      solver.strAddConstraint("0 4 3 1", LpSolve.GE, 3);

      // set objective function
      solver.strSetObjFn("2 3 -2 3");

      // solve the problem
      solver.solve();

      // print solution
      System.out.println("Value of objective function: " + solver.getObjective());
      double[] var = solver.getPtrVariables();
      for (int i = 0; i < var.length; i++) {
        System.out.println("Value of var[" + i + "] = " + var[i]);
      }

      // delete the problem and free memory
      solver.deleteLp();
    }
    catch (LpSolveException e) {
       e.printStackTrace();
    }
  }

}

~]$ javac Demo.java
~]$ java Demo
で実行できる。



 参考
http://d.hatena.ne.jp/yambi/20090916/1253111261

0 件のコメント:

コメントを投稿