A bidirectional evolutionary structural optimization algorithm for mass minimization with multiple structural constraints. (27th December 2018)