What type of wave surfing is this?
I'm not sure I follow your logic with this. Could you explain how the pieces are meant to work?
Also, there might be a bug with w.move += getVelocity();, since that is the velocity of the robot not the wave.
To predict where to move: robot sums the predictions of the waves weighted by time since fired. After if it is positive it moves ahead, if it is negative it moves back.
To learn: Every wave gets the total velocity of the robot while it moves, not deleted. If the wave hits, it gets the sign of the total velocity and add it to it's slices.
When a wave is fired it gets the value in it's slices and sets it's prediction to it.