An algorithm for optimal structural design with frequency constraints