MOEA算法的背景知识
MOEA算法
- 多目标进化算法优化MOEA
- 工作原理
- 举个例子
- 为什么单一策略可能会导致种群中的个体过于相似?
- 种群在MOEA里面做什么?
- 举例说明
多目标进化算法优化MOEA
Multi-objective evolutionary algorithm optimization (MOEA)
多目标进化算法优化(MOEA)是一种用于解决多目标优化问题的方法1。它通过模拟自然进化过程中的群体搜索行为,以近似帕累托前沿的方式来解决多目标优化问题1。MOEA是一类包含多个算法的范畴,其中一些常见的算法有NSGA-II、SPEA2、SMS-EMOA、MOPSO和MOEA/D1。
举个例子,假设我们要优化一个工业过程中的投资选择。我们希望在最大化利润的同时,尽量减少环境排放。此外,我们还希望提高员工的安全性和生活质量1。这是一个典型的多目标优化问题,可以使用MOEA来解决。
多目标进化算法优化(Multi-Objective Evolutionary Algorithm Optimization,MOEA)是一种用于解决多目标优化问题的进化算法。在实际问题中,我们通常需要在多个目标之间进行权衡,而这些目标往往是相互冲突的。例如,在车辆设计中,我们可能希望既提高燃油效率又增加车辆速度,但这两者通常是矛盾的。MOEA通过模拟生物进化过程来在多个目标之间寻找一个有效的权衡。
工作原理
MOEA通常使用一种称为“帕累托优化”的方法。在帕累托优化中,一个解决方案被认为是另一个解决方案的优越,如果它在一个或多个目标上更好,而在其他目标上至少不差。这样,我们就可以找到一个解决方案集,其中没有一个解决方案是其他解决方案的绝对优越。这个解决方案集被称为“帕累托前沿”。
举个例子
假设我们有一个简单的问题:设计一个无人机,该无人机需要在两个目标之间进行权衡:
最大飞行时间(目标是最大化)
最小重量(目标是最小化)
这两个目标是相互冲突的。具体来说,增加电池容量可以增加飞行时间,但也会增加重量。
步骤
1.初始化:生成一组随机的无人机设计方案(解决方案)。
评估:对每个解决方案的飞行时间和重量进行评估。
选择:从当前的解决方案集合中选择一些优秀的解决方案。
变异与交叉:通过随机变异和组合现有的优秀解决方案来生成新的解决方案。
再次评估与选择:将新生成的解决方案与现有的解决方案一起评估,并选择出帕累托前沿上的解决方案。
迭代:重复步骤3-5,直到达到预定的终止条件(如迭代次数、时间限制等)。
最后,你将得到一组解决方案,每个解决方案都是在最大飞行时间和最小重量之间的一种权衡。这就是多目标进化算法优化的基本概念。
为什么单一策略可能会导致种群中的个体过于相似?
为什么单一策略可能会导致种群中的个体过于相似?MOEA里面的种群是做什么的,请举例说明
在进化算法(包括MOEA)中,如果使用单一的选择或变异策略,可能会导致种群中的个体过于相似,这种现象通常被称为“早熟”或“过拟合”。当种群个体过于相似时,算法的探索能力会降低,这意味着算法可能会陷入局部最优解,而无法找到全局最优解或更多的帕累托优秀解。
种群在MOEA里面做什么?
在MOEA中,种群是由多个潜在解决方案(个体)组成的。每个个体都代表了问题空间中的一个点,具有一组特定的属性或变量值。种群用于通过选择、交叉(杂交)和变异等进化操作来迭代地改进解决方案。
举例说明
假设我们仍然在解决无人机设计的问题,目标是最大化飞行时间和最小化重量。
-
初始化种群: 我们首先生成一组随机的无人机设计。例如,种群中可能有10个无人机设计,每个设计都有不同的电池容量、翼展和材料。
-
评估: 接着,我们会评估种群中每个无人机设计的飞行时间和重量。
-
选择: 在这一步中,我们可能会用某种选择策略(如轮盘赌选择、锦标赛选择等)来选出表现最好的个体。
-
交叉与变异: 选出的优秀个体会通过交叉和变异生成新的无人机设计。例如,一个设计的电池容量可能与另一个设计的翼展进行组合。
-
新一轮评估与选择: 然后,我们会评估这些新生成的无人机设计,并将其与原来的种群进行合并。再次进行选择,以找出最佳设计。
-
迭代: 这个过程会持续进行,直到满足某个停止准则(如达到预定的迭代次数)。
通过这样的迭代过程,MOEA会不断地在多个目标之间进行权衡,最终找到一组解决方案,这些方案代表了不同的权衡折衷,形成帕累托前沿。
在上面的例子中,最初的种群中有10个无人机设计,那交叉变异后,种群中的无人机设计数量会变多吗?还是不变呢?
种群中的无人机设计数量在交叉和变异后是否会变多,取决于算法的具体实现和设置。
1.固定种群大小: 在一些MOEA实现中,种群大小是固定的。这意味着在每一代,都会从新生成的个体和旧个体中选择出与原始种群大小相同的个体。因此,在这种情况下,种群大小会保持不变。
2. 可变种群大小: 在其他一些MOEA实现中,种群大小可能会随时间而改变。这通常在更为复杂的算法中发生,例如当算法需要逐渐集中于某些特定区域的搜索时。
在上面的无人机设计的例子中,如果我们采用固定种群大小的策略,那么即使进行了交叉和变异,种群中无人机设计的数量还是会保持为10个。我们会从新生成的个体和现有的个体中选出表现最好的10个,以进行下一轮的迭代。
总的来说,这主要取决于你选择的算法和参数设置。
那如果是固定种群的大小的策略,进行了交叉和变异后,种群中的无人机设计的数量还是保持10个,那这10个都是交叉变异而来的吗?还是说也有上一代的老的设计呢?
在固定种群大小的策略下,经过交叉和变异操作生成的新个体通常会与上一代的个体一起参与下一轮的选择过程。因此,新一代的种群可能会包含一些新生成的个体和一些上一代的个体。
具体来说,你可能会采用以下几种策略之一:
-
完全替换: 所有新生成的个体替换掉上一代的所有个体。这样,新一代的种群会完全由交叉和变异产生的新个体组成。
-
部分替换: 在这种策略中,只有一部分新生成的个体会被用来替换上一代表现较差的个体。这样,新一代的种群会包含一些新个体和一些表现较好的老个体。
-
精英保留策略: 这种策略下,会保留上一代中表现最好的一部分个体(精英个体),并用新生成的个体填充其余的位置。
所以,在无人机设计的例子中,如果种群大小保持为10个,新一代的10个无人机设计可能是由新生成的设计和上一代优秀的设计共同组成的,具体比例取决于你选择的策略。
种群的大小,相当于最优解的候选个数?
是的,种群的大小相当于一组潜在最优解的候选个数。在每一代迭代中,种群中的所有个体都会被评估和排序,以确定哪些更接近于最优解。然后,表现较好的个体会通过交叉和变异等操作生成新一代的个体。
值得注意的是,种群大小与算法的效率和效果有密切关系。一个过小的种群可能不足以全面地探索解空间,容易陷入局部最优。而一个过大的种群可能会导致计算资源的浪费,且收敛速度可能会减慢。
在多目标优化问题(如MOEA)中,种群不仅代表了单一最优解的候选个数,还代表了多个可能的权衡方案(即帕累托前沿上的点)之间的候选个数。
就按上面的无人机的设计来说,什么叫交叉?什么叫变异?怎么称呼老的种群里面的设计呢(比如叫“上一代”)?怎么称呼新的种群里面的设计呢(比如新一代?子代?)?
交叉(Crossover)
在无人机设计的上下文中,交叉是一种操作,其中两个“父代”设计被选出来,然后它们的某些特征(例如电池容量、翼展等)被混合或交换以生成一个或多个“子代”设计。
变异(Mutation)
变异是另一种操作,它对一个单独的设计进行小的随机改变。例如,一个设计的电池容量可能会随机地增加或减少一定比例。
称呼
- 老的种群里面的设计通常被称为“父代”或“上一代”。
- 新生成的设计,或新的种群里的设计,通常被称为“子代”或“新一代”。
在进化算法中,这些术语用于描述算法的迭代过程,其中“父代”或“上一代”通过交叉和变异操作产生“子代”或“新一代”,然后这些“新一代”设计被用于下一轮的迭代和评估。这样,算法逐渐逼近问题的最优解或多个最优解。
交叉,相当于是在父代的某个特征的所有可能取值中选择出这个特征最好的取值?
交叉(Crossover)操作不一定是从父代的某个特征的所有可能取值中选择出这个特征最好的取值。在遗传算法和多目标进化算法(MOEA)中,交叉通常是一种组合操作,它从两个或更多的“父代”个体中随机地选择并交换某些特征,以生成一个或多个“子代”个体。
在无人机设计的例子中,假设有两个父代设计:
- 父代1:电池容量 = 2000mAh, 翼展 = 1.2m
- 父代2:电池容量 = 1500mAh, 翼展 = 1.5m
一个简单的交叉操作可能是这样的:
- 子代:电池容量从父代1中继承(2000mAh),翼展从父代2中继承(1.5m)
这里,子代继承了父代1的电池容量和父代2的翼展。这样的操作没有明确地从所有可能的电池容量或翼展取值中选择“最好”的一个;相反,它是从选定的父代个体中随机地或按照某种准则选择并组合特征。
交叉操作的具体方式可能会因算法的不同而不同。有一些高级的交叉操作可能会更加复杂,例如考虑多个父代个体,或者在交叉过程中使用更复杂的规则。
总之,交叉主要是一种随机组合父代特征的方式,而不一定是选择某个特定特征的“最优”取值。这样做的目的是为了生成具有多样性的子代个体,从而有可能找到更好的解决方案。
那变异的话,子代的某些特征的值是在父代里面从来没有出现过的?
是的,变异(Mutation)操作通常会引入一些从未在父代出现过的新特征值。这是一种随机过程,旨在在解空间中引入额外的多样性。
以无人机设计为例,如果一个父代设计有电池容量为2000mAh,一个简单的变异操作可能会随机地增加或减少这个数值,比如变成2050mAh或1950mAh,即使这样的电池容量在原始种群中从未出现过。
变异操作的目的是防止算法过早地陷入局部最优解,通过引入新的特征值来拓宽搜索范围。这有助于算法更全面地探索解空间,并有可能找到更好的解决方案。
为什么变异操作可用防止算法过早地陷入局部最优解?
变异(Mutation)操作可以防止算法过早地陷入局部最优解,主要有以下几个原因:
引入多样性
变异通过在种群中引入新的或不寻常的特征值来增加多样性。这有助于算法跳出局部最优区域,从而有机会探索到其他可能的更好区域。
扩大搜索范围
通过随机地改变某个或某几个特征值,变异操作能够扩大解空间的搜索范围。这使得算法不仅仅是在当前找到的最优解附近进行微调,而是有可能找到全新的、更优秀的解。
避免早熟收敛
在优化过程中,如果种群中的个体过于相似或完全相同,算法可能会陷入一种“早熟收敛”的状态,即过早地停留在局部最优解而不再前进。变异操作通过引入新的个体来打破这种单调性,从而促进种群向全局最优解的方向发展。
维持探索和开发的平衡
在优化问题中,通常需要在“探索”(exploration,即搜索解空间的不同区域)和“开发”(exploitation,即在当前最优解附近进行微调)之间找到一个好的平衡。变异操作通过引入全新的特征值来增强探索能力,而交叉(Crossover)操作通常更侧重于开发能力,即在已知的好的解附近寻找更好的解。
除了上述的因素,变异操作的效果还取决于其具体的实现方式和参数设置,例如变异率(即种群中将要发生变异的个体的比例)和变异的幅度(即每次变异操作改变特征值的程度)。
过高的变异率可能会导致种群失去其积累的好的特性,使算法变得更难收敛;而过低的变异率可能不足以引入足够的多样性,从而无法有效地避免局部最优。
因此,在实践中,通常需要通过实验或参数调整来找到适当的变异策略,以便在保持种群多样性和避免过早陷入局部最优之间找到一个平衡点。
总的来说,变异操作通过引入新的特征值和增加种群多样性,有助于算法更全面、更深入地探索解空间,从而提高找到全局最优解或更好解的机会。
这个遗传编译算法,就是模拟自然界的生物进化里面的遗传变异一样。但是对于自然界,生物是受到环境的影响来进行自然选择的。那在这里的遗传变异算法,它怎么判断哪个解比较好呢?
在遗传算法(Genetic Algorithms)或多目标进化算法(MOEAs)中,评估哪个解更好通常依赖于一个或多个目标函数(Objective Function)。目标函数是一个用于量化个体(解)质量的数学表达式。它把个体的特性(或特征)映射到一个实数值(或多个实数值,在多目标优化的情况下),这个值用于表示该解的好坏。
单目标优化:
在单目标优化问题中,目标通常是找到能使目标函数值最大化或最小化的解。算法在每一代都会评估种群中各个体的目标函数值,然后根据这些值进行选择、交叉和变异等操作。
多目标优化:
在多目标优化问题中,有多个目标函数需要同时考虑。这种情况下,通常使用帕累托优势(Pareto Dominance)的概念来评估哪个解更好。简言之,一个解如果在至少一个目标上比另一个解好,而在其他目标上至少与其一样好,那么它就被认为“支配”另一个解。
例子:
假设我们正在使用遗传算法优化无人机设计,目标是使无人机的飞行时间最大化,同时使成本最小化。在这里,飞行时间和成本就是两个目标函数。
设计A:飞行时间=2小时,成本=1000美元
设计B:飞行时间=1小时,成本=900美元
设计C:飞行时间=1.5小时,成本=850美元
在这个例子中,设计C在成本上比设计A和设计B都要好,而在飞行时间上也比设计B要好。因此,设计C可以被认为是一个比设计B更好的解。但是设计A和设计C之间就没有明确的“更好”或“更差”,因为它们在不同的目标上各有优势,这时候就需要依据特定应用场景或决策者的偏好来进一步决定。
通过这样的评估过程,算法能够识别出相对更优的解,并在后续的迭代中,通过选择、交叉和变异等操作,逐步改进种群的整体质量。这个过程模拟了自然界中由环境压力引导的自然选择机制。
在上面的种群概念,种群相当于就是待选解的集合吗?
是的,种群(Population)在遗传算法或多目标进化算法(MOEAs)中基本上就是待选解的一个集合。每一个个体(Individual)在种群中代表了问题解空间中的一个可能解。种群的大小和多样性影响了算法的搜索能力:一个较大和多样的种群可能有助于更全面地探索解空间,而一个过小或过于同质化的种群则可能限制搜索能力,导致算法陷入局部最优。
在算法的每一代迭代中,都会从当前种群中选出一些“优秀”的个体进行交叉和变异操作,生成新的个体(或解),这些新生成的个体会与当前种群中的个体一起,根据目标函数或多个目标函数进行评估和排序,从而形成下一代种群。
这个过程模拟了自然界中的生物进化过程,通过自然选择、交叉(配对)和变异等机制,不断优化种群,以适应环境或解决特定问题。
那种群里面的待选解可以有重复的吗?还是说里面的待选解必须都是互异的
在遗传算法和多目标进化算法(MOEAs)中,种群里面的待选解(个体)可以有重复,也可以是互异的,这取决于算法的设计和应用场景。
可以有重复的理由:
- 自然选择模拟:在自然界中,更适应环境的个体更有可能繁衍后代,因此在后代中可能会出现重复。
- 收敛加速:重复的“优秀”个体可以加速算法向全局最优或局部最优解的收敛。
- 简化实现:允许重复解可以简化选择、交叉和变异等操作的实现。
互异的优点:
- 多样性维持:保证所有解都是互异的可以增加种群的多样性,有助于算法更全面地探索解空间。
- 避免局部最优:更多的独特个体意味着有更多的机会跳出局部最优解,找到全局最优解。
在实际应用中,你可能会看到两种情况的混合使用。例如,一些算法在初期允许重复以加速收敛,但在后期采用某种多样性维持机制来避免陷入局部最优。总体来说,是否允许种群中的待选解有重复取决于具体的算法设计和优化目标。
相关文章:
MOEA算法的背景知识
MOEA算法 多目标进化算法优化MOEA工作原理举个例子 为什么单一策略可能会导致种群中的个体过于相似?种群在MOEA里面做什么?举例说明 多目标进化算法优化MOEA Multi-objective evolutionary algorithm optimization (MOEA) 多目标进化算法优化࿰…...
【rtp-benchmarks】读取本地文件基于uvgRtp实现多线程发送
input 文件做内存映射 : get_mem D:\XTRANS\soup\uvg-rtp-dev\rtp-benchmarks\util\util.cc 文件中读取chunksize 到 vector 里作为chunks 创建多个线程进行发送 std::vector<std::thread*> threads;...
fire-voc 火光 烟火 火灾 目标检测数据集
一年中最容易引发火灾的季节是在冬季,主要原因有这样几点。 1、秋冬季节,随着用火、用电、用气增加,加上天气干燥,棉花、木材 、衣物等物体内含有的水分也较低。2、秋冬季风力较大,一旦有火苗冒起就很容易随风蔓延,是火灾的高发期。3、春季也是火灾多发季节&#x…...
【力扣1462】课程表(拓扑排序+bitset优化到O(n))
题目描述: 你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程,你 必须 先选 ai 课程。 有的课会有直接的先修课程&am…...
【AI】机器学习——支持向量机(非线性及分析)
5. 支持向量机(线性SVM) 文章目录 5.4 非线性可分SVM5.4.1 非线性可分问题处理思路核技巧核函数特点 核函数作用于SVM 5.4.2 正定核函数由 K ( x , z ) K(x,z) K(x,z) 构造 H \mathcal{H} H 空间步骤 常用核函数 5.5 SVM参数求解算法5.6 SVM与线性模型关系 5.4 非线性可分SVM …...
2023-09-20 LeetCode每日一题(拿硬币)
2023-09-20每日一题 一、题目编号 LCP 06. 拿硬币二、题目链接 点击跳转到题目位置 三、题目描述 桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。 示…...
Java21的新特性
Java语言特性系列 Java5的新特性Java6的新特性Java7的新特性Java8的新特性Java9的新特性Java10的新特性Java11的新特性Java12的新特性Java13的新特性Java14的新特性Java15的新特性Java16的新特性Java17的新特性Java18的新特性Java19的新特性Java20的新特性Java21的新特性Java22…...
测试-----selenuim webDriver
文章目录 1.页面导航2.元素定位3. 浏览器操作4.获取元素信息5. 鼠标的操作6. 键盘操作7. 元素等待8.下拉框9.弹出框10.滚动条11.frame处理12.验证码处理(cookie) 1.页面导航 首先是导入对应的包 :from selenium import webdriver然后实例化:driver web…...
21天学会C++:Day12----初始化列表
CSDN的uu们,大家好。这里是C入门的第十一讲。 座右铭:前路坎坷,披荆斩棘,扶摇直上。 博客主页: 姬如祎 收录专栏:C专题 目录 1. 初始化列表 1.1 引入 1.2 初始化列表 1.3 初始化列表的注意事项 1.…...
OpenAI开发系列(二):大语言模型发展史及Transformer架构详解
全文共1.8w余字,预计阅读时间约60分钟 | 满满干货,建议收藏! 一、介绍 在2020年秋季,GPT-3因其在社交媒体上病毒式的传播而引发了广泛关注。这款拥有超过1.75亿参数和每秒运行成本达到100万美元的大型语言模型(Large …...
Gson - 一个Java序列化/反序列化库
官网 GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back 项目简介 一个Java序列化/反序列化库,用于将Java对象转换为JSON和返回JSON。 Gson is a Java library that can be used to convert Java…...
6-1 汉诺塔
汉诺(Hanoi)塔问题是一个经典的递归问题。 设有A、B、C三个塔座;开始时,在塔座A上有若干个圆盘,这些圆盘自下而上,由大到小地叠在一起。要求将塔座A上的圆盘移到塔座B上,并仍按同样顺序叠放。在…...
Linux之initd管理系统(海思、ZYNQ、复旦微)添加密码登录验证
设置root用户密码:passwd命令设置密码,即修改/etc/passwd文件 一、串口提示输入用户名密码方法 修改 /etc/inittab 方法一: 增加: ::askfirst:-/bin/login 注释: #::respawn:/sbin/getty -L ttyS000 115200 vt…...
怎么更改代理ip,代理ip如何切换使用?
我们要如何使用HTTP代理,对它进行切换使用呢? 如果你购买了青果网络的HTTP代理,可以在文档这边获取使用方法: 可以在这里调试: 也可以在这里选择key提取。 如果有的朋友们想利用利用python,每隔30秒使用API…...
【C++从0到王者】第三十三站:AVL树
文章目录 前言一、AVL 树的概念二、AVL树的实现1. AVL树的结点定义2. AVL树的插入之插入部分3. AVL树的插入之平衡因子的改变4. AVL树的插入之左旋5. AVL树的左旋抽象图6.AVL树的右旋抽象图7. AVL树的双旋8. AVL树的右左双旋9. AVL树的右左双旋的本质10. AVL树的左右双旋11. AV…...
手机机型响应式设置2
window.screen.height:屏幕高度 window.innerHeight:视口高度(去除浏览器头尾的高度) document.body.clientHeight:内容高度 vh:网页视口高度的1/100 vw:网页视口宽度的1/100 vmaxÿ…...
uni-app 之 解决u-button始终居中问题
uView中u-button始终居中问题如何解决的简单方法? 1:给该元素margin-right: 0;可以达到向右靠齐; 2:给该元素的父元素设置float: right image.png <u-button style"width: 50px; margin-left: 0;" plain"t…...
Python日期处理库:掌握时间的艺术
💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 日期和时间在计算机编程…...
JOSEF约瑟 智能电流继电器KWJL-20/L KWLD26 零序孔径45mm 柜内导轨式安装
KWJL-20智能电流继电器 零序互感器: KWLD80 KWLD45 KWLD26 KWJL-20 一、产品概述 KWJL-20系列智能剩余电流继电器(以下简称继电器)适用于交流电压至660V或更高的TN、TT、和IT系统,频率为50Hz。通过零序电流互感器检测出超过…...
NLP技术如何为搜索引擎赋能
目录 1. NLP关键词提取与匹配在搜索引擎中的应用1. 关键词提取例子 2. 关键词匹配例子 Python实现 2. NLP语义搜索在搜索引擎中的应用1. 语义搜索的定义例子 2. 语义搜索的重要性例子 Python/PyTorch实现 3. NLP个性化搜索建议在搜索引擎中的应用1. 个性化搜索建议的定义例子 2…...
演唱会没买到票?VR直播为你弥补遗憾
听说周杰伦开了演唱会?没买到票的人是不是有着大大的遗憾呢?很多时候大型活动、演唱会都会因为场地限制而导致很多人未能有缘得见,而且加上票价成本高,“黄牛票”事件频出,我们的钱包受不住啊!!…...
myabtis的缓存级别
文章目录 MyBatis缓存的区别是什么作用范围方面有哪些差异生命周期数据进行了存储缓存的优缺点 MyBatis缓存的区别是什么 MyBatis 提供了一级缓存和二级缓存,这两者的主要区别在于其作用范围和生命周期。 一级缓存:一级缓存是 SqlSession 级别的缓存。…...
gin框架再探
Gin框架介绍及使用 | 李文周的博客 (liwenzhou.com) lesson03_gin框架初识_哔哩哔哩_bilibili 1.路由引擎 //路由引擎 rgin.Default() 2.一些http请求方法 get post put delete等等 遇到什么路径,执行什么函数 r.GET("/hello",func{做你想做的事返回…...
经典算法-----约瑟夫问题(C语言)
目录 前言 故事背景 约瑟夫问题 环形链表解决 数组解决 前言 今天我们来玩一个有意思的题目,也就是约瑟夫问题,这个问题出自于欧洲中世纪的一个故事,下面我们就去通过编程的方式来解决这个有趣的问题,一起来看看吧!…...
代码随想录 动态规划Ⅴ
494. 目标和 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - ,然后串联起所有整数,可以构造一个 表达式 : 例如,nums [2, 1] ,可以在 2 之前添加 ,在 1 之前添加 - …...
驱动DAY9
驱动文件 #include <linux/init.h> #include <linux/module.h> #include <linux/of.h> #include <linux/of_gpio.h> #include <linux/gpio.h> #include <linux/fs.h> #include <linux/io.h> #include <linux/device.h> #incl…...
03贪心:摆动序列
03贪心:摆动序列 376. 摆动序列 局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值。 整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列。…...
javascript获取元素在浏览器中工作区域的左、右、上、下距离,或带滚动条的元素在页面中的大小
//获取元素在包含元素框中的大小 //第1个函数为获取元素在包含元素中左内边框的距离 function getELementLeft(element){//获取元素在包含元素左边距离var actualeftelement.offsetLeft;//获取元素的上级包含元素var currentelement.offsetParent;//循环到一直没有包含元素whil…...
VSCode 安装使用教程 环境安装配置 保姆级教程
一个好用的 IDE 不仅能提升我们的开发效率,还能让我们保持愉悦的心情,这样才是非常 Nice 的状态 ^_^ 那么,什么是 IDE 呢 ? what IDE(Integrated Development Environment,集成开发环境)是含代码…...
c盘中temp可以删除吗?appdata\local\temp可以删除吗?
http://www.win10d.com/jiaocheng/22594.html C盘AppData文件夹是一个系统文件夹,里面存储着临时文件,各种应用的自定义设置,快速启动文件等。近期有用户发现appdata\local\temp占用了大量的空间,那么该文件可以删除吗?…...
做网站的费用入账/网站模板及源码
...
厦门外贸网站建设多少钱/百度如何做推广
arpspoof是一个好用的ARP欺骗工具,Kali linux中自带了该工具,在ubuntu中,安装它只需运行命令:sudo apt-get install dsniff安装完成后,输入命令:man arpspoof 可以查看使用手册,2.4版本的手册内…...
网站添加对联广告代码/媒体发稿费用
2019独角兽企业重金招聘Python工程师标准>>> 摘要 原文:Brendan Greggs Blog :《Golang bcc/BPF Function Tracing》,31 Jan 2017引子:gdb、go execution tracer、GODEBUG、gctrace、schedtrace一、gccgo Function Counting二、Go…...
网站代码优化的方法/seo 知乎
bitset的好处很多,尤其是第一次接触到这个结构的人。觉得只需要一个key就可以很简单的处理这个标志位的数据, 甚至说几个亿的offset占用内存也会很小。但在项目实际使用过程中还是要好好算算这笔账的。 bitset占用的内存是用最大的offset来决定的&#x…...
商丘做网站优化/分销渠道
https://blog.csdn.net/sidely/article/details/43059795 xrandr --output VGA --auto --output LVDS --off 打开外接显示器,同时关闭笔记本液晶屏幕(只用外接显示器工作) xrandr --output VGA --off --output LVDS --auto 关闭外接显示器…...
为什么要建设学校网站/建材企业网站推广方案
模拟实现C智能指针shared_ptr和weak_ptr 仿写C的shared_ptr和weak_ptr 当强智能指针shared_ptr的引用计数为0时,析构资源 当弱智能指针weak_ptr的引用计数为0时,析构引用计数对象 #include<iostream> #include<new> #include<stdio.h&g…...