hanatarekozoman score 14
2018/11/09 00:23 投稿
Eclipseで実行すると「メインクラスが見つからない」とエラーが出ます |
Eclipseで、Cplexを使ったコードを書き実行すると |
「エラー:メインクラス〇〇が見つからないかロードできませんでした」 |
と表示されました。 |
調べてみると、実行構成のVM引数にCplexファイルの場所を入力しなければいけないと書かれているサイトがありました。しかし、入力して実行してみると文字化け(?)を含んだエラーが表示されました。 |
Cplexファイルの場所を入力し間違えたのかと何度もやってみましたが同じ結果です。 |
解決方法をご存知の方、教えて頂けませんか? |
追記 |
```ここに言語を入力 |
package numberlink; |
import ilog.concert.IloException; |
import ilog.concert.IloIntVar; |
import ilog.concert.IloLinearNumExpr; |
import ilog.cplex.IloCplex; |
public class numberlink1 { |
public static void main(String[] args) { |
try { |
IloCplex numberlink = new IloCplex(); |
int row=4; |
int column=4; |
IloIntVar s[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
s[i][j] = numberlink.boolVar(); |
} |
} |
IloIntVar e[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
e[i][j] = numberlink.boolVar(); |
} |
} |
IloLinearNumExpr NumberMath = numberlink.linearNumExpr(); |
IloIntVar[][] x = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
NumberMath.addTerm(1, x[i][j]); |
numberlink.addLe(NumberMath,3); |
numberlink.addGe(NumberMath, 1); |
} |
} |
IloLinearNumExpr NumberMath1_a = numberlink.linearNumExpr(); |
NumberMath1_a.addTerm(1,x[1][1]); |
numberlink.addEq(NumberMath1_a,1); |
IloLinearNumExpr NumberMath1_b = numberlink.linearNumExpr(); |
NumberMath1_b.addTerm(1,x[2][3]); |
numberlink.addEq(NumberMath1_b,1); |
IloLinearNumExpr NumberMath2_a = numberlink.linearNumExpr(); |
NumberMath2_a.addTerm(1,x[1][4]); |
numberlink.addEq(NumberMath2_a,2); |
IloLinearNumExpr NumberMath2_b = numberlink.linearNumExpr(); |
NumberMath2_b.addTerm(1,x[3][2]); |
numberlink.addEq(NumberMath2_b,2); |
IloLinearNumExpr NumberMath3_a = numberlink.linearNumExpr(); |
NumberMath3_a.addTerm(1,x[2][2]); |
numberlink.addEq(NumberMath3_a,3); |
IloLinearNumExpr NumberMath3_b = numberlink.linearNumExpr(); |
NumberMath3_b.addTerm(1,x[4][4]); |
numberlink.addEq(NumberMath3_b,3); |
IloLinearNumExpr MathLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
MathLine.addTerm(1, s[i-1][j]); |
MathLine.addTerm(1, s[i][j]); |
MathLine.addTerm(1, e[i][j-1]); |
MathLine.addTerm(1, e[i][j]); |
if(i-1==0) { |
MathLine.addTerm(-1, s[i-1][j]); |
} |
if(i==4) { |
MathLine.addTerm(-1, s[i][j]); |
} |
if(j-1==0) { |
MathLine.addTerm(-1, e[i][j-1]); |
} |
if(j==4) { |
MathLine.addTerm(-1, e[i][j]); |
} |
if((i==1&&j==1)||(i==1&&j==4)||(i==2&&j==2)||(i==2&&j==3)|| |
(i==3&&j==2)||i==4&&j==4) { |
numberlink.addEq(MathLine, 1); |
} |
else {numberlink.addGe(MathLine, 2); |
numberlink.addLe(MathLine, 0);} |
} |
} |
IloLinearNumExpr IfsEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfsEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
IfsEq1_1.addTerm(3,s[i][j]); |
IfsEq1_1.addTerm(-1,x[i][j]); |
IfsEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
IfsEq1_2.addTerm(3,s[i][j]); |
IfsEq1_2.addTerm(1,x[i][j]); |
IfsEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
} |
} |
IloLinearNumExpr IfeEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfeEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
IfeEq1_1.addTerm(3,e[i][j]); |
IfeEq1_1.addTerm(-1,x[i][j]); |
IfeEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
IfeEq1_2.addTerm(3,e[i][j]); |
IfeEq1_2.addTerm(1,x[i][j]); |
IfeEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
} |
} |
IloLinearNumExpr AllLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
AllLine.addTerm(1,e[i][j]); |
} |
} |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
AllLine.addTerm(1,s[i][j]); |
} |
} |
numberlink.addMinimize(AllLine); |
if(numberlink.solve()) { |
System.out.println("目的関数値は"+numberlink.getObjValue()); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
System.out.println(s[i][j]+"="+numberlink.getValue(s[i][j])); |
System.out.println(e[i][j]+"="+numberlink.getValue(e[i][j])); |
System.out.println(x[i][j]+"="+numberlink.getValue(x[i][j])); |
} |
} |
} |
} |
catch(IloException e) { |
} |
} |
``` |
実行構成のVM引数にCPLEXファイルの場所を入力した後実行すると |
�G���[: ���C���E�N���X〇〇〇\Documents\IBM\ILOG\CPLEX_Studio127��������Ȃ����������[�h�ł��܂���ł��� |
というエラーが出ます。(〇〇〇にはユーザ名が入ります。) |
よろしくお願いします。 |
追記2 |
以下のようなコードを入力し実行すると、エラーも出ず解が出力されました。 |
Cplexファイルの場所を実行構成に入力せずに実行し成功したので、元のコードのエラーの原因はコード内にあるのでしょうか...? |
```ここに言語を入力 |
package testtt; |
import ilog.concert.IloException; |
import ilog.concert.IloLinearNumExpr; |
import ilog.concert.IloNumVar; |
import ilog.cplex.IloCplex; |
public class test1{ |
static public void main(String[] args) { |
try { |
IloCplex cplex = new IloCplex(); |
// create model and solve it |
IloNumVar x = cplex.numVar(0, Double.MAX_VALUE, "x"); |
IloNumVar y = cplex.numVar(0, Double.MAX_VALUE, "y"); |
IloLinearNumExpr objective = cplex.linearNumExpr(); |
objective.addTerm(0.12, x); |
objective.addTerm(0.15, y); |
cplex.addMinimize(objective); |
cplex.addGe(cplex.sum(cplex.prod(60, x), cplex.prod(60, y)), 300); |
cplex.addGe(cplex.sum(cplex.prod(12, x), cplex.prod(6, y)), 36); |
cplex.addGe(cplex.sum(cplex.prod(10, x), cplex.prod(30, y)), 90); |
if (cplex.solve()) { |
System.out.println("obj = " + cplex.getObjValue()); |
System.out.println("x = " + cplex.getValue(x)); |
System.out.println("y = " + cplex.getValue(y)); |
} else { |
System.out.println("Can not solve"); |
} |
} catch (IloException e) { |
System.err.println("Concert exception caught: " + e); |
} |
} |
} |
``` |
hanatarekozoman score 14
2018/11/08 01:17 投稿
Eclipseで実行すると「メインクラスが見つからない」とエラーが出ます |
Eclipseで、Cplexを使ったコードを書き実行すると |
「エラー:メインクラス〇〇が見つからないかロードできませんでした」 |
と表示されました。 |
調べてみると、実行構成のVM引数にCplexファイルの場所を入力しなければいけないと書かれているサイトがありました。しかし、入力して実行してみると文字化け(?)を含んだエラーが表示されました。 |
Cplexファイルの場所を入力し間違えたのかと何度もやってみましたが同じ結果です。 |
解決方法をご存知の方、教えて頂けませんか? |
追記 |
```ここに言語を入力 |
package numberlink; |
import ilog.concert.IloException; |
import ilog.concert.IloIntVar; |
import ilog.concert.IloLinearNumExpr; |
import ilog.cplex.IloCplex; |
public class numberlink1 { |
public static void main(String[] args) { |
try { |
IloCplex numberlink = new IloCplex(); |
int row=4; |
int column=4; |
IloIntVar s[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
s[i][j] = numberlink.boolVar(); |
} |
} |
IloIntVar e[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
e[i][j] = numberlink.boolVar(); |
} |
} |
IloLinearNumExpr NumberMath = numberlink.linearNumExpr(); |
IloIntVar[][] x = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
NumberMath.addTerm(1, x[i][j]); |
numberlink.addLe(NumberMath,3); |
numberlink.addGe(NumberMath, 1); |
} |
} |
IloLinearNumExpr NumberMath1_a = numberlink.linearNumExpr(); |
NumberMath1_a.addTerm(1,x[1][1]); |
numberlink.addEq(NumberMath1_a,1); |
IloLinearNumExpr NumberMath1_b = numberlink.linearNumExpr(); |
NumberMath1_b.addTerm(1,x[2][3]); |
numberlink.addEq(NumberMath1_b,1); |
IloLinearNumExpr NumberMath2_a = numberlink.linearNumExpr(); |
NumberMath2_a.addTerm(1,x[1][4]); |
numberlink.addEq(NumberMath2_a,2); |
IloLinearNumExpr NumberMath2_b = numberlink.linearNumExpr(); |
NumberMath2_b.addTerm(1,x[3][2]); |
numberlink.addEq(NumberMath2_b,2); |
IloLinearNumExpr NumberMath3_a = numberlink.linearNumExpr(); |
NumberMath3_a.addTerm(1,x[2][2]); |
numberlink.addEq(NumberMath3_a,3); |
IloLinearNumExpr NumberMath3_b = numberlink.linearNumExpr(); |
NumberMath3_b.addTerm(1,x[4][4]); |
numberlink.addEq(NumberMath3_b,3); |
IloLinearNumExpr MathLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
MathLine.addTerm(1, s[i-1][j]); |
MathLine.addTerm(1, s[i][j]); |
MathLine.addTerm(1, e[i][j-1]); |
MathLine.addTerm(1, e[i][j]); |
if(i-1==0) { |
MathLine.addTerm(-1, s[i-1][j]); |
} |
if(i==4) { |
MathLine.addTerm(-1, s[i][j]); |
} |
if(j-1==0) { |
MathLine.addTerm(-1, e[i][j-1]); |
} |
if(j==4) { |
MathLine.addTerm(-1, e[i][j]); |
} |
if((i==1&&j==1)||(i==1&&j==4)||(i==2&&j==2)||(i==2&&j==3)|| |
(i==3&&j==2)||i==4&&j==4) { |
numberlink.addEq(MathLine, 1); |
} |
else {numberlink.addGe(MathLine, 2); |
numberlink.addLe(MathLine, 0);} |
} |
} |
IloLinearNumExpr IfsEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfsEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
IfsEq1_1.addTerm(3,s[i][j]); |
IfsEq1_1.addTerm(-1,x[i][j]); |
IfsEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
IfsEq1_2.addTerm(3,s[i][j]); |
IfsEq1_2.addTerm(1,x[i][j]); |
IfsEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
} |
} |
IloLinearNumExpr IfeEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfeEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
IfeEq1_1.addTerm(3,e[i][j]); |
IfeEq1_1.addTerm(-1,x[i][j]); |
IfeEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
IfeEq1_2.addTerm(3,e[i][j]); |
IfeEq1_2.addTerm(1,x[i][j]); |
IfeEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
} |
} |
IloLinearNumExpr AllLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
AllLine.addTerm(1,e[i][j]); |
} |
} |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
AllLine.addTerm(1,s[i][j]); |
} |
} |
numberlink.addMinimize(AllLine); |
if(numberlink.solve()) { |
System.out.println("目的関数値は"+numberlink.getObjValue()); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
System.out.println(s[i][j]+"="+numberlink.getValue(s[i][j])); |
System.out.println(e[i][j]+"="+numberlink.getValue(e[i][j])); |
System.out.println(x[i][j]+"="+numberlink.getValue(x[i][j])); |
} |
} |
} |
} |
catch(IloException e) { |
} |
} |
``` |
実行構成のVM引数にCPLEXファイルの場所を入力した後実行すると |
�G���[: ���C���E�N���X〇〇〇\Documents\IBM\ILOG\CPLEX_Studio127��������Ȃ����������[�h�ł��܂���ł��� |
というエラーが出ます。(〇〇〇にはユーザ名が入ります。) |
よろしくお願いします。 |
よろしくお願いします。 |
追記2 |
以下のようなコードを入力し実行すると、エラーも出ず解が出力されました。 |
Cplexファイルの場所を実行構成に入力せずに実行し成功したので、元のコードのエラーの原因はコード内にあるのでしょうか...? |
```ここに言語を入力 |
package testtt; |
import ilog.concert.IloException; |
import ilog.concert.IloLinearNumExpr; |
import ilog.concert.IloNumVar; |
import ilog.cplex.IloCplex; |
public class test1{ |
static public void main(String[] args) { |
try { |
IloCplex cplex = new IloCplex(); |
// create model and solve it |
IloNumVar x = cplex.numVar(0, Double.MAX_VALUE, "x"); |
IloNumVar y = cplex.numVar(0, Double.MAX_VALUE, "y"); |
IloLinearNumExpr objective = cplex.linearNumExpr(); |
objective.addTerm(0.12, x); |
objective.addTerm(0.15, y); |
cplex.addMinimize(objective); |
cplex.addGe(cplex.sum(cplex.prod(60, x), cplex.prod(60, y)), 300); |
cplex.addGe(cplex.sum(cplex.prod(12, x), cplex.prod(6, y)), 36); |
cplex.addGe(cplex.sum(cplex.prod(10, x), cplex.prod(30, y)), 90); |
if (cplex.solve()) { |
System.out.println("obj = " + cplex.getObjValue()); |
System.out.println("x = " + cplex.getValue(x)); |
System.out.println("y = " + cplex.getValue(y)); |
} else { |
System.out.println("Can not solve"); |
} |
} catch (IloException e) { |
System.err.println("Concert exception caught: " + e); |
} |
} |
} |
``` |
hanatarekozoman score 14
2018/11/07 15:12 投稿
Eclipseで実行すると「メインクラスが見つからない」とエラーが出ます |
Eclipseで、Cplexを使ったコードを書き実行すると |
「エラー:メインクラス〇〇が見つからないかロードできませんでした」 |
と表示されました。 |
調べてみると、実行構成のVM引数にCplexファイルの場所を入力しなければいけないと書かれているサイトがありました。しかし、入力して実行してみると文字化け(?)を含んだエラーが表示されました。 |
Cplexファイルの場所を入力し間違えたのかと何度もやってみましたが同じ結果です。 |
解決方法をご存知の方、教えて頂けませんか? |
追記 |
```ここに言語を入力 |
package numberlink; |
import ilog.concert.IloException; |
import ilog.concert.IloIntVar; |
import ilog.concert.IloLinearNumExpr; |
import ilog.cplex.IloCplex; |
public class numberlink1 { |
public static void main(String[] args) { |
try { |
IloCplex numberlink = new IloCplex(); |
int row=4; |
int column=4; |
IloIntVar s[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
s[i][j] = numberlink.boolVar(); |
} |
} |
IloIntVar e[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
e[i][j] = numberlink.boolVar(); |
} |
} |
IloLinearNumExpr NumberMath = numberlink.linearNumExpr(); |
IloIntVar[][] x = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
NumberMath.addTerm(1, x[i][j]); |
numberlink.addLe(NumberMath,3); |
numberlink.addGe(NumberMath, 1); |
} |
} |
IloLinearNumExpr NumberMath1_a = numberlink.linearNumExpr(); |
NumberMath1_a.addTerm(1,x[1][1]); |
numberlink.addEq(NumberMath1_a,1); |
IloLinearNumExpr NumberMath1_b = numberlink.linearNumExpr(); |
NumberMath1_b.addTerm(1,x[2][3]); |
numberlink.addEq(NumberMath1_b,1); |
IloLinearNumExpr NumberMath2_a = numberlink.linearNumExpr(); |
NumberMath2_a.addTerm(1,x[1][4]); |
numberlink.addEq(NumberMath2_a,2); |
IloLinearNumExpr NumberMath2_b = numberlink.linearNumExpr(); |
NumberMath2_b.addTerm(1,x[3][2]); |
numberlink.addEq(NumberMath2_b,2); |
IloLinearNumExpr NumberMath3_a = numberlink.linearNumExpr(); |
NumberMath3_a.addTerm(1,x[2][2]); |
numberlink.addEq(NumberMath3_a,3); |
IloLinearNumExpr NumberMath3_b = numberlink.linearNumExpr(); |
NumberMath3_b.addTerm(1,x[4][4]); |
numberlink.addEq(NumberMath3_b,3); |
IloLinearNumExpr MathLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
MathLine.addTerm(1, s[i-1][j]); |
MathLine.addTerm(1, s[i][j]); |
MathLine.addTerm(1, e[i][j-1]); |
MathLine.addTerm(1, e[i][j]); |
if(i-1==0) { |
MathLine.addTerm(-1, s[i-1][j]); |
} |
if(i==4) { |
MathLine.addTerm(-1, s[i][j]); |
} |
if(j-1==0) { |
MathLine.addTerm(-1, e[i][j-1]); |
} |
if(j==4) { |
MathLine.addTerm(-1, e[i][j]); |
} |
if((i==1&&j==1)||(i==1&&j==4)||(i==2&&j==2)||(i==2&&j==3)|| |
(i==3&&j==2)||i==4&&j==4) { |
numberlink.addEq(MathLine, 1); |
} |
else {numberlink.addGe(MathLine, 2); |
numberlink.addLe(MathLine, 0);} |
} |
} |
IloLinearNumExpr IfsEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfsEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
IfsEq1_1.addTerm(3,s[i][j]); |
IfsEq1_1.addTerm(-1,x[i][j]); |
IfsEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
IfsEq1_2.addTerm(3,s[i][j]); |
IfsEq1_2.addTerm(1,x[i][j]); |
IfsEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
} |
} |
IloLinearNumExpr IfeEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfeEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
IfeEq1_1.addTerm(3,e[i][j]); |
IfeEq1_1.addTerm(-1,x[i][j]); |
IfeEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
IfeEq1_2.addTerm(3,e[i][j]); |
IfeEq1_2.addTerm(1,x[i][j]); |
IfeEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
} |
} |
IloLinearNumExpr AllLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
AllLine.addTerm(1,e[i][j]); |
} |
} |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
AllLine.addTerm(1,s[i][j]); |
} |
} |
numberlink.addMinimize(AllLine); |
if(numberlink.solve()) { |
System.out.println("目的関数値は"+numberlink.getObjValue()); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
System.out.println(s[i][j]+"="+numberlink.getValue(s[i][j])); |
System.out.println(e[i][j]+"="+numberlink.getValue(e[i][j])); |
System.out.println(x[i][j]+"="+numberlink.getValue(x[i][j])); |
} |
} |
} |
} |
catch(IloException e) { |
} |
} |
``` |
�G���[: ���C���E�N���X〇〇〇\Documents\IBM\ILOG\CPLEX_Studio127��������Ȃ����������[�h�ł��܂���ł��� |
というエラーが出ます。(〇〇〇にはユーザ名が入ります。) |
よろしくお願いします。 |
hanatarekozoman score 14
2018/11/07 15:11 投稿
Eclipseで実行すると「メインクラスが見つからない」とエラーが出ます |
Eclipseで、Cplexを使ったコードを書き実行すると |
「エラー:メインクラス〇〇が見つからないかロードできませんでした」 |
と表示されました。 |
調べてみると、実行構成のVM引数にCplexファイルの場所を入力しなければいけないと書かれているサイトがありました。しかし、入力して実行してみると文字化け(?)を含んだエラーが表示されました。 |
Cplexファイルの場所を入力し間違えたのかと何度もやってみましたが同じ結果です。 |
解決方法をご存知の方、教えて頂けませんか? |
解決方法をご存知の方、教えて頂けませんか? |
追記 |
```ここに言語を入力 |
package numberlink; |
import ilog.concert.IloException; |
import ilog.concert.IloIntVar; |
import ilog.concert.IloLinearNumExpr; |
import ilog.cplex.IloCplex; |
public class numberlink1 { |
public static void main(String[] args) { |
try { |
IloCplex numberlink = new IloCplex(); |
int row=4; |
int column=4; |
IloIntVar s[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
s[i][j] = numberlink.boolVar(); |
} |
} |
IloIntVar e[][] = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
e[i][j] = numberlink.boolVar(); |
} |
} |
IloLinearNumExpr NumberMath = numberlink.linearNumExpr(); |
IloIntVar[][] x = new IloIntVar[row][column]; |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
NumberMath.addTerm(1, x[i][j]); |
numberlink.addLe(NumberMath,3); |
numberlink.addGe(NumberMath, 1); |
} |
} |
IloLinearNumExpr NumberMath1_a = numberlink.linearNumExpr(); |
NumberMath1_a.addTerm(1,x[1][1]); |
numberlink.addEq(NumberMath1_a,1); |
IloLinearNumExpr NumberMath1_b = numberlink.linearNumExpr(); |
NumberMath1_b.addTerm(1,x[2][3]); |
numberlink.addEq(NumberMath1_b,1); |
IloLinearNumExpr NumberMath2_a = numberlink.linearNumExpr(); |
NumberMath2_a.addTerm(1,x[1][4]); |
numberlink.addEq(NumberMath2_a,2); |
IloLinearNumExpr NumberMath2_b = numberlink.linearNumExpr(); |
NumberMath2_b.addTerm(1,x[3][2]); |
numberlink.addEq(NumberMath2_b,2); |
IloLinearNumExpr NumberMath3_a = numberlink.linearNumExpr(); |
NumberMath3_a.addTerm(1,x[2][2]); |
numberlink.addEq(NumberMath3_a,3); |
IloLinearNumExpr NumberMath3_b = numberlink.linearNumExpr(); |
NumberMath3_b.addTerm(1,x[4][4]); |
numberlink.addEq(NumberMath3_b,3); |
IloLinearNumExpr MathLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
MathLine.addTerm(1, s[i-1][j]); |
MathLine.addTerm(1, s[i][j]); |
MathLine.addTerm(1, e[i][j-1]); |
MathLine.addTerm(1, e[i][j]); |
if(i-1==0) { |
MathLine.addTerm(-1, s[i-1][j]); |
} |
if(i==4) { |
MathLine.addTerm(-1, s[i][j]); |
} |
if(j-1==0) { |
MathLine.addTerm(-1, e[i][j-1]); |
} |
if(j==4) { |
MathLine.addTerm(-1, e[i][j]); |
} |
if((i==1&&j==1)||(i==1&&j==4)||(i==2&&j==2)||(i==2&&j==3)|| |
(i==3&&j==2)||i==4&&j==4) { |
numberlink.addEq(MathLine, 1); |
} |
else {numberlink.addGe(MathLine, 2); |
numberlink.addLe(MathLine, 0);} |
} |
} |
IloLinearNumExpr IfsEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfsEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
IfsEq1_1.addTerm(3,s[i][j]); |
IfsEq1_1.addTerm(-1,x[i][j]); |
IfsEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
IfsEq1_2.addTerm(3,s[i][j]); |
IfsEq1_2.addTerm(1,x[i][j]); |
IfsEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfsEq1_1,3); |
} |
} |
IloLinearNumExpr IfeEq1_1 = numberlink.linearNumExpr(); |
IloLinearNumExpr IfeEq1_2 = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
IfeEq1_1.addTerm(3,e[i][j]); |
IfeEq1_1.addTerm(-1,x[i][j]); |
IfeEq1_1.addTerm(1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
IfeEq1_2.addTerm(3,e[i][j]); |
IfeEq1_2.addTerm(1,x[i][j]); |
IfeEq1_2.addTerm(-1,x[i+1][j]); |
numberlink.addLe(IfeEq1_1,3); |
} |
} |
IloLinearNumExpr AllLine = numberlink.linearNumExpr(); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column-1;j++) { |
AllLine.addTerm(1,e[i][j]); |
} |
} |
for(int i=1;i<=row-1;i++) { |
for(int j=1;j<=column;j++) { |
AllLine.addTerm(1,s[i][j]); |
} |
} |
numberlink.addMinimize(AllLine); |
if(numberlink.solve()) { |
System.out.println("目的関数値は"+numberlink.getObjValue()); |
for(int i=1;i<=row;i++) { |
for(int j=1;j<=column;j++) { |
System.out.println(s[i][j]+"="+numberlink.getValue(s[i][j])); |
System.out.println(e[i][j]+"="+numberlink.getValue(e[i][j])); |
System.out.println(x[i][j]+"="+numberlink.getValue(x[i][j])); |
} |
} |
} |
} |
catch(IloException e) { |
} |
} |
``` |
実行構成のVM引数にCPLEXファイルを入力した後実行すると |
�G���[: ���C���E�N���X〇〇〇\Documents\IBM\ILOG\CPLEX_Studio127��������Ȃ����������[�h�ł��܂���ł��� |
というエラーが出ます。(〇〇〇にはユーザ名が入ります。) |
よろしくお願いします。 |