Làm việc trên một nhiệm vụ liên quan đến thuật toán di truyền (tải các cơn đau đầu, vô số niềm vui). Tôi cần để có thể kiểm tra các phương pháp chéo khác nhau và các phương pháp đột biến khác nhau, để so sánh kết quả của chúng (một phần của bài báo tôi phải viết cho khóa học). Như vậy, tôi muốn chỉ chuyển các tên hàm vào phương thức Repopulate, như là các hàm xử lý.MATLAB- chuyển một tham số xử lý chức năng vào một hàm khác làm xử lý
function newpop = Repopulate(population, crossOverMethod, mutationMethod)
...
child = crossOverMethod(parent1, parent2, @mutationMethod);
...
function child = crossOverMethod(parent1, parent2, mutationMethod)
...
if (mutateThisChild == true)
child = mutationMethod(child);
end
...
Điểm then chốt ở đây giống như 3, tham số 3: làm cách nào để chuyển đột biếnMethod xuống một cấp độ khác? Nếu tôi sử dụng biểu tượng @, tôi được thông báo:
"mutationMethod" was previously used as a variable,
conflicting with its use here as the name of a function or command.
Nếu tôi không sử dụng ký hiệu @, thì đột biếnMã được gọi, không có tham số và hoàn toàn không hài lòng.
Trong khi tôi biết rằng có, tôi chỉ có thể viết lại mã của mình để làm cho nó hoạt động khác nhau, bây giờ tôi tò mò về cách làm cho nó thực sự hoạt động.
Bất kỳ trợ giúp nào được đánh giá cao.