| 216 | } |
| 217 | |
| 218 | private double[] pulseSwim(double[] xi, double tau, double phase, double[] lb, double[] ub) { |
| 219 | int dim = xi.length; |
| 220 | double amp = 0.1 * (1 - tau) * (1 - tau); |
| 221 | double osc = amp * Math.sin(2 * Math.PI * 0.5 * tau + phase); |
| 222 | double[] result = new double[dim]; |
| 223 | for (int j = 0; j < dim; j++) |
| 224 | result[j] = clamp(xi[j] + osc * (ub[j] - lb[j]), lb[j], ub[j]); |
| 225 | return result; |
| 226 | } |
| 227 | |
| 228 | private double[] transdifferentiate(double[] xi, double[] lb, double[] ub) { |
| 229 | int dim = xi.length; |