Code generation by genetic algorithms

后端 未结 8 1245
予麋鹿
予麋鹿 2020-12-23 00:11

Evolutionary programming seems to be a great way to solve many optimization problems. The idea is very easy and the implementation does not make problems.

I was wond

8条回答
  •  盖世英雄少女心
    2020-12-23 00:29

    If you are sure you want to do this, you want genetic programming, rather than a genetic algorithm. GP allows you to evolve tree-structured programs. What you would do would be to give it a bunch of primitive operations (while($register), read($register), increment($register), decrement($register), divide($result $numerator $denominator), print, progn2 (this is GP speak for "execute two commands sequentially")).

    You could produce something like this:

    progn2(
      progn2(
        read($1)
        while($1
          progn2(
            while($1
              progn2( #add the input to the total
                increment($2)
                decrement($1)
              )
            )
            progn2( #increment number of values entered, read again
              increment($3)
              read($1)
            )
          )
        )
      )
      progn2( #calculate result
        divide($1 $2 $3)
        print($1)
      )
    )  
    

    You would use, as your fitness function, how close it is to the real solution. And therein lies the catch, that you have to calculate that traditionally anyway*. And then have something that translates that into code in (your language of choice). Note that, as you've got a potential infinite loop in there, you'll have to cut off execution after a while (there's no way around the halting problem), and it probably won't work. Shucks. Note also, that my provided code will attempt to divide by zero.

    *There are ways around this, but generally not terribly far around it.

提交回复
热议问题