We find optimal designs for linear models using anovel algorithm that iteratively combines a semidefinite programming(SDP) approach with adaptive grid techniques.The proposed algorithm is also adapted to find locally optimaldesigns for nonlinear models. The search space is firstdiscretized, and SDP is applied to find the optimal designbased on the initial grid. The points in the next grid set arepoints that maximize the dispersion function of the SDPgeneratedoptimal design using nonlinear programming. Theprocedure is repeated until a user-specified stopping rule isreached. The proposed algorithm is broadly applicable, andwe demonstrate its flexibility using (i) models with one ormore variables and (ii) differentiable design criteria, suchas A-, D-optimality, and non-differentiable criterion like Eoptimality,including the mathematically more challengingcasewhen theminimum eigenvalue of the informationmatrixof the optimal design has geometric multiplicity larger than 1. Our algorithm is computationally efficient because it isbased on mathematical programming tools and so optimalityis assured at each stage; it also exploits the convexity of theproblems whenever possible. Using several linear and nonlinearmodelswith one or more factors, we showthe proposedalgorithm can efficiently find optimal designs.