I need you to modify the below code, here each index '['L1', 'L3', 'L5', 'L6', 'L7', 'W1', 'W3', 'W5', 'W6', 'W7', 'Io', 'CP', 'VCM']' are having their own respective bounds as given below,
design_space_bounds = ['L1', 'L3', 'L5', 'L6', 'L7', 'W1', 'W3', 'W5', 'W6', 'W7', 'Io', 'CP', 'VCM']
bounds = {
    'L1': (0.18e-6, 1e-6),
    'L3': (0.18e-6, 1e-6),
    'L5': (0.18e-6, 1e-6),
    'L6': (0.18e-6, 1e-6),
    'L7': (0.18e-6, 1e-6),
    'W1': (1e-6, 12e-6),
    'W3': (2.52e-6, 28e-6),
    'W5': (2.16e-6, 24e-6),
    'W6': (32e-6, 100e-6),
    'W7': (13.5e-6, 100e-6),
    'Io': (15e-6, 30e-6),
    'CP': (0.44e-12, 3e-12),
    'VCM': (0.8, 1.4)
}

But in the below given function 'adjust_chromosome_value' were implemented with 'random.uniform(W_min, W_max)', 'random.uniform(L_min, L_max)', 'np.clip(adjusted_chromosome[i], L_min, L_max)', 'np.clip(adjusted_chromosome[i], W_min, W_max)', which is using generalized common min and max values for all the index values, but i need to use the dedicated bounds values of each index in its respective computation, which is given above for all the implementation, 'random.uniform(W_min, W_max)', 'random.uniform(L_min, L_max)', 'np.clip(adjusted_chromosome[i], L_min, L_max)', 'np.clip(adjusted_chromosome[i], W_min, W_max)' given in the below function. 

# Define the constraints for L and W values for adjust_chromosome_value
L_max = 1e-6
L_min = 0.18e-6
W_max = 100e-6
W_min = 1e-6
VCM_max = 0.8
VCM_min = 1.4

