Active and semi-active control of structures: a review of recent advances