これが私の完全な問題です:

情報:
*最大。総投資額: $125
*ペイオフは、購入したユニットの合計 x ペイオフ/ユニット
*投資あたりのコスト: バイイン コスト + コスト/ユニット x ユニット数 (少なくとも 1 つのユニットを購入する場合)
※費用は投資1件あたりの費用の合計
制約:
※2と5の両方に投資することはできません。
※2と3のうち少なくとも1つに投資する場合、1にのみ投資することができます。
*3、4、5のうち少なくとも2つを投資する必要があります。
※最大ユニット数を超えて投資することはできません。
問題: 利益を最大化する: ペイオフ - コスト
 xi: # of units i ∈ {1,2,3,4,5}
 yi=1 if xi>0 else yi=0
 cost = sum{i in I} buyInCost_i * yi + cost-unit_i*xi
 pay-off = sum{i in I} (pay-off/unit)_i*xi
 profit = pay-off - cost
 Maximize profit
 Subject to
 y2+y5 <= 1
 y1<= y2+y3
 y3+y4+y5 >= 2
 x1<=5, x2<=4, x3<=5, x4<=7, x5<=3
 cost<=125
これが私の質問です:
たとえば、このバイナリ変数 y があります
 yi=1 if xi>0 else yi=0  and i ∈ {1,2,3,4,5}
i をデータセットとして宣言しました
 set I;
 data;
 set I := 1 2 3 4 5;
glpk の y 変数に if else 条件を追加する方法がわかりません。助けてもらえますか?
私のモデリング:
 set I;
 /*if x[i]>0 y[i]=1 else y[i]=0 ?????*/
 var y{i in I}, binary;
 param a{i in I};
 /* buy-in cost of investment i */
 param b{i in I};
 /* cost per unit of investment i */
 param c{i in I};
 /* pay-off per unit of investment i */
 param d{i in I};
 /* max number of units of investment i */
 var x{i in I} >=0;
 /* Number of units that is bought of investment i */
 var po := sum{i in I} c[i]*x[i];
 var cost := sum{i in I} a[i]*y[i] + b[i]*x[i];
 maximize profit: po-cost;
 s.t. c1: y[2]+y[5]<=1;
 s.t. c2: y[1]<y[2]+y[3];
 s.t. c3: y[3]+y[4]+y[5]>=2;
 s.t. c4: x[1]<=5 
     x[2]<=4
     x[3]<=5
     x[4]<=7
     x[5]<=3;
 s.t. c5: cost <=125;
 s.t. c6{i in I}: M * y[i] > x[i];   // if condition of y[i] 
 set I := 1 2 3 4 5;
 param a :=
1 25
2 35
3 28
4 20
5 40;
 param b :=
1 5
2 7
3 6
4 4
5 8;
 param c :=
1 15
2 25
3 17
4 13
5 18;
 param d :=
1 5
2 4
3 5
4 7
5 3;
 param M := 10000;
次の構文エラーが発生します。
      problem.mod:21: syntax error in variable statement 
      Context: ...I } ; param d { i in I } ; var x { i in I } >= 0 ; var po :=
      MathProg model processing error