求精通遗传算法的高手解答个疑惑.困扰我很久了求解救啊!一般简单的遗传算法F=f(X)然后给个X范围,然后对x进行2进制编码就可以进行相应的编程了,但是如果目标函数的变量和2进制编码之
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/14 15:11:22
求精通遗传算法的高手解答个疑惑.困扰我很久了求解救啊!一般简单的遗传算法F=f(X)然后给个X范围,然后对x进行2进制编码就可以进行相应的编程了,但是如果目标函数的变量和2进制编码之
求精通遗传算法的高手解答个疑惑.困扰我很久了求解救啊!
一般简单的遗传算法F=f(X)然后给个X范围,然后对x进行2进制编码就可以进行相应的编程了,但是如果目标函数的变量和2进制编码之间没有直接关系而是间接的怎么办,举个例子一个实际问题,对一条线路开关断开记为0,闭合记为1.这种情况是没有通过变量编码直接生产的二进制编码,而目标函数是网络损耗,变量是各个节点的电压,显然0,1这个二进制编码需要通过另外外一个程序转换为变量V电压,而不是简单的解码,那么这种情况下的适应度又怎么确定呢,还是说这种问题不能用遗传算法实现?
求精通遗传算法的高手解答个疑惑.困扰我很久了求解救啊!一般简单的遗传算法F=f(X)然后给个X范围,然后对x进行2进制编码就可以进行相应的编程了,但是如果目标函数的变量和2进制编码之
适应度函数就像当与一个度量标准,度量这个x是否更接近最优解.无论适应度函数选择什么,都要满足这几个条件:1.在x定义的区间内是单峰函数2.x越接近最优解则适应度函数值越大3.一般函数值都是正数(负数的话可以再做别的处理弄掉的)
对于你的问题,其实很清楚的一点就是编码和解码的方式应该与传统的二进制方式不同,也就是一个x的0,1串解码后并不能代表该串的十进制值,比如说010不再代表十进制的2,而是应该代表网络中对应开关导通或断开后所得到的实际电压值.换句话说,你的适应度函数完全可以按照目标函数(或其倒数)来编,但是解码函数确实需要单独编辑,编码则应该是解码的逆过程.解码函数要根据具体的电路图(与非关系)来编,运用各种电路知识.其实遗传算法仅仅相当于一个最优化的工具而已,复杂的问题都在编码解码适应度选取上了.不知道你这块是不是还有问题