Optimization Methods For Side-Chain Positioning And Macromolecular Docking