如何在Java中创建一个能够改变自己的源代码的程序,或者一个能够运行它的数学函数?

时间:2013-12-05 14:53:29

标签: java functional-programming genetic-algorithm

我想创建一个程序,它使用随机优化算法来演化数学函数,将两个常数作为输入并演化一个函数,以便从这两个数字中产生一个特定的答案。

所以说输入是4和7,我希望答案是230,程序会生成一个从原始输入产生这个答案的函数。

我能够生成进化算法,但我不知道如何存储函数信息,随机改变它,并且还允许java程序执行变异函数。这是什么叫做元编程?在java中有可能吗?我知道我可以存储可能在函数中用作变量的常量。这很简单。但是,如何将运算符和正弦余弦和tan等函数存储为可以更改的变量?

3 个答案:

答案 0 :(得分:2)

请不要改变程序源代码并在运行时重新编译。

有很多方法可以评估函数,有些是:

您应该将等式存储在树中(由许多库为您完成),在遗传算法中更改该树,然后对其进行评估。

您可以通过接口或子类轻松存储功能......通过反射会更容易。

但是:您可能会找到更有效的方法来确定该功能。如果您向我们提供程序应该创建的功能,我们可以为您提供更多帮助。

答案 1 :(得分:2)

这可能会有所帮助

您可以创建"真实"用java插件。这个帖子谈到它:

How can I write my own plugin loader in java?

基本上,创建一个主程序,允许您编写和执行插件链。插件是你的函数,如sin,cos ...因为你可以动态加载真正的插件;您可以创建新的随机插件并将其添加到您的链。

答案 2 :(得分:0)

通常,Java不支持元编程。但是This会帮助你。