chavdardim1990

Untitled

Jun 7th, 2023
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. public class GeneticAlgorithm {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6.  
  7. // Read input
  8. String parent1 = scanner.nextLine();
  9. String parent2 = scanner.nextLine();
  10. int splitPoint = scanner.nextInt();
  11.  
  12. // Perform crossover
  13. String child1 = parent1.substring(0, splitPoint) + parent2.substring(splitPoint);
  14. String child2 = parent2.substring(0, splitPoint) + parent1.substring(splitPoint);
  15.  
  16. // Calculate fitness levels
  17. double child1Fitness = calculateFitness(child1);
  18. double child2Fitness = calculateFitness(child2);
  19.  
  20. // Determine the surviving child
  21. String survivor = (child1Fitness >= child2Fitness) ? child1 : child2;
  22.  
  23. // Check if mutation is required
  24. if (calculateFitness(survivor) < 0.5) {
  25. survivor = flipBits(survivor);
  26. }
  27.  
  28. // Print the surviving child
  29. System.out.println(survivor);
  30. }
  31.  
  32. private static double calculateFitness(String bitString) {
  33. int onesCount = 0;
  34. for (char bit : bitString.toCharArray()) {
  35. if (bit == '1') {
  36. onesCount++;
  37. }
  38. }
  39. return (double) onesCount / bitString.length();
  40. }
  41.  
  42. private static String flipBits(String bitString) {
  43. StringBuilder flipped = new StringBuilder();
  44. for (char bit : bitString.toCharArray()) {
  45. flipped.append((bit == '0') ? '1' : '0');
  46. }
  47. return flipped.toString();
  48. }
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment