java
1コード 2public class Automation { 3 static public void main(String[] args) throws IloException { 4IloCplex cplex = new IloCplex(); 5int t1 =3 6int t2 =2; 7int a=2; 8//変数の定義 9int tmax = Math.max(t1, t2); 10IloIntVar[] X = cplex.intVarArray((t1+1)*(t2+1)-1,0,tmax); 11//制約式(1) 12IloLinearNumExpr sum = cplex.linearNumExpr(); 13for(int i=0, j=1; i<X.length; i++,j++) { 14 sum.addTerm((int)j/(t2+1),X[i]); 15 cplex.addLe(sum1,t1); 16} 17cplex.addEq(sum1,t1); 18 19//制約式(2) 20IloIntVar[] array1 = cplex.intVarArray(X.length,0,t1*tmax); 21 for(int i=0, j=1; i<X.length; i++,j++) { 22 array1[i]= (j/(t2+1))*X[i]; //エラー箇所 23 cplex.addLe(array1[i],a); 24 } 25} 26}
制約式(1)
X[2]+X[3]+X[4]+2X[5]+2X[6]+2X[7]+3X[8]+3X[9]+3X[10]= 3
制約式(2)
X[2]<=a
X[3]<=a
X[4]<=a
2X[5]<=a
2X[6]<=a
2X[7]<=a
3X[8]<=a
3X[9]<=a
3X[10]<=a
という風に制約式を作りたいです。
制約式(1)の各項が全て変数a以下になるように制約を加えたものが制約式(2)になります。
(1)の方は問題ないのですが、(2)で
「演算子 * は引数の型 int, IloIntVar で未定義です」
と表示されてしまいます。
係数j/(t2+1)と各項X[i]を掛けて配列array1に代入し、それをforで回して求めようとしてます。
演算子が未定義というのもよくわかりません。
原因がわかる方、よりスマートな書き方があれば教えて頂きたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/16 15:25
2018/11/16 15:53