/* Induction of Kepler's Third Law Herbert A. Simon, Patrick W. Langley, Gary L. Bradshaw "Scientific Discovery as Problem Solving" SYNTHESE, Vol 47, No 1, April 1981 (table page 13) The induced law is (D^3/P^2)*10^6 = 7.50 Kind of. * With approx = 10 and total_approx = 5 (expected res = 365.256) But this was a fluke that it found the random value 633 [program = 1 * 633 * sqrt(D) * (D / sqrt(3)),res = 365.462720397033138,count = 1] [program = D * 633 * sqrt(D / 3),res = 365.462720397033081,count = 1] [program = 633 * D * (D / sqrt(3 * D)),res = 365.462720397033138,count = 1] [program = sqrt(D / 3) * (D * 633),res = 365.462720397033081,count = 1] * approx=20, total_approx=6 and constants -1000..1000 (365 is picked in all the cases...) [program = 365 * sqrt(pow3(D)),res = 365.0,count = 1] Testing: Picat> X = [365 * sqrt(pow3(D)) : D in [0.387143,0.722467,1.0,1.52488,5.208507,9.543414]] X = [87.922490434948045,224.140267800362324,365.0,687.300036504533296,4338.731178561462002,10760.897900110103365] [program = sqrt(D) * D * 365,res = 365.0,count = 34] [program = 365 * (sqrt(D) * D),res = 365.0,count = 32] [program = sqrt(pow3(D)) * 365,res = 365.0,count = 30] [program = D * sqrt(D) * 365,res = 365.0,count = 26] [program = 365 * sqrt(pow3(D)),res = 365.0,count = 26] [program = 365 * (D * sqrt(D)),res = 365.0,count = 16] resultMap = [365.0 = 6] * approx=20, total_approx=6 and 10 random constants in the range -1000..1000 [program = D * pow3(pow2(3)) / (2 / sqrt(D)),res = 364.5,count = 1] * approx=10, init_size= 100 gen = 23358 (time: 179.065s) results_best = [[0,730 / 2 * sqrt(D * (D * D))]] good = [730 / 2 * sqrt(D * (D * D)) = 365.0] AllGood: [program = 730 / 2 * sqrt(D * (D * D)),res = 365.0,count = 1] Cf http://hakank.org/jgap/kepler.conf */ data(kepler,Data,Vars,Unknown,Ops,Constants,MaxSize,Params) :- Data = [ % Mercury [[0.387143],87.9583], % Venus [[0.722467],224.232], % Earth [[1.0],365.256], % Mars [[1.524881], 687.580], % Jupiter [[5.208507], 4340.49], % Saturn [[9.543414], 10765.27] ], Unknown = [1.0], % Check the value of the Earth -> 365.256 Vars = ['D'], Ops = [*,+,*,/,pow2,pow3,pow4,pow5,sqrt], _ = random2(), % Constants = 1..3 ++ -1000..1000, % random(-1000,1000) : _ in 1..10], Constants = 1..3 ++ [random(-1000,1000) : _ in 1..10], MaxSize = 31, Params = new_map([approx=10, init_size=100, total_approx=6, show_best=1, % show_instances=true, num_gens=100 ]).