Python Forum
missing 1 required positional argument: - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: missing 1 required positional argument: (/thread-17567.html)



missing 1 required positional argument: - psosmol - Apr-16-2019


Hello, I have for files AllOnesGA.py with the main(), GeneticAlgorithm.py,Population.py and Individual.py
My problem is that when I try to run the program with pycharm an error message happens:

in line 4:
population = genetic_algorithm.GeneticAlgorithm.initPopulation(50)
TypeError: initPopulation() missing 1 required positional argument: 'chromosomeLength'
Thanks

de code is:

import genetic_algorithm
def main():
    ga = genetic_algorithm.GeneticAlgorithm(100, 0.001, 0.95, 0)
    population = genetic_algorithm.GeneticAlgorithm.initPopulation(50)
    ga.evalPopulation(population)
    generation = 1
    while ga.isTerminationConditionMet(population) == false:
        print("Best solution", population.getFittest(0).toString())
        population = ga.crossoverPopulation(population)
        population = ga.mutatePopulation(population)
        ga.evalPopulation(population)
        generation += 1
    print("Found solution in ", generation, " generations")
    print("Best solution:", population.getFittest(0).toString())
if __name__ == "__main__":
    main()
and the file genetic_algorithm.py is:
import random
import population_file
import individual_file

class GeneticAlgorithm:
    def __init__(self, populationSize, mutationRate, crossoverRate, elitismCount):
        self.populationSize=populationSize
        self.mutationRate=mutationRate
        self.crossoverRate=crossoverRate
        self.elitismCount=elitismCount
    def initPopulation(self,chromosomeLength):
        population = population_file(self.populationSize, self.chromosomeLength)
        return population
    def calcFitness(self, individual):
        correctGenes = 0
        for geneIndex in range (0,individual.getChomosomeLength()):
            if individual.getGene(geneIndex)==1:
                correctGenes +=1
        fitness= correctGenes/individual.getChomosomeLength()
        individual.setFitness(fitness)
        return fitness
        ...



RE: missing 1 required positional argument: - Ecniv - Apr-16-2019

I think its because you put self.chromosomeLength instead of just chromosomeLength; as you are passing the variable not getting it from the self object...


RE: missing 1 required positional argument: - Larz60+ - Apr-16-2019

change line 4 to read:
population = ga.initPopulation(50)


RE: missing 1 required positional argument: - psosmol - Apr-16-2019

If I write:
population = ga.initPopulation(50) in line 4
the error is:

File "/home/psm/PycharmProjects/AllOnesGA/AllOnesGA.py", line 4, in main
population = ga.initPopulation(50)
File "/home/psm/PycharmProjects/AllOnesGA/genetic_algorithm.py", line 12, in initPopulation
population = population_file(self.populationSize, chromosomeLength)
TypeError: 'module' object is not callable


I think that I must change in the genetic_algorithm
this line:
population = population_file(self.populationSize, chromosomeLength)
for this:
population = population_file.Population(self.populationSize, chromosomeLength)

what do you think?


RE: missing 1 required positional argument: - Larz60+ - Apr-16-2019

don't do this:
    population = genetic_algorithm.GeneticAlgorithm.initPopulation(50)
    ga.evalPopulation(population)
do this:
    population = ga.initPopulation(50)



RE: missing 1 required positional argument: - psosmol - Apr-16-2019

If I do I get the message:

Error:
File "/home/psm/PycharmProjects/AllOnesGA/AllOnesGA.py", line 4, in main population = ga.initPopulation(50) File "/home/psm/PycharmProjects/AllOnesGA/genetic_algorithm.py", line 12, in initPopulation population = population_file(self.populationSize, chromosomeLength) TypeError: 'module' object is not callable



RE: missing 1 required positional argument: - Larz60+ - Apr-16-2019

Ok, but that error is different, and inside of the function that you wanted to call, so you are one step closer.
And is on this call:
population = population_file(self.populationSize, self.chromosomeLength)
Please use BBCode tags they are required by forum rules.


RE: missing 1 required positional argument: - DeaD_EyE - Apr-16-2019

population_file is a module.

Look at your imports in genetic_algorithm.py.
You're importing population_file. This is a module. I guess
you want to access a function or class inside this module.