Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- public class GeneticAlgorithm {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- // Read input
- String parent1 = scanner.nextLine();
- String parent2 = scanner.nextLine();
- int splitPoint = scanner.nextInt();
- // Perform crossover
- String child1 = parent1.substring(0, splitPoint) + parent2.substring(splitPoint);
- String child2 = parent2.substring(0, splitPoint) + parent1.substring(splitPoint);
- // Calculate fitness levels
- double child1Fitness = calculateFitness(child1);
- double child2Fitness = calculateFitness(child2);
- // Determine the surviving child
- String survivor = (child1Fitness >= child2Fitness) ? child1 : child2;
- // Check if mutation is required
- if (calculateFitness(survivor) < 0.5) {
- survivor = flipBits(survivor);
- }
- // Print the surviving child
- System.out.println(survivor);
- }
- private static double calculateFitness(String bitString) {
- int onesCount = 0;
- for (char bit : bitString.toCharArray()) {
- if (bit == '1') {
- onesCount++;
- }
- }
- return (double) onesCount / bitString.length();
- }
- private static String flipBits(String bitString) {
- StringBuilder flipped = new StringBuilder();
- for (char bit : bitString.toCharArray()) {
- flipped.append((bit == '0') ? '1' : '0');
- }
- return flipped.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment