0
我正在研究一個與遺傳算法相關的學校項目。我需要創建一個近似算法,其中我創建隨機lambda表達式以近似正確的值,到目前爲止,我可以創建隨機lambda表達式,這要歸功於我提供的一個示例,但是,我堅持如何運行它們,這是我的代碼:如何生成並運行隨機lambda表達式?
#lang racket
(define operators '(+ *))
(define operands '(a b x y))
(define element
(lambda (L)
(list-ref L (random (length L)))))
(define expression
(lambda (n)
(cond ((zero? n) (element operands))
(else
(list
(element operators)
(expression (random n))
(expression (random n)))
))))
;Generates lambda expression
;n is the amount of expressions
;p is the depth of each expression
;Examples below
(define generate
(lambda (n p)
(if (zero? n) empty
(cons
(list 'λ '(x y) (expression p))
(generate (- n 1) p))
)))
(generate 1 1)
'((λ (x y) (* b y)))
(generate 1 3)
'((λ (x y) (* (* y y) (* y y))))
(generate 2 1)
'((λ (x y) (+ b x)) (λ (x y) (+ b x)))
(generate 2 3)
'((λ (x y) (+ (+ a y) a)) (λ (x y) (* (+ (+ y y) (* a a)) (+ (+ y x) a))))
這些生成的表達式都是隨機的,它是對正確值的近似值。我如何在列表中運行這些生成的表達式?
嘗試'(eval(car(generate 2 3) –
@ ThrowawayAccount3Million是的,這是正確的,我必須使用_eval_併發送_namespace_參數。 – Riccardo
那麼你的問題是什麼呢?這就是你運行表達式的方式。 –