每周总结
上个学期的学习经验告诉我要勤总计。新的学期开始总结这周做的事。
本周学习四天半,内容主要两部分
- PYTHON
PYTHON中特有的数据结构
列表list [1,2,3,4]
类似数组,但各元素的数据类型可不同
for i,value in enumerate([‘A’,’B’,’C’])可以迭代索引和元素本身
pop(),pop(下标),insert(下标,值),append(值)元组tuple (1,2,3,4) 同List,但不能修改
无list的方法字典dict {‘a’:1, ‘b’:2, ‘c’:3, ‘d’:4}
插入d[‘e’] = 5,pop(键值) d.get(键值)
使用键-值存储集合set {1,2,3,4}
无重复元素
add(值),remove(值)
函数参数
位置参数(普通参数)
默认参数(给参数赋初值)
可变参数(*参数名)
def calc(x): calc([1,2,3])
def calc(*x): calc(1,2,3)
上面两个等价,可变参数传入的参数构成list关键字参数(**参数名)
def person(**kw): person(name=”aa”,age=18)
在函数内部组装为dict 即kw的值为{name:”aa”,age:18}命名关键字参数(*,关键字参数名)
在关键字参数的基础上限制了传入的参数名
def person (name,age,*,city,job):- 定义顺序
位置参数、默认参数、可变参数/命名关键字参数、关键字参数
可变参数和命名关键字参数不能同时使用
列表生成式
- 如: [x * x for x in range(1,11) if x%2==0 ]
迭代器、可迭代对象
- 迭代器(generator):可用next()方法访问的对象。用生成器定义(列表生成式的[]改为() )或带有yield的迭代函数
- 迭代器都是可迭代对象,但可迭代对象不一定都是迭代器
- 可迭代对象是可以用for访问的对象,一类是集合数据类型:list、tuple、set、dict、str;一类是generator
其他
- PYTHON中全部大写表示常量
- encode() decode() 编码解码
- /的结果为浮点数 //的结果取整数部分 m**n 其实是m^n
- 注意if else for def while后面都有:
- 函数返回多个值其实是返回tuple
- type()判断类型 str.lower()大写转换小写 str.capitalize()首字母大写 list将Iterator中的元素转为list isinstance()判断是否为某种类型
- 智能算法
遗传算法(GA)
- 算法关键:
编码、初始化种群、适应度函数、选择、交叉、变异
- 算法分支:
多种群遗传算法(MPGA):多个种群在不同参数下进化,各种群通过移民算子(定期的将出现的最优个体引入其他种群)交流,通过人工选择算法保存各个种群每个进化代中的最优个体(精华种群不进行选择、交叉、变异)
量子遗传算法(QGA):将标准遗传算法的遗传操作替换为量子门更新
多层编码遗传算法:把个体编码分为多层,每层编码表示不同的含义,多层编码共同完整表达了问题的解(其实就是可以把一个编码串划分为几个部分,每个部分代表不同含义)例如:车间调度算法把编码的前半部分表示为加工顺序,后半部分表示为加工对应的机器
- 解题步骤:
1.根据问题选择合适的编码方式
实数或二进制
2.设置合适的算法参数
种群大小(20-100)、编码长度、交叉概率、变异概率(0.4-0.99)、精英数等
3.初始化群体
4.适应度评估
一般使用目标函数
5.选择
轮盘赌等方式
6.交叉
根据问题特点选择交叉的方式
7.变异
根据问题特点选择变异方式
- 求解问题列举:
项目 | 编码方式 | 选择 | 交叉 | 变异 |
---|---|---|---|---|
一元函数优化 | 二进制 | 轮盘赌 | 交换两个体某一点后的二进制 | 某一位变异 |
多元函数优化 | 二进制(有几个变量就有相应长度的编码) | 同上 | 同上 | 同上 |
TSP问题(旅行商问题) | 实数 | 同上 | 部分映射杂交,确保没有重复的城市 | 选择一个个体的两个个位置交换元素 |
- 用遗传算法优化其他算法列举:
项目 | 优化方式 | 编码方式 |
---|---|---|
非线性规划的函数寻优算法 | 使用遗传算法全局寻找非线性规划的初始值再使用fmincon函数局部求解 | 实数 |
BP神经网络优化算法 | 使用遗传算法求解初始的权值和阈值,再使用神经网络算法训练网络后得到测试误差作为适应度,进行下一轮 | 二进制 |
免疫算法
与遗传算法类似,都是采用群体搜索策略,都要经过“初始种群产生->评价标准计算->种群间个体信息交换->新种群产生”
对比 | 免疫算法 | 遗传算法 |
---|---|---|
问题 | 抗原 | 问题 |
可行解 | 抗体 | 个体 |
个体评价 | 期望繁殖概率(抗体与抗体之间的亲和度和抗体浓度决定) | 适应度 |
操作 | 克隆选择、免疫记忆、疫苗接种、交叉、变异 | 选择、交叉、变异 |