交叉功能基因表达式编程

8视图(30天)
长TRAN
长TRAN 2023年4月2日
回答: Rishav 2023年5月3日
你好,我想写一个交叉功能的实施,现在我困在部分替换子树到指定的交叉点,我试过多次chatgpt但它继续分配old_tree new_tree使交叉函数返回old_tree,这是我的交叉代码:
函数new_tree = set_subtree (old_tree crossover_point子树)
如果crossover_point = = 1
new_tree =子树;
返回
结束
队列= {old_tree};
idx = 1;
~ isempty(队列)
节点队列= {1};
队列=队列(2:结束);
如果isfield(节点,“孩子”)
i = 1:长度(node.children)
idx = idx + 1;
如果idx = = crossover_point
节点。我孩子{}=子树;
new_tree = old_tree;
返回
结束
队列{结束+ 1}= node.children {};
结束
结束
结束
错误(“中没有交叉点表达式树”);
结束
谢谢你的时间。

答案(1)

Rishav
Rishav 2023年5月3日
你好,
为了解决这个问题,您可以创建一个副本 old_tree 之前修改它,然后将修改后的树分配给新的副本。
这是一个通过改变更新代码 set_subtree 函数如果指数等于交叉点:
如果idx = = crossover_point
%老树的创建一个副本
new_tree = old_tree;
%替代交叉点的子树
new_tree。我孩子{}=子树;
返回
结束
在这个更新版本, new_tree 被初始化为一个副本的 old_tree 子树之前取代指定的交叉点。这将确保 new_tree 不是简单的引用吗 old_tree ,但一个新副本,包括修改的子树。
问候,
Rishav萨哈

类别

找到更多的在数据类型帮助中心文件交换

s manbetx 845


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!