Inverse Design Methods For Targeted Self-Assembly