我试图在c ++中实现离散曲线演化算法做任何人帮助我使用psudo代码或c代码或 一些简单的理解步骤
答案 0 :(得分:2)
离散曲线演化是一种算法,用于从凹陷的曲线计算到处的凸曲线。它以不连续的步骤沿着它们的法线向外移动曲线的凹面部分,直到消除所有凹面。它不是遗传算法,术语进化是指随着时间的推移“演变”曲线的位置。
在搜索了这段时间后,互联网上的最佳来源是: http://www.cis.temple.edu/~latecki/Programs/skeletonPruning07.htm
这是matlab代码,所以它不是你想要的,但你有三个不错的选择:
选项2将要求任何想要运行它的人在他们的计算机上拥有matlab动态库的副本,这可能是不合需要的。我猜选项3也需要这个,但我只有选项1和2的经验。将matlab移植到c ++通常不是那么糟糕;它取决于代码利用矩阵基元和矩阵运算多少,这些基本原语和矩阵运算在matlab中易于使用,在C ++中很难使用(因为它们不是内置的)。不过,我建议给它一个旧的大学尝试!
如果您只是在寻找DCE,请查看文件evolution.m。这是实现DCE的功能。这个来自的完整骨架修剪算法只能在高级别上进行描述。各个步骤和部分是QUITE复杂的,DCE只是其中的一小部分。
希望这有帮助!我将自己使用这段代码,所以如果我最终以某种方式在C ++中使用它可以帮助你,我会告诉你。
答案 1 :(得分:1)
我不完全确定离散曲线进化算法的含义,但如果你的意思是符号回归算法,你可以先阅读符号回归(或一般的遗传编程):
http://en.wikipedia.org/wiki/Symbolic_Regression
还有一些不错的现有程序。 Eureqa有一个开放的API: