Improving Genetic Programming Efficiency
- To: mathgroup at smc.vnet.net
- Subject: [mg43156] Improving Genetic Programming Efficiency
- From: hacksaw <hacksaw at toadmail.com>
- Date: Fri, 15 Aug 2003 04:27:03 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Hi, I am writing a genetic programming package in Mathematica. I would like to be able to create a Mathematica expression and store it in a variable or a list. The problem is that Mathematica will do some internal rearranging to place the expression in a canonical form. Here is an example: In[1]:= y := Plus[Times[Power[b, 2], a], Times[c, b]] In[2]:= FullForm[y] Out[2]//FullForm= Plus[Times[a,Power[b,2]],Times[b,c]] Previous, people who have written genetic programming packages have gotten around this "feature" of Mathematica by defining their own function names. This prevents the expression from being evaluated. At the time they want to evaluate the expression they uses the ReplaceAll[] function to change the name of the function to a Mathematica function. In[3]:= y := myPlus[myTimes[myPower[b, 2], a], myTimes[c,b]] In[4]:= FullForm[y] Out[4]//FullForm= myPlus[myTimes[myPower[b,2], a],myTimes[c,b]] In[5]:= FullForm[ReplaceAll[y,{myPlus -> Plus, myTimes -> Times, myPower -> Power}]] Out[5]//FullForm= Plus[Times[a,Power[b,2]],Times[b,c]] My issue is that this is a lot of extra overhead. If I had 4000 expressions, each with a 1000 functions, this would be 4,000,000 ReplaceAll[] function calls to rewrite the names of the functions. Does anyone have any suggestions that might be more efficient. Thanks in advance, David