public static Position init_position(Problem problem) { double[] solution = new double[problem.dimension]; for (int i = 0; i < problem.dimension; ++i) { solution[i] = GlobalMembers.randu() * 200.0f - 100.0f; } return(new Position(solution.ToList(), 1E100)); }
public void random_walk(List <Vibration> vibrations) { for (int i = 0; i < position.solution.Count; ++i) { previous_move[i] *= GlobalMembers.randu(); double target_position = dimension_mask[i] ? vibrations[RandomNumbers.NextNumber() % vibrations.Count].position.solution[i] : target_vibr.position.solution[i]; previous_move[i] += GlobalMembers.randu() * (target_position - position.solution[i]); position.solution[i] += previous_move[i]; } }
public void mask_changing(double p_change, double p_mask) { if (GlobalMembers.randu() > Math.Pow(p_change, inactive_deg)) { inactive_deg = 0; p_mask *= GlobalMembers.randu(); for (int i = 0; i < dimension_mask.Count; ++i) { dimension_mask[i] = (GlobalMembers.randu()) < p_mask; } } }