7

这是一个通用问题,虽然我很确定它的某些部分已经得到回答,但我想要的是意见,而不是广泛的讨论。我打算写一篇关于进化计算和遗传编程的硕士论文,我想请 Linux/C++ 专家的意见,是否可以从遗传程序创建源代码文件,调用 gcc 编译它们,如果他们失败了编译以捕获它们失败的那些原因,如果它们确实编译以执行编译的程序(作为新进程),然后能够向该程序发送输入并捕获输出和任何引发的异常(或崩溃)。我知道这个话题太宽泛了,但我想知道是否有人认为这是不可撤销的、愚蠢的尝试,或者是否有更好的方法来做到这一点。

4

2 回答 2

1

你想在这个基因程序中优化什么?除了寻找可以运行的程序之外,您还会寻找什么标准?我不太明白重点...

需要明确的是,我问这个的原因是因为我只理解使用遗传算法来尝试解决某种优化问题。在这种情况下,您将拥有某种启发式方法,您可以在其中评估该过程的所有子进程,然后根据启发式方法和选择标准培育新的后代。我不明白生成这个源的期望结果是什么,或者你将如何创建启发式来评估它。

于 2011-04-07T18:14:16.907 回答
1

是的,可以做到这一点,而且实际上非常简单。mkstmp您将源代码输出到一个临时文件fork(这是基本的 Unix 编程,在这里用 C 语言做的事情并不复杂。execfork/execdup2pipe

代码生成本身可能更难正确处理,但这在很大程度上取决于项目。

此外,自几个月以来,我们就拥有了现代工具:我相信Clang可能绝对是这类东西值得关注的东西。如果你打算做的代码生成是简单的(或者不简单,而是结构化的),你也可以直接输出LLVM代码。这并不难,并且使您能够及时生成高效的编译代码。

于 2011-04-07T18:22:55.770 回答