Javaでのlpsolveの利用方法を教えてください。
Javaでのlpsolveの利用方法を教えてください。
JavaプログラムのIPtest.javaが実行できません。
どのようにしたら、JavaのAPIであるlpsolveを利用できるのか教えて頂けませんか?
IPtest.javaのソース。
import lpsolve.*;
public class IPtest {
public static void main(String[] args) {
try {
/* 変数5 個,制約0 個の問題を作成 */
LpSolve solver = LpSolve.makeLp(0, 5);
/* 1つ目の制約を追加 */
solver.strAddConstraint("8 2 6 4 5", LpSolve.LE, 20);
/* 変数1 から5 を0-1 変数に設定 */
solver.setBinary(1, true);
solver.setBinary(2, true);
solver.setBinary(3, true);
solver.setBinary(4, true);
solver.setBinary(5, true);
/* 目的関数の係数を設定 */
solver.strSetObjFn("5 3 7 8 6");
/* 目的を最大化に設定 */
solver.setMaxim();
/* 求解 */
solver.solve();
/* 解の表示 */
System.out.println("OptVal = " + solver.getObjective());
double[] var = solver.getPtrVariables();
for (int i = 0; i < var.length; i++) {
System.out.println("var[" + i + "] = " + var[i]);
}
/* 後始末(問題の消去とメモリの解放) */
solver.deleteLp();
}
catch (LpSolveException e) {
e.printStackTrace();
}
}
}
OS : Windows Vista
一応、環境変数のCLASSPATHをC:\lp_example\lpsolve55j.jarに設定したら、
コンパイルは出来て、実行が出来ない状態です。
実行すると、
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lpsolve55j in java
.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1030)
at lpsolve.LpSolve.<clinit>(LpSolve.java:275)
at IPtest.main(IPtest.java:8)
このように出てしまいます。
補足
System.out.plintlnでプロパティを手作業で設定した場合と、プログラムで設定した場合との値が同じかどうかを確認したところ、同じでした。 System.loadLibrary()関数内で参照するpathは、プログラム内で変更できない、つまり、システム環境変数を使用するという理解でよろしいですか?