# Define a function to adjust chromosome values based on transistor regions
def adjust_chromosome_value(chromosome, transistor_regions):
    adjusted_chromosome = chromosome.copy()

    # Check if any transistor region is NOT 2
    if any(region != 2 for region in transistor_regions.values()):
        for transistor, region in transistor_regions.items():
            if region == 1:
                # Increase "W" and decrease "L" for the corresponding transistor
                if transistor in ["M1", "M2"]:
                    index_W1 = design_space_bounds.index('W1')
                    index_L1 = design_space_bounds.index('L1')
                    index_W3 = design_space_bounds.index('W3')
                    index_L3 = design_space_bounds.index('L3')
                    index_W5 = design_space_bounds.index('W5')
                    index_L5 = design_space_bounds.index('L5')
                    index_W6 = design_space_bounds.index('W6')
                    index_L6 = design_space_bounds.index('L6')
                    index_W7 = design_space_bounds.index('W7')
                    index_L7 = design_space_bounds.index('L7')
                    index_VCM = design_space_bounds.index('VCM')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 1e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W1] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_W3] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_W5] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_W6] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_W7] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L1] = random.uniform(L_min, L_max)
                        adjusted_chromosome[index_L3] = random.uniform(L_min, L_max)
                        adjusted_chromosome[index_L5] = random.uniform(L_min, L_max)
                        adjusted_chromosome[index_L6] = random.uniform(L_min, L_max)
                        adjusted_chromosome[index_L7] = random.uniform(L_min, L_max)
                        adjusted_chromosome[index_VCM] = random.uniform(VCM_min, VCM_max)
                    else:
                        # Adjust W1 and L1 based on the original conditions
                        adjusted_chromosome[index_W1] *= 0.9  # Decrease "W" by 2% changed to 3%
                        adjusted_chromosome[index_L1] *= 1.1  # Increase "L" by 2% changed to 3%
                if transistor in ["M3", "M4"]:
                    index_W3 = design_space_bounds.index('W3')
                    index_L3 = design_space_bounds.index('L3')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W3 and L3 within specified bounds
                        adjusted_chromosome[index_W3] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L3] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W3] *= 1.05  # Increase "W" by 5%
                        adjusted_chromosome[index_L3] *= 0.95  # Decrease "L" by 5%
                if transistor in ["M5", "M8"]:
                    index_W5 = design_space_bounds.index('W5')
                    index_L5 = design_space_bounds.index('L5')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W5] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L5] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W5] *= 1.05  # Increase "W" by 5%
                        adjusted_chromosome[index_L5] *= 0.95  # Decrease "L" by 5%
                if transistor == "M6":
                    index_W6 = design_space_bounds.index('W6')
                    index_L6 = design_space_bounds.index('L6')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W6] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L6] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W6] *= 0.9  # Decrease "W" by 10%
                        adjusted_chromosome[index_L6] *= 1.1  # Increase "L" by 10%
                if transistor == "M7":
                    index_W7 = design_space_bounds.index('W7')
                    index_L7 = design_space_bounds.index('L7')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W7] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L7] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W7] *= 0.7  # Decrease "W" by 10% change it to 0.9
                        adjusted_chromosome[index_L7] *= 1.1  # Increase "L" by 10%

            elif region == 3:
                # Decrease "W" and increase "L" for the corresponding transistor
                if transistor in ["M1", "M2"]:
                    index_W1 = design_space_bounds.index('W1')
                    index_L1 = design_space_bounds.index('L1')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W1] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L1] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W1] *= 0.9  # Decrease "W" by 2% 
                        adjusted_chromosome[index_L1] *= 1.1  # Increase "L" by 2% 
                if transistor in ["M3", "M4"]:
                    index_W3 = design_space_bounds.index('W3')
                    index_L3 = design_space_bounds.index('L3')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W3] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L3] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W3] *= 0.95  # Decrease "W" by 5%
                        adjusted_chromosome[index_L3] *= 1.05  # Increase "L" by 5%
                if transistor in ["M5", "M8"]:
                    index_W5 = design_space_bounds.index('W5')
                    index_L5 = design_space_bounds.index('L5')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W5] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L5] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W5] *= 0.95  # Decrease "W" by 5%
                        adjusted_chromosome[index_L5] *= 1.05  # Increase "L" by 5%
                if transistor == "M6":
                    index_W6 = design_space_bounds.index('W6')
                    index_L6 = design_space_bounds.index('L6')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W6] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L6] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W6] *= 0.95  # Increase "W" by 5%
                        adjusted_chromosome[index_L6] *= 1.05  # Decrease "L" by 5%
                if transistor == "M7":
                    index_W7 = design_space_bounds.index('W7')
                    index_L7 = design_space_bounds.index('L7')
                    # Check if both W1 and L1 are at specific values
                    if (chromosome[index_W1] == 0.24e-6) and (chromosome[index_L1] == 1e-6):
                        # Randomly choose new values for W1 and L1 within specified bounds
                        adjusted_chromosome[index_W7] = random.uniform(W_min, W_max)
                        adjusted_chromosome[index_L7] = random.uniform(L_min, L_max)
                    else:
                        adjusted_chromosome[index_W7] *= 0.8  # Decrease "W" by 5%
                        adjusted_chromosome[index_L7] *= 1.1  # Increase "L" by 5%

        # Ensure adjusted values are within constraints
        for i in range(len(adjusted_chromosome)):
            if design_space_bounds[i].startswith('L'):
                adjusted_chromosome[i] = np.clip(adjusted_chromosome[i], L_min, L_max)
            elif design_space_bounds[i].startswith('W'):
                adjusted_chromosome[i] = np.clip(adjusted_chromosome[i], W_min, W_max)

    print(f"Adjust Chormosome: {adjusted_chromosome}")
    return adjusted_chromosome