Optimal Thrust Allocation Methods for Dynamic Positioning of Ships