一文读懂遗传算法(附python)

遗传算法优化模型超参数 问题描述: import sklearn.datasets import numpy as np import random data = sklearn.datasets.load_digits() X = data["data"] y = data["target"] from sklearn.svm import SVC from sklearn.model_selection import StratifiedKFold paramgrid = {"kernel": ["rbf"], 阅读详情

几天前,我着手解决一个实际问题——大型超市销售问题。在使用了几个简单模型做了一些特征工程之后,我在排行榜上名列第 219 名。

在这里插入图片描述

虽然结果不错,但是我还是想做得更好。于是,我开始研究可以提高分数的优化方法。结果我果然找到了一个,它叫遗传算法。在把它应用到超市销售问题之后,最终我的分数在排行榜上一下跃居前列。

在这里插入图片描述

没错,仅靠遗传算法我就从 219 名直接跳到 15 名,厉害吧!相信阅读完本篇文章后,你也可以很自如地应用遗传算法,而且会发现,当把它用到你自己正在处理的问题时,效果也会有很大提升。

摘要

遗传算法 (Genetic Algorithms,简称GA)是人工智能的重要新分支,是基于达尔文进化论,在计算机上模拟生命进化机制而发展起来的一门新学科。它根据适者生存、优胜劣汰等自然进化机制来进行搜索计算和问题求解。本文主要介绍遗传算法的原理,包括其定义及其实现步骤,以及遗传算法的研究现状和未来发展趋势。

引言

遗传算法在上世纪70年代由美国J.H.Holland博士提出的时候,并没有引起学术界的关注,因而发展比较缓慢。从20世纪80年代中期开始,随着人工智能的发展和计算机技术的进步,遗传算法逐渐成熟,应用日渐增多,不仅应用于人工智能领域(如机器学习和神经网络),也开始在工业系统中得到成功应用,显示出了诱人的前景。

遗传算法仿照自然进化过程来实现对最优解的进行寻找的方法,它应用了达尔文进化论中的选择与变异的原理。先进行定向的选择,再进行不定向的变异,根据能体现目标的适应度函数,来体现每一代个体的适应度,从而进行选择操作,然后在进行遗传迭代,产生带有新的基因组合的个体。

遗传算法理论的由来

我们先从查尔斯·达尔文的一句名言开始:能够生存下来的往往不是最强大的物种,也不是最聪明的物种,而是最能适应环境的物种。

你也许在想:这句话和遗传算法有什么关系?其实遗传算法的整个概念就基于这句话。

让我们用一个基本例子来解释 :我们先假设一个情景,现在你是一国之王,为了让你的国家免于灾祸,你实施了一套法案。

  1. 你选出所有的好人,要求其通过生育来扩大国民数量。
  2. 这个过程持续进行了几代。
  3. 你将发现,你已经有了一整群的好人。

这个例子虽然不太可能,但是我用它是想帮助你理解概念。也就是说,我们改变了输入值(比如:人口),就可以获得更好的输出值(比如:更好的国家)。现在,我假定你已经对这个概念有了大致理解,认为遗传算法的含义应该和生物学有关系。那么我们就快速地看一些小概念,这样便可以将其联系起来理解。

生物学的启发

相信你还记得这句话:「细胞是所有生物的基石。」由此可知,在一个生物的任何一个细胞中,都有着相同的一套染色体。所谓染色体,就是指由 DNA 组成的聚合体。

在这里插入图片描述

传统上看,这些染色体可以被由数字 0 和 1 组成的字符串表达出来。

在这里插入图片描述

一条染色体由基因组成,这些基因其实就是组成 DNA 的基本结构,DNA 上的每个基因都编码了一个独特的性状,比如,头发或者眼睛的颜色。希望你在继续阅读之前先回忆一下这里提到的生物学概念。结束了这部分,现在我们来看看所谓遗传算法实际上指的是什么?

首先我们回到前面讨论的那个例子,并总结一下我们做过的事情。

  1. 首先,我们设定好了国民的初始人群大小。
  2. 然后,我们定义了一个函数,用它来区分好人和坏人。
  3. 再次,我们选择出好人,并让他们繁殖自己的后代。
  4. 最后,这些后代们从原来的国民中替代了部分坏人,并不断重复这一过程。

遗传算法实际上就是这样工作的,也就是说,它基本上尽力地在某种程度上模拟进化的过程。

因此,为了形式化定义一个遗传算法,我们可以将它看作一个优化方法,它可以尝试找出某些输入,凭借这些输入我们便可以得到最佳的输出值或者是结果。遗传算法的工作方式也源自于生物学,具体流程见下图:
在这里插入图片描述

遗传算法具体步骤

为了让讲解更为简便,我们先来理解一下著名的组合优化问题「背包问题」。如果你还不太懂,这里有一个我的解释版本。

比如,你准备要去野游 1 个月,但是你只能背一个限重 30 公斤的背包。现在你有不同的必需物品,它们每一个都有自己的「生存点数」(具体在下表中已给出)。因此,你的目标是在有限的背包重量下,最大化你的「生存点数」。

在这里插入图片描述

初始化

这里我们用遗传算法来解决这个背包问题。第一步是定义我们的总体。总体中包含了个体,每个个体都有一套自己的染色体。

我们知道,染色体可表达为二进制数串,在这个问题中,1 代表接下来位置的基因存在,0 意味着丢失。(译者注:作者这里借用染色体、基因来解决前面的背包问题,所以特定位置上的基因代表了上方背包问题表格中的物品,比如第一个位置上是 Sleeping Bag,那么此时反映在染色体的『基因』位置就是该染色体的第一个『基因』。

在这里插入图片描述

适应度函数

接下来,让我们来计算一下前两条染色体的适应度分数。对于 A1 染色体 [100110] 而言,有:

在这里插入图片描述

类似地,对于 A2 染色体 [001110] 来说,有:

在这里插入图片描述

对于这个问题,我们认为,当染色体包含更多生存分数时,也就意味着它的适应性更强。

因此,由图可知,染色体 1 适应性强于染色体 2。

选择

现在,我们可以开始从总体中选择适合的染色体,来让它们互相『交配』,产生自己的下一代了。这个是进行选择操作的大致想法,但是这样将会导致染色体在几代之后相互差异减小,失去了多样性。因此,我们一般会进行「轮盘赌选择法」(Roulette Wheel Selection method)。

在这里插入图片描述

想象有一个轮盘,现在我们将它分割成 m 个部分,这里的 m 代表我们总体中染色体的个数。每条染色体在轮盘上占有的区域面积将根据适应度分数成比例表达出来。

在这里插入图片描述

基于上图中的值,我们建立如下「轮盘」。

在这里插入图片描述

现在,这个轮盘开始旋转,我们将被图中固定的指针(fixed point)指到的那片区域选为第一个亲本。然后,对于第二个亲本,我们进行同样的操作。有时候我们也会在途中标注两个固定指针,如下图:

在这里插入图片描述

通过这种方法,我们可以在一轮中就获得两个亲本。我们将这种方法成为「随机普遍选择法」(Stochastic Universal Selection method)。

交叉

在上一个步骤中,我们已经选择出了可以产生后代的亲本染色体。那么用生物学的话说,所谓「交叉」,其实就是指的繁殖。现在我们来对染色体 1 和 4(在上一个步骤中选出来的)进行「交叉」,见下图:

在这里插入图片描述

这是交叉最基本的形式,我们称其为「单点交叉」。这里我们随机选择一个交叉点,然后,将交叉点前后的染色体部分进行染色体间的交叉对调,于是就产生了新的后代。

如果你设置两个交叉点,那么这种方法被成为「多点交叉」,见下图:

在这里插入图片描述

变异

如果现在我们从生物学的角度来看这个问题,那么请问:由上述过程产生的后代是否有和其父母一样的性状呢?答案是否。在后代的生长过程中,它们体内的基因会发生一些变化,使得它们与父母不同。这个过程我们称为「变异」,它可以被定义为染色体上发生的随机变化,正是因为变异,种群中才会存在多样性。

下图为变异的一个简单示例:

在这里插入图片描述

变异完成之后,我们就得到了新为个体,进化也就完成了,整个过程如下图:

在这里插入图片描述

在进行完一轮「遗传变异」之后,我们用适应度函数对这些新的后代进行验证,如果函数判定它们适应度足够,那么就会用它们从总体中替代掉那些适应度不够的染色体。这里有个问题,我们最终应该以什么标准来判断后代达到了最佳适应度水平呢?

一般来说,有如下几个终止条件:

1、在进行 X 次迭代之后,总体没有什么太大改变。 2、我们事先为算法定义好了进化的次数。 3、当我们的适应度函数已经达到了预先定义的值。

好了,现在我假设你已基本理解了遗传算法的要领,那么现在让我们用它在数据科学的场景中应用一番。

遗传算法的应用

特征选取

试想一下每当你参加一个数据科学比赛,你会用什么方法来挑选那些对你目标变量的预测来说很重要的特征呢?你经常会对模型中特征的重要性进行一番判断,然后手动设定一个阈值,选择出其重要性高于这个阈值的特征。

那么,有没有什么方法可以更好地处理这个问题呢?其实处理特征选取任务最先进的算法之一就是遗传算法。

我们前面处理背包问题的方法可以完全应用到这里。现在,我们还是先从建立「染色体」总体开始,这里的染色体依旧是二进制数串,「1」表示模型包含了该特征,「0 表示模型排除了该特征」。

不过,有一个不同之处,即我们的适应度函数需要改变一下。这里的适应度函数应该是这次比赛的的精度的标准。也就是说,如果染色体的预测值越精准,那么就可以说它的适应度更高。

现在我假设你已经对这个方法有点一概念了。下面我不会马上讲解这个问题的解决过程,而是让我们先来用 TPOT 库去实现它。

用 TPOT 库来实现

这个部分相信是你在一开始读本文时心里最终想实现的那个目标。即:实现。那么首先我们来快速浏览一下 TPOT 库(Tree-based Pipeline Optimisation Technique,树形传递优化技术),该库基于 scikit-learn 库建立。下图为一个基本的传递结构。

在这里插入图片描述

图中的灰色区域用 TPOT 库实现了自动处理。实现该部分的自动处理需要用到遗传算法。

我们这里不深入讲解,而是直接应用它。为了能够使用 TPOT 库,你需要先安装一些 TPOT 建立于其上的 python 库。下面我们快速安装它们:

installing DEAP, update_checker and tqdm
pip install deap update_checker tqdm

installling TPOT

pip install tpot

为实现做准备,我们先快速下载训练和测试文件,以下是 python 代码:

引入基本库
# import basic libraries

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt 
%matplotlib inline 
from sklearn import preprocessing 
from sklearn.metrics import mean_squared_error 
# Big Mart Sales
数据预处理
## preprocessing
### mean imputations
# Big Mart Sales
train = pd.read_csv("./data/Train_UWu5bXk.csv")
test = pd.read_csv("./data/Test_u94Q5KV.csv")
train['Item_Weight'].fillna((train['Item_Weight'].mean()), inplace=True)
test['Item_Weight'].fillna((test['Item_Weight'].mean()), inplace=True)

# Big Mart Sales

### reducing fat content to only two categories
number = preprocessing.LabelEncoder()
# number = LabelEncoder()
train['Item_Fat_Content'] = train['Item_Fat_Content'].replace(['low fat','LF'], ['Low Fat','Low Fat'])
train['Item_Fat_Content'] = train['Item_Fat_Content'].replace(['reg'], ['Regular'])
test['Item_Fat_Content'] = test['Item_Fat_Content'].replace(['low fat','LF'], ['Low Fat','Low Fat'])
test['Item_Fat_Content'] = test['Item_Fat_Content'].replace(['reg'], ['Regular'])
train['Outlet_Establishment_Year'] = 2013 - train['Outlet_Establishment_Year']
test['Outlet_Establishment_Year'] = 2013 - test['Outlet_Establishment_Year']

train['Outlet_Size'].fillna('Small',inplace=True)
test['Outlet_Size'].fillna('Small',inplace=True)

train['Item_Visibility'] = np.sqrt(train['Item_Visibility'])
test['Item_Visibility'] = np.sqrt(test['Item_Visibility'])

col = ['Outlet_Size','Outlet_Location_Type','Outlet_Type','Item_Fat_Content']
test['Item_Outlet_Sales'] = 0
combi = train.append(test)
for i in col:
    combi = number.fit_transform(combi.astype('str'))
    combi = combi.astype('object')
train = combi[:train.shape[0]]
test = combi[train.shape[0]:]
test.drop('Item_Outlet_Sales',axis=1,inplace=True)
## removing id variables
from sklearn.model_selection import train_test_split
tpot_train = train.drop(['Outlet_Identifier','Item_Type','Item_Identifier'],axis=1)
tpot_test = test.drop(['Outlet_Identifier','Item_Type','Item_Identifier'],axis=1)
target = tpot_train['Item_Outlet_Sales']
tpot_train.drop('Item_Outlet_Sales',axis=1,inplace=True)
# finally building model using tpot library

from tpot import TPOTRegressor
X_train, X_test, y_train, y_test = train_test_split(tpot_train, target,
train_size=0.75, test_size=0.25)

tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

在这里插入图片描述

一旦这些代码运行完成,tpot_exported_pipeline.py 里就将会放入用于路径优化的 python 代码。我们可以发现,ExtraTreeRegressor 可以最好地解决这个问题。

## predicting using tpot optimised pipeline

tpot_pred = tpot.predict(tpot_test)
sub1 = pd.DataFrame(data=tpot_pred)
#sub1.index = np.arange(0, len(test)+1)
sub1 = sub1.rename(columns = {'0':'Item_Outlet_Sales'})
sub1['Item_Identifier'] = test['Item_Identifier']
sub1['Outlet_Identifier'] = test['Outlet_Identifier']
sub1.columns = ['Item_Outlet_Sales','Item_Identifier','Outlet_Identifier']
sub1 = sub1[['Item_Identifier','Outlet_Identifier','Item_Outlet_Sales']]
sub1#.to_csv('tpot.csv',index=False)

如果你提交了这个 csv,那么你会发现我一开始保证的那些还没有完全实现。那是不是我在骗你们呢?当然不是。实际上,TPOT 库有一个简单的规则。如果你不运行 TPOT 太久,那么它就不会为你的问题找出最可能传递方式。

所以,你得增加进化的代数,拿杯咖啡出去走一遭,其它的交给 TPOT 就行。此外,你也可以用这个库来处理分类问题。进一步内容可以参考这个文档:http://rhiever.github.io/tpot/。除了比赛,在生活中我们也有很多应用场景可以用到遗传算法。

实际应用

遗传算法在真实世界中有很多应用。这里我列了部分有趣的场景,但是由于篇幅限制,我不会逐一详细介绍。

工程设计

工程设计非常依赖计算机建模以及模拟,这样才能让设计周期过程即快又经济。遗传算法在这里可以进行优化并给出一个很好的结果。

相关资源:

论文:Engineering design using genetic algorithms

交通与船运路线

(Travelling Salesman Problem,巡回售货员问题) 这是一个非常著名的问题,它已被很多贸易公司用来让运输更省时、经济。解决这个问题也要用到遗传算法。

在这里插入图片描述
在这里插入图片描述

机器人

遗传算法在机器人领域中的应用非常广泛。实际上,目前人们正在用遗传算法来创造可以像人类一样行动的自主学习机器人,其执行的任务可以是做饭、洗衣服等等。

论文:Genetic Algorithms for Auto-tuning Mobile Robot Motion Control

结语

希望通过本文介绍,你现在已经对遗传算法有了足够的理解,而且也会用 TPOT 库来实现它了。但是如果你不亲身实践,本文的知识也是非常有限的。

所以,请各位读者朋友一定要在无论是数据科学比赛或是生活中尝试自己去实现它。

策略源码

欢迎人工智能量化交易平台-BigQuant来实现!

数学建模中的遗传算法:优化问题的高效解决方案 在我们的生活中,“优化"无处不在:快递员要规划最短配送路线(路径优化),工厂要调配资源降低生产成本(资源优化),手机厂商要设计电池参数延长续航(参数优化)。这些问题在数学建模中统称为"优化问题”,核心是找到满足约束条件的最佳解决方案。传统优化方法(如梯度下降、穷举法)要么需要问题具有特殊性质(如连续可导),要么在变量增多时计算量爆炸(“维度灾难”)。 阅读详情

相关推荐

机器学习中的遗传算法

Genetic algorithm is an optimization method inspired by the biological process of natural selection. It is based on the terms such as mutation, crossover and selection, with whom you have already enco...

weixin_41697507的博客 5953

python遗传算法_基于Python的遗传算法特征约简(附代码)

导言在某些情况下,使用原始数据训练机器学习算法可能不是合适的选择。该算法在接受原始数据训练时,必须进行特征挖掘,以检测不同组之间的差异。但这需要大量的数据来自动执行特征挖掘。对于小数据集,数据科学家最好自己进行特征挖掘步骤,之后告诉机器学习算法要使用哪个特征集。使用的特征集必须能代表数据样本,因此我们必须注意选择最佳特征。数据科学家建议使用一些类型的特征,这些特征似乎有助于根据以前的经验来表示数据...

weixin_39816946的博客 757

sklearn-genetic:scikit-learn的遗传特征选择模块

斯克莱恩遗传 scikit-learn的遗传特征选择模块 遗传算法模仿自然选择的过程,以搜索函数的最佳值。 安装 安装sklearn-genetic的最简单方法是使用pip pip install sklearn-genetic 或conda conda install -c conda-forge sklearn-genetic 要求 Python> = 2.7 scikit学习> = 0.20.3 深度> = 1.0.2 例子 from __future__ import print_function import numpy as np from sklearn import datasets , linear_model from genetic_selection import GeneticSelectionCV def main (): iris = dat

Python实现遗传算法

遗传算法属于一种优化算法。 如果你有一个待优化函数,可以考虑次算法。假设你有一个变量x,通过某个函数可以求出对应的y,那么你通过预设的x可求出y_pred,y_pred差距与你需要的y当然越接近越好,这就需要引入适应度(fitness)的概念。假设 fitness = 1/(1+ads(y_pred - y)),那么误差越小,适应度越大,即该个体越易于存活。 设计该算法的思路如下: (1)初始化种群,即在我需要的区间如[-100,100]内random一堆初始个体[x1,x2,x3...],这些个体

qq_40819197的博客 1404

从零到一:基于Docker与OSM数据构建Valhalla路径规划服务及Mapbox风格可视化

本文详细介绍了如何从零开始,基于Docker容器技术快速部署开源的Valhalla路径规划服务。通过获取免费的OSM地图数据并构建路网,最终实现服务调用与Mapbox风格的地图可视化,为出行应用原型开发或本地化路径规划服务提供了一套完整、高效的实践方案。

weixin_29297127的博客 161

SigFit实战:从FEA到光学仿真的热力耦合分析全流程解析

在光机系统与芯片封装等精密工程领域,热与力的耦合效应是影响产品性能与可靠性的核心物理问题。有限元分析(FEA)是预测结构在热、力载荷下变形与应力的基础工具,但其结果通常无法直接用于评估光学性能。这需要一座桥梁,将物理场数据转化为光学设计语言。其核心原理在于数据映射与面形表征技术,例如通过泽尼克多项式拟合,将离散的节点位移分解为离焦、像散等标准光学像差。这项技术的工程价值在于,它实现了多物理场仿真的闭环,使工程师能在设计阶段精准预测热变形或应力对波前误差、调制传递函数等关键光学指标的影响。其典型应用场景包括高

weixin_28630185的博客 334

一文读懂遗传算法工作原理(附Python实现)

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达转自:机器之心简介几天前,我着手解决一个实际问题——大型超市销售问题。在使用了几个简单模型做了一些特征工程之后,我在排行榜上名列第 219 名。虽然结果不错,但是我还是想做得更好。于是,我开始研究可以提高分数的优化方法。结果我果然找到了一个,它叫遗传算法。在把它应用到超市销售问题之后,最终我的分数在排行榜上一下跃居前列。没错,仅...

小白学视觉 665

【Godot】构建可维护的游戏工程 —— 项目代码组织结构

本文系统梳理了Godot引擎项目组织原则与架构模式,提出场景中心化、命名规范一致性和资源隔离三大核心原则。推荐按功能模块划分目录结构(如scenes/、entities/、systems/),采用snake_case命名避免跨平台问题,并通过.gdignore优化资源管理。文章详细解析了自包含场景设计、信号驱动解耦等架构技巧,以及团队协作中的版本控制策略,强调通过模块化设计平衡一致性与实用性。最终目标构建清晰可维护的项目结构,使资源定位和功能扩展更加高效。(148字)

qq_40205510的博客 1173

【机器学习】一文读懂遗传算法工作原理(附Python实现)

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达编者荐语文章用通俗易懂的语言对遗传算法作了一个全面而扼要的概述,并列举了其在多个领域的实际应用,其中重点介绍了遗传算法的数据科学应用。转载自丨机器之心近日,Analyticsvidhya 上发表了一篇题为《Introduction to Genetic Algorithm & their application in ...

小白学视觉 760

【免费】最新区块链钱包和私钥的助记词碰撞器,bybit使用python开发

【免费】最新助记词钱包碰撞器,全链全网络,一周左右就有,稳定高效。

weixin_48529185的博客 1万+

ABB机器人刷功能选项全一篇就够——不怕丢失程序和IO配置数据

ABB机器人刷功能选项

m0_66701835的博客 1258

进化算法_遗传算法相关资料

Hyperopt中文文档导读:自动调参神器 Python 启发式算法的包 如何通俗易懂地解释遗传算法 一文读懂遗传算法工作原理(附 Python 实现) 遗传算法(python版) 遗传算法与其python实现 GAFT - 一个使用 Python 实现的遗传算法框架 遗传算法GitHub ...

Datawhale 1009

信捷PLC XD5系列运动控制(10轴)编程应用篇

项目PLC采用XD5-60T10-E,36DI 24DO 晶体管输出,支持10路脉冲输出功能。TMR指令定时器时基可以自己设定,这点比其他品牌PLC方便。ZRN指令我们需要上升沿指令触发。 5、变址寻址 该说不说这个变址寻址是真的强,比西门子指针、三菱的变址寄存器Z 、V都要更加灵活。 7、特殊寄存器:时钟 8、如何建立PLC通讯...............

RXXW_Dor的博客 1万+

python遗传算法多目标_海龟策略深入研究-策略回测系列-17 基于遗传算法的信号优化...

海龟策略的信号来源于唐奇安通道突破。简单的说就是若突破上轨则做多,突破下轨则做空。我们可以对信号进行改良,如换成布林带通道,金肯特纳通道等等,并且增加过滤条件和离场条件。但是呢?新的问题又来了:若用了新的指标,需要通过不断调试来得到“最优”参数,这样会耗费大量的时间。那么,有没有办法在尽量少得时间内,尽可能得到全局最优解或者次优解呢?答案就是遗传算法啦!遗传算法原理具体原理详见:遗传算法原理简介​...

weixin_39885469的博客 594

破晓之光:GTK#框架让C# WinForm程序跨平台运行的终极指南

GTK#框架的出现,彻底打破了C# WinForm只能在Windows上运行的桎梏。

墨夶的博客 603

KVM — 与 QEMU 和 Libvirt 的关系

目录目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用前言如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会有所混淆, 傻傻的分不清. 尤其在看虚拟化技术文档时导致理解能力下降, 所以在开始学习虚拟化技术之前对这些概念有一个整体的认识和清晰的理解, 就显得很有必要了.KVMKVM(Kernel-basedVirtu

烟云的计算 5733

优化算法-遗传算法

一文读懂遗传算法工作原理(附Python实现

阿伟的博客 518

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python 遗传编程_遗传算法Python实战 006.扑克牌问题

写在前面的话前面五个问题,在遗传算法里面,都是非常简单入门问题,如果能够读懂前面这些算法,而且能够复现的话,说明你对遗传算法已经完成了入门过程,到这里就开始进入遗传算法的中级阶段了。好了,先看看本节需要解决的问题:本节中,我们将通过排列组合扑克牌,来完成这样的一个游戏:如果给你从A(就算成是1吧)到10,这十张扑克牌,让你把这10张牌分成两组,第一组的数字之和,加起来等于36,第二组的数...

weixin_39639174的博客 502

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

用iOS MCP读取全App系统日志与崩溃报告:iOS逆向调试的终极利器

iOS MCP 是运行在越狱 iPhone 上的 MCP Server 自动化工具,本文教你用它内置的 3 个日志工具(`get_syslog`、`get_crash_logs`、`read_crash_log`)读取全 App 实时系统日志与崩溃报告,让 iOS 逆向调试、崩溃定位、App 行为分析效率倍增。 [![iOS MCP 越狱iPhone自动化工具封面:AI代理通过 MCP Serv

gitblog_00268的博客 797

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

N皇后遗传算法Python实现:从Matlab迁移的工程化实践

遗传算法(GA)是解决组合优化问题的经典元启发式方法,其核心在于适应度评估、选择、交叉与变异的协同演化机制。在N皇后这类约束满足问题中,GA的价值在于规避穷举复杂度,通过种群进化高效逼近全局最优解。关键技术挑战包括适应度函数设计(如冲突计数与倒数映射)、早熟收敛抑制(如精英保留+突变混合策略)以及浮点精度下的鲁棒终止条件。本文聚焦于将Matlab原型迁移到生产级Python工程的全过程,深入解析NumPy向量化实现、参数化架构设计与调试陷阱(如索引越界、dtype隐式转换),为算法工程师提供可复现、可维护、

weixin_34268310的博客 522

告别交叉变异:一文读懂基于群体的增量学习算法 (PBIL)——python实现

PBIL算法为我们提供了一种“上帝视角”的优化思路:它不关心种群中个体的“爱恨情仇”(交叉),而是通过统计和学习,直接去描绘最优解的“样貌”(概率分布)。这种从操作实例到学习模型的思想转变,正是分布估计算法的魅力所在,也为解决复杂优化问题开辟了新的道路。

Rick_Theseusr的博客 632
上一篇: 机器学习中的无监督学习是什么?
下一篇: 免费学习机器学习交易的资源
BigQuant
博客等级 码龄8年 970粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值