本帖最后由 qiqik0521 于 2015-1-27 16:52 编辑
各位大侠,小弟初接触模拟退火算法,现在做一个程序,问题的描述是:
6个空间点,p1-p6.已知各点坐标x1,y1,z1。求一条直线,使该直线到上述点距离都相等。
空间直线可以用参数方程表达,x=at+px,y=bt+py,z=ct+pz(其中a,b,c是直线的方向向量。px,py,pz是直线上一点。t是直线参数。)
假设参数方程已知,我可以通过点到空间直线距离公式计算各点到直线距离。将计算得到的直线距离取平均值,然后用各距离减平均值,以该差值作为收敛目标(也就是各点到直线距离的差距越小越好,越接近目标)
我的问题是我的理论可以实现对直线方程的求解吗?以下是我的matlab程序,收敛不了,请大家帮小弟挑错
% 初始化过程 计算初始状态
pp=[361.954086685118,222.958293409968,57.3284760947955,-282.138702545910,-357.764981326235,-321.219260549933;
12.7017055583522,283.682166162709,355.435259006668,221.691115425287,0.0772113586361366,-157.707415860041;
-471.015149591140,-236.049854262889,-150.230911572783,-306.421592445076,-479.622244334522,-514.184148298648;
1,1,1,1,1,