我想创建一个程序,它使用随机优化算法来演化数学函数,将两个常数作为输入并演化一个函数,以便从这两个数字中产生一个特定的答案。
所以说输入是4和7,我希望答案是230,程序会生成一个从原始输入产生这个答案的函数。
我能够生成进化算法,但我不知道如何存储函数信息,随机改变它,并且还允许java程序执行变异函数。这是什么叫做元编程?在java中有可能吗?我知道我可以存储可能在函数中用作变量的常量。这很简单。但是,如何将运算符和正弦余弦和tan等函数存储为可以更改的变量?
答案 0 :(得分:2)
有很多方法可以评估函数,有些是:
您应该将等式存储在树中(由许多库为您完成),在遗传算法中更改该树,然后对其进行评估。
您可以通过接口或子类轻松存储功能......通过反射会更容易。
但是:您可能会找到更有效的方法来确定该功能。如果您向我们提供程序应该创建的功能,我们可以为您提供更多帮助。
答案 1 :(得分:2)
这可能会有所帮助
您可以创建"真实"用java插件。这个帖子谈到它:
How can I write my own plugin loader in java?
基本上,创建一个主程序,允许您编写和执行插件链。插件是你的函数,如sin,cos ...因为你可以动态加载真正的插件;您可以创建新的随机插件并将其添加到您的链。
答案 2 :(得分:0)
通常,Java不支持元编程。但是This会帮助你。