优化问题的轻量级遗传算法模块
meltingpot的Python项目详细描述
meltingpot
一种用于解决实际编码优化问题的遗传算法,也有约束条件。
灵感来源于自然选择概念,最初由[charles darwin]开发(https://en.wikipedia.org/wiki/natural\u selection),遗传算法:
1。创建可能解(个体)的随机初始总体。
2.生成许多新的种群,其中每一代都是通过执行以下操作来创建的:
-基于适应度评估的选择,
-双亲之间的交叉,
-个体的突变。
选择最佳个体作为给定问题的解决方案。
等于目标函数:因此,最好的个人得分最低,反之亦然。
<35<35<35<
<35<35<35<35<35<
` ` `
` ` `
` ` ` `
;定义目标函数-强制
f=lambda x:(x[0]-1)**2+(x[1]-1]-1)**2
定义变量数量-也必须
nvars=2
init ga
ga=geneticalgorithm(f,nvars)
它们必须接受长度为nvars*的向量并返回标量值。
种群设置为100个个体,固定变异算子。
```
来自meltingpot导入遗传算法,变异
rosenbrock函数
a=1
b=100
f=lambda x:(a-x[0])**2+b*(x[1]-x[0]**2)**2
nvars=2
=变异(收缩=0.5,sigma=1)
>;sol,score=ga.run()
>;>print(sol)
[1.00057427 1.00115261]
>;>print(score)
3.3118979646719515E-07
````
0.84296)*,并受以下不等式约束:
-*-(x[0]-5)^2-(x[1]-5)^2+100<;=0*
-*(x[0]-6)^2+(x[1]-5)^2-82.81<;
`````
目标函数-g06
f=λx:(x[0]-10)**3+(x[1]-20)**3
nvars=2
不等式约束
g1=λx:-(x[0]-5)**2-(x[1]-5)**2+100
g2=λx=λx:(x[0]-6)**2+(x[1]-5)**2-82-82*2-82.81
ics=[g1,G2]
定义惩罚模式
惩罚=惩罚(α=5,β=5,c=1000)
惩罚=惩罚)
sol,score=ga.run()
````
_边界
上下边界分别由"lb"和"ub"参数定义。它们必须是一个长度等于*nvars*
边界是硬约束的列表,也就是说,算法只允许边界内的个体。
给定n个个体的排名(其中排名1最适合,排名n最少),标度适应度具有3个基本性质:
<BR/> 1。给定一个秩为k的个体,它与1/sqrt(k)成正比。
2。标度适应度之和等于新一代所需的候选数。
3。标度值与原始分数成反比,即最佳个体的标度值最高,反之亦然。
elites=2)
```
默认值为"elites=2"。
`交叉=0.6`.
1]。
在每次迭代中,sigma都根据一个"shrink"值和上一个"sigma"值进行更新,使得*sigma_k=sigma_k-1*(1-shrink*k/num_kiters)*,其中*k*是当前迭代。设置*shrink=0*让"sigma"为常量。
默认值为"shrink=1"和"sigma=1"。
` ics和ecs参数:
````
边界
lb=[-10,-10]
ub=[10,10]
罚函数的目的是将约束优化问题转化为无约束优化问题,在目标函数中加入代价项罚函数。如果满足约束,罚函数等于零;如果违反约束,罚函数等于正数。由于得分最低的个体最适合,增加一个正项会降低其适合度。
对于不等式约束,如果违反了*cs*,则值*v*等于*f(x)*,否则为*0*。对于等式约束,*v*等于*abs(f(x))*is*cs*被违反或*0*否则。
惩罚的默认值为:`c=1`,`alpha=2`,`beta=2`.
每次迭代都会执行暂停检查。如果失速条件得到验证,将触发灾难性事件。大灾变只会使大多数合适个体中的一小部分存活下来,并重新生成剩余的种群。
惩罚函数被重置,正如一个新的进化阶段实际上所暗示的那样。
```
from meltingpot import stall
stall=stall)
设置cataclism幸存者的分数
ga.survists=0.2
```
默认值为"tol=0.01"和"stall=5"。