teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

意図的な内容抹消の取り消し

2018/11/27 02:52

投稿

reina1125
reina1125

スコア21

title CHANGED
File without changes
body CHANGED
@@ -1,1 +1,48 @@
1
+ ```java
2
+ コード
3
+ public class Automation {
4
+  static public void main(String[] args) throws IloException {
5
+ IloCplex cplex = new IloCplex();
6
+ int t1 =3
7
+ int t2 =2;
8
+ int a=2;
9
+ //変数の定義
10
+ int tmax = Math.max(t1, t2);
11
+ IloIntVar[] X = cplex.intVarArray((t1+1)*(t2+1)-1,0,tmax);
12
+ //制約式(1)
1
- wsdedewddedededwedddsaeewdwedewvvrefesxdccsdwcd
13
+ IloLinearNumExpr sum = cplex.linearNumExpr();
14
+ for(int i=0, j=1; i<X.length; i++,j++) {
15
+ sum.addTerm((int)j/(t2+1),X[i]);
16
+ cplex.addLe(sum1,t1);
17
+ }
18
+ cplex.addEq(sum1,t1);
19
+
20
+ //制約式(2)
21
+ IloIntVar[] array1 = cplex.intVarArray(X.length,0,t1*tmax);
22
+ for(int i=0, j=1; i<X.length; i++,j++) {
23
+ array1[i]= (j/(t2+1))*X[i]; //エラー箇所
24
+ cplex.addLe(array1[i],a);
25
+ }
26
+ }
27
+ }
28
+ ```
29
+ 制約式(1)
30
+ X[2]+X[3]+X[4]+2X[5]+2X[6]+2X[7]+3X[8]+3X[9]+3X[10]= 3
31
+ 制約式(2)
32
+ X[2]<=a
33
+ X[3]<=a
34
+ X[4]<=a
35
+ 2X[5]<=a
36
+ 2X[6]<=a
37
+ 2X[7]<=a
38
+ 3X[8]<=a
39
+ 3X[9]<=a
40
+ 3X[10]<=a
41
+ という風に制約式を作りたいです。
42
+ 制約式(1)の各項が全て変数a以下になるように制約を加えたものが制約式(2)になります。
43
+ (1)の方は問題ないのですが、(2)で
44
+ 「演算子 * は引数の型 int, IloIntVar で未定義です」
45
+ と表示されてしまいます。
46
+ 係数j/(t2+1)と各項X[i]を掛けて配列array1に代入し、それをforで回して求めようとしてます。
47
+ 演算子が未定義というのもよくわかりません。
48
+ 原因がわかる方、よりスマートな書き方があれば教えて頂きたいです。

1

goji

2018/11/27 02:52

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,58 +1,1 @@
1
- ```java
2
- コード
3
- public class Automation {
4
-  static public void main(String[] args) throws IloException {
5
- IloCplex cplex = new IloCplex();
6
-
7
- int t1 =3
8
- int t2 =2;
9
- int a=2;
10
-
11
- //変数の定義
12
- int tmax = Math.max(t1, t2);
13
- IloIntVar[] X = cplex.intVarArray((t1+1)*(t2+1)-1,0,tmax);
14
-
15
- //制約式(1)
16
- IloLinearNumExpr sum = cplex.linearNumExpr();
1
+ wsdedewddedededwedddsaeewdwedewvvrefesxdccsdwcd
17
- for(int i=0, j=1; i<X.length; i++,j++) {
18
- sum.addTerm((int)j/(t2+1),X[i]);
19
- cplex.addLe(sum1,t1);
20
- }
21
- cplex.addEq(sum1,t1);
22
-
23
-
24
- //制約式(2)
25
- IloIntVar[] array1 = cplex.intVarArray(X.length,0,t1*tmax);
26
- for(int i=0, j=1; i<X.length; i++,j++) {
27
- array1[i]= (j/(t2+1))*X[i]; //エラー箇所
28
- cplex.addLe(array1[i],a);
29
- }
30
- }
31
- }
32
-
33
- ```
34
- 制約式(1)
35
- X[2]+X[3]+X[4]+2X[5]+2X[6]+2X[7]+3X[8]+3X[9]+3X[10]= 3
36
-
37
- 制約式(2)
38
- X[2]<=a
39
- X[3]<=a
40
- X[4]<=a
41
- 2X[5]<=a
42
- 2X[6]<=a
43
- 2X[7]<=a
44
- 3X[8]<=a
45
- 3X[9]<=a
46
- 3X[10]<=a
47
-
48
-
49
- という風に制約式を作りたいです。
50
- 制約式(1)の各項が全て変数a以下になるように制約を加えたものが制約式(2)になります。
51
-
52
- (1)の方は問題ないのですが、(2)で
53
- 「演算子 * は引数の型 int, IloIntVar で未定義です」
54
- と表示されてしまいます。
55
-
56
- 係数j/(t2+1)と各項X[i]を掛けて配列array1に代入し、それをforで回して求めようとしてます。
57
- 演算子が未定義というのもよくわかりません。
58
- 原因がわかる方、よりスマートな書き方があれば教えて頂きたいです。