param N integer := 378; param nn1{1..5}; param nn2{1..5}; param ny11 := nn1[1]; param ny22 := nn2[1]; param nu11 := nn1[2]; param nu22 := nn2[2]; param ny1 := nn1[3]; param ny2 := nn2[3]; param nu1 := nn1[4]; param nu2 := nn2[4]; param td1 := nn1[5]; param td2 := nn2[5]; param mo := max(ny11,ny22,td1+nu11,td2+nu22,ny1,ny2,td1+nu1,td2+nu2)+1; param theta1{1..55}; param theta2{1..55}; set I = 1 .. N; set J = N..2*N-1; param Nu integer := 189; param a1{1..Nu}; param a2{1..Nu}; param k{i in 1..Nu} := i; param mx := 1e-2; param my := 8e-3; param pi := 4*atan(1); param alp :=exp(-15/75); param pn{i in 0..N-1} := i*2*pi/N; var alpha{1..Nu,1..2} := Uniform(-pi,pi); param ind{0..14} integer; var phi{i in 0..14,0..2*N-1,1..5} := if i==0 then 1; var x{i in -mo..2*N-1,j in 1..2}; var y{i in -mo..2*N-1, j in 1..2} := if i >= 0 then .01; var t; minimize obj: t; s.t. bound31{j in N..2*N-1}: -t<=y[j,1]; s.t. bound32{j in N..2*N-1}: y[j,1]<= t; s.t. bound41{j in N..2*N-1}: -t<=y[j,2]; s.t. bound42{j in N..2*N-1}: y[j,2]<= t; s.t. xstart{i in -mo..-1, j in 1..2}: x[i,j] =0; s.t. pstart{i in 0..2*N-1,j in 1..4}: phi[0,i,j] = 1; s.t. ystart{i in -mo..-1, j in 1..2}: y[i,j] =0; s.t. inp1{i in 0..N-1, j in 1..2}: x[i,j]= if j==1 then sum{u in 1..Nu}(a1[u]*cos(pn[i]*k[u]+alpha[u,j])) else sum{u in 1..Nu}(a2[u]*cos(pn[i]*k[u]+alpha[u,j])); s.t. inp2{i in N..2*N-1, j in 1..2}: x[i,j] = x[i-N,j]; s.t. p1{i in 0..2*N-1,j in 1..ny11}: phi[1,i,j]=y[i-j,1]; s.t. p2{i in 0..2*N-1,j in 1..ny22}: phi[2,i,j]=y[i-j,2]; s.t. p3{i in 0..2*N-1,j in td1..td1+nu11}: phi[3,i,j-td1+1]=x[i-j,1]; s.t. p4{i in 0..2*N-1,j in td2..td2+nu22}: phi[4,i,j-td2+1]=x[i-j,2]; s.t. p5{i in 0..2*N-1,j in 1..ny1,l in 1..j}: phi[5,i,(j-1)*j/2+l]=y[i-j,1]*y[i-l,1]; s.t. p6{i in 0..2*N-1,j in 1..ny2,l in 1..j}: phi[6,i,(j-1)*j/2+l]=y[i-j,2]*y[i-l,2]; s.t. p7{i in 0..2*N-1,j in td1..td1+nu1,l in td1..j}: phi[7,i,(j-td1)*(j-td1+1)/2+l-td1+1]=x[i-j,1]*x[i-l,1]; s.t. p8{i in 0..2*N-1,j in td2..td2+nu2,l in td2..j}: phi[8,i,(j-td2)*(j-td2+1)/2+l-td2+1]=x[i-j,2]*x[i-l,2]; s.t. p9{i in 0..2*N-1,j in 1..ny1,l in td1..td1+nu1}: phi[9,i,(j-1)*(nu1+1)+l-td1+1]=y[i-j,1]*x[i-l,1]; s.t. p10{i in 0..2*N-1,j in 1..ny1,l in td2..td2+nu2}: phi[10,i,(j-1)*(nu2+1)+l-td2+1]=y[i-j,1]*x[i-l,2]; s.t. p11{i in 0..2*N-1,j in 1..ny2,l in td1..td1+nu1}: phi[11,i,(j-1)*(nu1+1)+l-td1+1]=y[i-j,2]*x[i-l,1]; s.t. p12{i in 0..2*N-1,j in 1..ny2,l in td2..td2+nu2}: phi[12,i,(j-1)*(nu2+1)+l-td2+1]=y[i-j,2]*x[i-l,2]; s.t. p13{i in 0..2*N-1,j in 1..ny1,l in 1..ny2}: phi[13,i,(j-1)*ny2+l]=y[i-j,1]*y[i-l,2]; s.t. p14{i in 0..2*N-1,j in td1..td1+nu1,l in td2..td2+nu2}: phi[14,i,(j-td1)*(nu2+1)+l-td2+1]=x[i-j,1]*x[i-l,2]; s.t. out1{i in 0..2*N-1,j in 1..2}: y[i,j]=if j==1 then sum{kk in 0..14,l in 1..ind[kk]} phi[kk,i,l]*theta1[sum{ll in 0..kk-1}ind[ll]+l] else sum{kk in 0..14,l in 1..ind[kk]} phi[kk,i,l]*theta2[sum{ll in 0..kk-1}ind[ll]+l]; s.t. move1{i in 0..N-2, j in 1..2}: -mx <= x[i+1,j] - x[i,j] <= mx; s.t. move2{j in 1..2}: -mx <= x[0,j]-x[N-1,j] <= mx; s.t. movey{i in N-1..2*N-2, j in 1..2}: -my <= y[i+1,j] - y[i,j] <= my; data; param a1 := 1 0.000222890874624067 2 0.000000000000000000 3 0.003343363119360997 4 0.000222890874624066 5 0.000000000000000000 6 0.003343363119360994 7 0.000222890874624067 8 0.000000000000000000 9 0.003343363119360992 10 0.000222890874624066 11 0.000000000000000000 12 0.003343363119360994 13 0.000222890874624066 14 0.000000000000000000 15 0.003343363119360996 16 0.000222890874624067 17 0.000000000000000000 18 0.003343363119360992 19 0.000222890874624067 20 0.000000000000000000 21 0.003343363119360996 22 0.000222890874624067 23 0.000000000000000000 24 0.003343363119360994 25 0.000222890874624066 26 0.000000000000000000 27 0.003343363119360996 28 0.000222890874624067 29 0.000000000000000000 30 0.003343363119360997 31 0.000222890874624066 32 0.000000000000000000 33 0.003343363119360992 34 0.000222890874624067 35 0.000000000000000000 36 0.003343363119360998 37 0.000222890874624067 38 0.000000000000000000 39 0.003343363119360993 40 0.000222890874624066 41 0.000000000000000000 42 0.003343363119360994 43 0.000222890874624067 44 0.000000000000000000 45 0.003343363119360991 46 0.000222890874624067 47 0.000000000000000000 48 0.003343363119360994 49 0.000222890874624066 50 0.000000000000000000 51 0.000334336311936099 52 0.000022289087462407 53 0.000000000000000000 54 0.000334336311936100 55 0.000022289087462407 56 0.000000000000000000 57 0.000334336311936099 58 0.000022289087462407 59 0.000000000000000000 60 0.000334336311936100 61 0.000022289087462407 62 0.000000000000000000 63 0.000334336311936099 64 0.000022289087462407 65 0.000000000000000000 66 0.000334336311936100 67 0.000022289087462407 68 0.000000000000000000 69 0.000334336311936099 70 0.000022289087462407 71 0.000000000000000000 72 0.000334336311936100 73 0.000022289087462407 74 0.000000000000000000 75 0.000334336311936099 76 0.000022289087462407 77 0.000000000000000000 78 0.000334336311936099 79 0.000022289087462407 80 0.000000000000000000 81 0.000334336311936099 82 0.000022289087462407 83 0.000000000000000000 84 0.000334336311936099 85 0.000022289087462407 86 0.000000000000000000 87 0.000334336311936099 88 0.000022289087462407 89 0.000000000000000000 90 0.000334336311936100 91 0.000022289087462407 92 0.000000000000000000 93 0.000334336311936099 94 0.000022289087462407 95 0.000000000000000000 96 0.000334336311936099 97 0.000022289087462407 98 0.000000000000000000 99 0.000334336311936100 100 0.000022289087462407 101 0.000000000000000000 102 0.000334336311936099 103 0.000022289087462407 104 0.000000000000000000 105 0.000334336311936100 106 0.000022289087462407 107 0.000000000000000000 108 0.000334336311936100 109 0.000022289087462407 110 0.000000000000000000 111 0.000334336311936100 112 0.000022289087462407 113 0.000000000000000000 114 0.000334336311936100 115 0.000022289087462407 116 0.000000000000000000 117 0.000334336311936100 118 0.000022289087462407 119 0.000000000000000000 120 0.000334336311936100 121 0.000022289087462407 122 0.000000000000000000 123 0.000334336311936100 124 0.000022289087462406 125 0.000000000000000000 126 0.000334336311936100 127 0.000022289087462407 128 0.000000000000000000 129 0.000334336311936100 130 0.000022289087462407 131 0.000000000000000000 132 0.000334336311936099 133 0.000022289087462407 134 0.000000000000000000 135 0.000334336311936100 136 0.000022289087462407 137 0.000000000000000000 138 0.000334336311936100 139 0.000022289087462407 140 0.000000000000000000 141 0.000334336311936100 142 0.000022289087462407 143 0.000000000000000000 144 0.000334336311936099 145 0.000022289087462406 146 0.000000000000000000 147 0.000334336311936099 148 0.000022289087462407 149 0.000000000000000000 150 0.000334336311936100 151 0.000022289087462407 152 0.000000000000000000 153 0.000334336311936100 154 0.000022289087462407 155 0.000000000000000000 156 0.000334336311936100 157 0.000022289087462407 158 0.000000000000000000 159 0.000334336311936099 160 0.000022289087462407 161 0.000000000000000000 162 0.000334336311936099 163 0.000022289087462407 164 0.000000000000000000 165 0.000334336311936100 166 0.000022289087462407 167 0.000000000000000000 168 0.000334336311936100 169 0.000022289087462407 170 0.000000000000000000 171 0.000334336311936099 172 0.000022289087462407 173 0.000000000000000000 174 0.000334336311936099 175 0.000022289087462407 176 0.000000000000000000 177 0.000334336311936100 178 0.000022289087462407 179 0.000000000000000000 180 0.000334336311936099 181 0.000022289087462407 182 0.000000000000000000 183 0.000334336311936099 184 0.000022289087462407 185 0.000000000000000000 186 0.000334336311936100 187 0.000022289087462406 188 0.000000000000000000 189 0.000334336311936100 ; param a2 := 1 0.000000000000000000 2 0.000222890874624067 3 0.003343363119361007 4 0.000000000000000000 5 0.000222890874624067 6 0.003343363119361004 7 0.000000000000000000 8 0.000222890874624067 9 0.003343363119361004 10 0.000000000000000000 11 0.000222890874624067 12 0.003343363119361009 13 0.000000000000000000 14 0.000222890874624067 15 0.003343363119361005 16 0.000000000000000000 17 0.000222890874624067 18 0.003343363119361007 19 0.000000000000000000 20 0.000222890874624067 21 0.003343363119361009 22 0.000000000000000000 23 0.000222890874624067 24 0.003343363119361009 25 0.000000000000000000 26 0.000222890874624067 27 0.003343363119361009 28 0.000000000000000000 29 0.000222890874624067 30 0.003343363119361004 31 0.000000000000000000 32 0.000222890874624067 33 0.003343363119361010 34 0.000000000000000000 35 0.000222890874624067 36 0.003343363119361006 37 0.000000000000000000 38 0.000222890874624067 39 0.003343363119361006 40 0.000000000000000000 41 0.000222890874624067 42 0.003343363119361005 43 0.000000000000000000 44 0.000222890874624067 45 0.003343363119361003 46 0.000000000000000000 47 0.000222890874624067 48 0.003343363119361007 49 0.000000000000000000 50 0.000222890874624067 51 0.000334336311936100 52 0.000000000000000000 53 0.000022289087462407 54 0.000334336311936101 55 0.000000000000000000 56 0.000022289087462407 57 0.000334336311936101 58 0.000000000000000000 59 0.000022289087462407 60 0.000334336311936100 61 0.000000000000000000 62 0.000022289087462406 63 0.000334336311936101 64 0.000000000000000000 65 0.000022289087462407 66 0.000334336311936101 67 0.000000000000000000 68 0.000022289087462407 69 0.000334336311936100 70 0.000000000000000000 71 0.000022289087462407 72 0.000334336311936101 73 0.000000000000000000 74 0.000022289087462407 75 0.000334336311936100 76 0.000000000000000000 77 0.000022289087462407 78 0.000334336311936101 79 0.000000000000000000 80 0.000022289087462407 81 0.000334336311936100 82 0.000000000000000000 83 0.000022289087462407 84 0.000334336311936101 85 0.000000000000000000 86 0.000022289087462407 87 0.000334336311936101 88 0.000000000000000000 89 0.000022289087462407 90 0.000334336311936101 91 0.000000000000000000 92 0.000022289087462407 93 0.000334336311936101 94 0.000000000000000000 95 0.000022289087462407 96 0.000334336311936101 97 0.000000000000000000 98 0.000022289087462407 99 0.000334336311936100 100 0.000000000000000000 101 0.000022289087462407 102 0.000334336311936101 103 0.000000000000000000 104 0.000022289087462407 105 0.000334336311936101 106 0.000000000000000000 107 0.000022289087462407 108 0.000334336311936101 109 0.000000000000000000 110 0.000022289087462407 111 0.000334336311936101 112 0.000000000000000000 113 0.000022289087462407 114 0.000334336311936101 115 0.000000000000000000 116 0.000022289087462407 117 0.000334336311936101 118 0.000000000000000000 119 0.000022289087462407 120 0.000334336311936101 121 0.000000000000000000 122 0.000022289087462407 123 0.000334336311936101 124 0.000000000000000000 125 0.000022289087462407 126 0.000334336311936101 127 0.000000000000000000 128 0.000022289087462407 129 0.000334336311936100 130 0.000000000000000000 131 0.000022289087462407 132 0.000334336311936100 133 0.000000000000000000 134 0.000022289087462407 135 0.000334336311936101 136 0.000000000000000000 137 0.000022289087462407 138 0.000334336311936100 139 0.000000000000000000 140 0.000022289087462407 141 0.000334336311936101 142 0.000000000000000000 143 0.000022289087462407 144 0.000334336311936101 145 0.000000000000000000 146 0.000022289087462407 147 0.000334336311936101 148 0.000000000000000000 149 0.000022289087462407 150 0.000334336311936100 151 0.000000000000000000 152 0.000022289087462407 153 0.000334336311936101 154 0.000000000000000000 155 0.000022289087462407 156 0.000334336311936101 157 0.000000000000000000 158 0.000022289087462407 159 0.000334336311936101 160 0.000000000000000000 161 0.000022289087462407 162 0.000334336311936100 163 0.000000000000000000 164 0.000022289087462407 165 0.000334336311936101 166 0.000000000000000000 167 0.000022289087462407 168 0.000334336311936101 169 0.000000000000000000 170 0.000022289087462407 171 0.000334336311936101 172 0.000000000000000000 173 0.000022289087462407 174 0.000334336311936101 175 0.000000000000000000 176 0.000022289087462407 177 0.000334336311936100 178 0.000000000000000000 179 0.000022289087462407 180 0.000334336311936100 181 0.000000000000000000 182 0.000022289087462407 183 0.000334336311936101 184 0.000000000000000000 185 0.000022289087462407 186 0.000334336311936101 187 0.000000000000000000 188 0.000022289087462407 189 0.000334336311936101 ; param nn1 := 1 4 2 4 3 2 4 1 5 1 ; param nn2 := 1 4 2 4 3 2 4 1 5 1 ; param theta1 := 1 2.03864867E-07 2 0.285694268 3 0.18635982 4 0.089657647 5 0.194695534 6 0.0430581642 7 0.127531047 8 0.10198672 9 0.00710628085 10 -0.468482504 11 -0.456244308 12 -0.277500058 13 -0.154069349 14 -0.025268557 15 0.561727289 16 0.407211533 17 0.215854217 18 0.109830097 19 0.00565726923 20 -198.447103 21 320.067051 22 -130.013242 23 -65.8084213 24 77.5109037 25 -21.3410784 26 0.787890389 27 7.39848218 28 -19.3207814 29 1.75715408 30 7.3164134 31 -10.2034947 32 7.18411879 33 -115.095362 34 -9.34076031 35 93.8935778 36 -11.6909496 37 62.4575882 38 13.5410976 39 -53.5132462 40 -1.84210589 41 61.3262926 42 0.549318718 43 -36.2658647 44 3.1189285 45 -28.802668 46 -0.800808306 47 16.789681 48 232.67841 49 -136.86058 50 -183.824698 51 108.914098 52 -2.56941865 53 -6.23845388 54 -8.79138994 55 25.648625 ; param theta2 := 1 2.7934064E-05 2 0.103222348 3 0.100604488 4 0.0228412518 5 0.0309463861 6 0.142987314 7 0.163457024 8 0.159247778 9 0.130155891 10 -0.365105111 11 -0.465492823 12 -0.267075648 13 -0.134845498 14 -0.0296975095 15 0.771148851 16 0.494423193 17 0.260581844 18 0.107998863 19 -0.00979548709 20 14.5435202 21 -13.2441078 22 -0.440352568 23 5.26672539 24 -4.46454248 25 0.69225083 26 -0.112379484 27 7.44615257 28 -4.43107291 29 -1.58503942 30 3.09797088 31 -5.81463511 32 32.0417403 33 -5.47940057 34 -25.8930792 35 9.41504905 36 -42.62413 37 25.9621262 38 33.5940277 39 -24.5028357 40 -18.0154727 41 -5.14320009 42 11.4737285 43 2.45151587 44 23.8991518 45 -5.085284 46 -16.0534403 47 2.93749645 48 -33.1134629 49 13.6296698 50 22.7600102 51 -9.2894652 52 0.818777238 53 -3.09977152 54 -8.49067596 55 12.3313026 ; let ind[0] := 1; let ind[1] := ny11; let ind[2] := ny22; let ind[3] := nu11+1; let ind[4] := nu22+1; let ind[5] := ny1*(ny1+1)/2; let ind[6] := ny2*(ny2+1)/2; let ind[7] := (nu1+1)*(nu1+2)/2; let ind[8] := (nu2+1)*(nu2+2)/2; let ind[9] := ny1*(nu1+1); let ind[10] := ny1*(nu2+1); let ind[11] := ny2*(nu1+1); let ind[12] := ny2*(nu2+1); let ind[13] := ny1*ny2; let ind[14] := (nu1+1)*(nu2+1);