优化问题的轻量级遗传算法模块

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"。




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java gradle无法解析配置的任何依赖项:类路径   来自远程服务的java错误字符串解析   java如何在Tomcat之外运行TomcatSpring/Struts 2Quartz任务?   将Java字节转换为Perl   Java选项:返回值或执行某些操作并继续循环   java如何从对象中获取变量?   postgresql自动部署web服务java和glassfish服务器4.1.1?   使用泛型的java Resteasy重写方法   在另一个用户登录后显示上一个用户的java数据   JSP(Java):编码字节数组并在JavaScript中使用,与C中相同#   Java:如何知道jar在Linux中的位置   java模拟已标记为可访问的私有方法的返回值   java无法理解滚动窗格   java Spring Boot Starter Web依赖项提供缺少工件的错误   java从SQL表创建json文件,然后能够查询该文件   java线程时钟对象   Java实践编程问题   多线程Java GUI未更改   GL30库中不存在intellij idea GLGEnVertexArray()。(JAVA LWJGL)   二进制文件在java中编辑二进制文件