Nonlinear Integer and Discrete Programming for Topological Decision Making in Engineering Design