对于某部件裸露在外的要求则要求其表面必须和人员空间或者外部空间接触,不管逆推还是正推,只要发现不接触,则罚掉整条正推或者逆推路径
如果是连续函数则罚的效率太低,所以建议再给个罚将搜寻范围局限在某些位置
是不是可以跳着推啊,就是允许一个更改节点读取前面节点一定程度的信息,然后这个更改节点的模块插入到前面几十个节点前的替换节点的模块旁边或者交换位置,比如这个节点的模块要挤到前面几十个节点的模块中间,那么前面几十个节点的模块都会有所变动,但是因为这个更改节点看到的信息有限,所以只能模糊地提供对前面几十个节点的大致更改。
然后保持前面几十个节点模块大致位置不变,跳到被调整的最前面的节点处往后推,如果能推到更改节点则问题不大可以继续往后,但是如果推不动,则说明这个更改有问题。需要找一个新的更改方式。同时这种更改是在一个节点发生的,因此可以很容易就进行罚。
先从里内部零件到外部零件顺推,再发现推完后整体体积过大,则从外部零件向内部零件里逆推,压缩整体空间的同时压缩各个节点的零件体积,当发现内部预留给未逆推的内部零件的总空间小于原先从前端开始到顺推到此节点的所有内部零件总体的二分之一的时候,再顺推,并且要求内部体积膨胀到未压缩的样子,然后顺推到结尾,并且顺推过程中各个节点采用的零件体积为原先逆推时压缩的零件体积,这样推到结尾,然后结尾的的机械体积会比第一次顺推得到的机械体积小一些,这是显然的,这时候再压缩一点总体积后逆推,同样逆推到内部零件预留空间是原先顺推空间的二分之一,再使得内部零件体积膨胀后顺推,这时候的逆推会比原先的逆推多推几个节点再膨胀,就这样反复