如何用matlab解决多元遗传算法问题
如何用matlab解决多元遗传算法的极值问题?可以按下列步骤做
1、首先,建立自定义带条件的最大值目标函数文件,ga_fun.m
if x(1)+x(2)》=-1
y=-(exp(-0.1*(x(1)^4+x(2)^4))+ exp(cos(2*pi*x(1))+cos(2*pi*x(2)))
)
else
y=inf
end
式中:x=x(1),y=x(2)
2、利用ga遗传算法工具箱求解
3、在工具箱中,Fitness function项输入@ga_fun;Number of variables项输入2;Lower项输入[-1,2];Upper项输入[2,1];
4、点击Start按钮,运行可以得到 fmax(0,0)值(Objective function value)。说明这里负号是最大值的标志
运行界面
python 题目:用递归算法实现将一个十进制数n转换为十六进制数例如,输入1903
def func(n):
if n》0:
func(n//16)
print(’0123456789ABCDEF’[n%16],end=’’)
n=int(input())
func(n)
二进制转八进制的算法
把二进制从低位到高位依次三个一组,最后不够的高位补0, 再分别算成十进制数就可以了
如:
0111 1001 0110
分组
011 110 010 110
计算
3626
前面加0以标识是8进制
03626
扩展资料:
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。
基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。
位权是指,进位制中每一固定位置对应的单位值。
二进制---》八进制
(11001.101)(二)
整数部分:从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:
001=1
011=3
然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式
参考资料:百度百科-进制转换