首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏图灵技术域

    NSGA2算法MATLAB实现(能够自定义优化函数)

    以前写了一个简单NSGA2算法能够用在ZDT1函数上:https://www.omegaxyz.com/2017/05/04/nsga2matlabzdt1/ 那个NSGA2算法不具有普遍性,下面参考课国外课题小组代码重新修改了内部冗余内容 ,使之能够自定义优化函数。 ,构造其所有不同等级非支配解集F1、F2…….. 3、按照需要计算Fi中所有个体拥挤距离,并根据拥挤比较运算符构造Pt+1,直至Pt+1规模为N,图中Fi为F3 具体解释请见:https://www.omegaxyz.com previous_index = current_index; end ⑦自定义评价函数(我选用ZDT1函数) MATLAB function f = evaluate_objective(x, M ); f(2) = g * (1 - sqrt(x(1) / g)); end 500个种群运行500代结果: ?

    1.3K31发布于 2021-05-21
  • 来自专栏技术总结

    算法2

    有两个算法 A 和 B ,假设两个算法输入规模都是 n,算法 A 要做 2n+3 次操作,算法 B 要做 3n+1 次操作。觉得谁快?看下图: ? 而当 n = 2 时,两者效率相同;当 n > 2时,算法 A 就开始优于算法 B 了,随着 n 增加, 算法 A 比算法 B 越来越好了,得出结论,算法 A 好过 算法 B 判断一个算法效率时,函数中常数和其他次要项常常可以忽略 二、算法时间复杂度 1、算法时间复杂度定义 进行算法分析时,语句总执行次数 T(n)是关于问题规模n函数,进而分析 T(n)随n变化情况并确定T(n)数量级。 2、在修改后运行次数函数中,只保留最高阶项。 3、如果最高阶项存在且不是1,则去除与这个项相乘常数,得到结果就是大O阶 3、常数阶 高斯算法,时间复杂度不是O(3),而是O(1)。 )/2 = (n²+n)/2 用推导大O阶方法,第一条,没有加法常数不予考虑;第二条,只保留最高阶项,因此保留n²/2;第三条,去除这个项相乘常数,也就是取出1/2,最终这段代码时间复杂度为O(n²

    1.3K90发布于 2018-05-22
  • 来自专栏OSChina

    springBoot 整合自定义雪花算法

    1 配置pom文件 # 雪花算法配置数据中心和机器编号,不同机器组合不能重复 snowflake: datacenterId: 1 machineId: 2 2 编写配置文件 SnowFlakeFactory.java java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.LockSupport; /** * 雪花算法 = 5; //最大扩展字段 private long maxExtension = 2L; /** * 保留machineId和lastTimestamp, 以及备用 IllegalStateException("时钟在向后移动,当前时间是 " + currentMillis + " 毫秒,machineId映射 = " + machineIdLastTimeMap); } } 定义一个枚举 SnowFlakeController { @Autowired private SnowFlakeFactory snowFlakeFactory; /** * 雪花算法测试

    5.4K10发布于 2020-05-28
  • 来自专栏该溜子的专栏

    算法】每日一题——奇怪算法2

    处理是否能合并区间这一点很关键,比较是集合中最后一个元素右端点和待放入元素左端点大小,一旦重合,就可合并女少! ~ 3:算法方法技巧.get()方法传入下标值,不太熟 class Solution { public int[][] merge(int[][] intervals) { Arrays.sort , 2:出栈后运算是num2在前,num1在后 3:遍历每一个字符串时候,负数要特殊处理一下,用一个标志位即可解决 class Solution { public int evalRPN(String 那么因为最后跳法不同,所以这一定是两种不同路线。 进而如果有n阶台阶 ,我们用一个函数来进行表示——用 f(x) 表示爬到第 x 级台阶方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台阶, 所以有f(x)=f(x−1)+f(x−2) class

    27500编辑于 2025-02-18
  • 来自专栏flutter开发者

    定义View【2

    上期回顾 ---- 在前面的文章中我们学习了部分绘制相关方法,在本篇文章中我们会继续再介绍一些常用绘制方法。 Path用法也非常简单,下面列出一下常用方法:方法名 作 方法 说明 moveTo 将路径起始点移动到指定位置 relativeMoveTo 相对于当前位置移动到 lineTo 从当前位置连接指定点 当然我们也可以使用三阶贝塞尔曲线来绘制其他图形: 比如,我对你们爱哦 ? 绘制颜色drawColor ---- 绘制颜色用起来就比较简单了,主要是用来给你绘制过图形上做颜色变换,颜色变换模式有多种,大家可以在下面自己尝试,下面仅仅演示下如何使用 首先我们先绘制一个颜色为蓝色圆 然后我们打开代码注释,绘制红色 ? 或者我们修改绘制模式为 BlendMode.colorDodge ? 小伙伴们可以自己在下面尝试不同颜色模式来看看效果。

    61820发布于 2018-11-20
  • 来自专栏Java自学

    注解2-注解定义

    这里我们自己定义一个注解:Myannot,来尽可能多涵盖到注解相关知识点。Myannot基础结构我们在工程中新建一个包:anno,并在这个包中定义Myannot,代码如下。 比如你定义Sport接口时候,default一个run函数,这在接口定义中是可行。但是放在注解定义中,不允许,尽管run看起来完美符合注解参数结构。 说直白点,你自己定义类是不能作为注解参数类型。比如你在anno包中再定义一个Club,然后设置Myannot一个参数返回类型为Club,会报错。 你要是开心的话你也可以自己定义元注解。官方给出元注解并不多,就下面几个,均定义于java.lang.annotation包中。TargetTarget元注解定义了注解允许被标注在哪些类型声明上。 Document我们在前文很多元注解定义中可以看到这个元注解,简而言之就是用这个元注解标记注解会在生成java doc中出现,这里就不举例了,只给出该元注解定义

    49300编辑于 2025-04-21
  • 来自专栏晓晨的专栏

    IdentityServer Topics(2)- 定义资源

    您通常在系统设计中第一件事就是您要保护资源。 这可能是您用户身份信息,如个人资料数据或电子邮件地址,或访问API。 您可以使用C#对象模型定义资源(硬编码),或从数据存储中加载它们。 IResourceStore实现处理这些低级细节。 本文使用是in-memory实现。 定义身份资源 身份资源也是数据,如用户ID,姓名或用户电子邮件地址。 您还可以定义定义身份资源。 创建一个新IdentityResource类,为其指定一个名称和一个可选显示名称和描述,并在请求此资源时定义哪个用户身份单元应该包含在身份令牌(Id Token)中: public static IEnumerable API资源 为了允许客户请求API访问令牌,您需要定义API资源,例如: 要访问API令牌,还需要为其注册作用域(Scope)。

    81230发布于 2018-06-22
  • 来自专栏用户10781703的专栏

    算法奥秘:常见六种算法算法导论笔记2

    算法奥秘:种类、特性及应用详解(算法导论笔记1) 上期总结算法种类和大致介绍,这一期主要讲常见六种算法详解以及演示。 排序算法: 排序算法是一类用于对一组数据元素进行排序算法。 根据不同排序方式和时间复杂度,有多种排序算法。常见排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 二分查找算法是一种高效查找算法,它要求待查找数组必须是有序。该算法基本思想是将数组分成两个部分,然后根据目标元素与中间元素比较结果,将查找范围缩小一半。 图论算法: 图论算法用于解决图论问题,如最短路径、最小生成树、网络流等。常见图论算法包括Dijkstra算法、Prim算法、Kruskal算法等。 分治算法: 分治算法将问题分解为若干个子问题,分别解决这些子问题,然后将子问题解合并以得到原问题解。常见分治算法包括快速排序、归并排序等。

    83910编辑于 2023-11-23
  • 来自专栏AngelNI

    排序算法-2

    = a[i]; a[i] = a[j]; a[j] = t; } void heapify(ll *tree,ll n,ll i) { if(i>=n) return ; ll c1 = 2* i+1; ll c2 = 2*i+2; ll max = i; if(c1<n&&tree[c1]>tree[max]) { max = c1; } if(c2<n&&tree[c2]> tree[max]) { max = c2; } if(max ! = i) { swap(tree,max,i); heapify(tree,n,max); } } void heapsort(ll *a,ll n) { for(ll i =n/2-1; for(ll i =0;i<n;++i) cout<<a[i]<<" "; cout<<endl; } return 0; } qsort c++函数库

    38710发布于 2020-04-14
  • 来自专栏修也的进阶日记

    算法手记2

    一.BC64 牛牛快递 牛客网题目链接(点击即可跳转):BC64 牛牛快递 题目详情: 本题详情如下图: 题目思路: 本题解题思路如下: 就是按逻辑意思模拟写代码就行,需要注意快递重量需要向上取整 求出动态转换数组3.返回特定数组值即可. 解题代码: 本题解题代码如下: class Solution { public: /** * 代码中类名、方法名、参数名已经指定,请勿修改,直接返回方法规定值即可 * i<=cost.size();i++) dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]); return dp[cost.size ()]; } }; 结语 说点啥好呢...不断修补细节然后提高效率,不断学习算法并应用出肌肉记忆.

    20400编辑于 2025-03-14
  • 来自专栏Article

    算法 Day 2

    冒泡排序 平均时间复杂度 O(n2) 空间复杂度 O(1) function bubbleSort(arr) { var i = arr.length; var position =

    17610编辑于 2022-06-14
  • 来自专栏云深之无迹

    Python 算法.2

    如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能组合? 优化 时间复杂度: T(n) = O(n*n*(1+1)) = O(n*n) = O(n2) 这里具体自己去看书,我直接说出结论 常见时间复杂度 O(1) < O(logn) < O(n) < O (nlogn) < O(n2) < O(n3) < O(2n) < O(n!) = Timer("test2()", "from __main__ import test2") print("append ", t2.timeit(number=1000), "seconds") 我们可以通过例子看到在表头和表尾插入时间比较 这里给出列表相关方法时间复杂度 因为除了列表以外,我们映射数据类型也是常见所以这里给出dict相关复杂度

    69230发布于 2021-04-28
  • 来自专栏奇点大数据

    算法之旅(2)——朴素存取

    上次我们说到算法最基本处理规则和算法在计算机底层所藉由工作方式。这次我们来说说计算机中最简单算法,最朴素数据存取。 我们把单位放大一点去看——因为从信息论下界角度来看,1bit东西在二进制当中只能表示两个不同信息含义,如果要想表示3或4个,那就需要2bit。 如果你想把内存地址1和内存地址2数据做加法,那就麻烦点,不过也能很快搞定“MOV 内存地址1 寄存器地址1”,“MOV 内存地址2,寄存器地址2”,“ADD 寄存器地址1, 寄存器地址2”,这样最后寄存器地址 1中值就是内存地址1和内存地址2加和值了。 计算机中读和写,算法效率高不高,最底层实现方式都已经给出来了,这就是计算机自己珠算口诀。一切算法实现最终落实下来都是用这样方式组合而成,自然成本估计也就是用成本叠加方式去计算。

    77350发布于 2018-04-11
  • 来自专栏程序员小灰

    漫画算法:判断2乘方

    题目:实现一个方法,判断一个正整数是否是2乘方(比如16是24次方,返回True;18不是2乘方,返回False)。要求性能尽可能高。 解法一: 创建一个中间变量Temp,初始值是1。 然后进入一个循环,循环中每次让Temp和目标整数比较,如果相等,则说明目标整数是2乘方;如果不相等,则让Temp增大一倍,继续循环比较。当Temp大于目标整数时,说明目标整数不是2乘方。 如果目标整数大小是N,则此方法时间复杂度是O(LogN)。 小灰回忆到此结束...... 解法二: 非常有趣也非常简单解法。 因为2乘方都符合一个规律,即 N&N-1 等于 0,所以直接用这个规律判断即可。该算法时间复杂度是O(1)。 思考题: 实现一个方法,求出一个正整数转换成二进制后数字“1”个数。

    64120编辑于 2022-07-05
  • 来自专栏dotNET知音

    .NET高级特性-Emit(2)类定义

    废话不多说,首先,我们先来回顾一下C#类内部由什么东西组成:   (1) 字段-C#类中保存数据地方,由访问修饰符、类型和名称组成;   (2) 属性-C#类中特有的东西,由访问修饰符、类型、名称和 接着,我们再观察C#类本身又具备哪些东西:   (1) 访问修饰符-实现对C#类访问控制   (2) 继承-C#类可以继承一个父类,并需要实现父类当中所有抽象方法以及选择实现父类虚方法,还有就是子类需要调用父类构造器以实现对象创建 从上图我们可以很清晰看到.NET层级结构,位于树顶层浅蓝色圆点表示一个程序集Assembly,第二层蓝色表示模块Module,在模块下均为我们所定义类,类中包含类泛型参数、继承类信息、实现接口信息 AssemblyBuilder   (1) 首先,我们先引入命名空间,我们以上节Foo类为样例进行编写 using System.Reflection.Emit;  (2) 获取基类和接口类型 var   (1) 动态DTO-当我们需要将实体映射到某个DTO时,可以用动态DTO来代替你手写DTO,选择你需要字段回传给前端,或者前端把他想要字段传给后端   (2) DynamicLinq-我第一篇博文有个读者提到了表达式树

    1.6K20发布于 2020-02-12
  • 来自专栏Java技术进阶

    OAuth2定义和运行流程

    活动地址:CSDN21天学习挑战赛 文章目录 OAuth2 定义 OAuth 运行流程 授权码模式(Authorization Code) 隐式授权模式(Implicit) 密码授权模式(Password Credentials) 客户端授权模式(Client Credentials) OAuth2 定义 开放授权(Open Authorization OAuth) 是一种资源提供商用于授权第三方应用代表资源所有者获取有限访问权限授权机制 ,确认有效后发放访问令牌 客户端使用访问令牌向资源服务器申请资源 资源服务器验证访问令牌,确认无误后向客户端提供资源 在这个流程中,第二步OAuth定义了4种授权模式,用于将用户授权许可提供给客户端。 &state=1659803324&display=page&scope=get_user_info%2Cadd_share%2Cget_other_info%2Cget_fanslist%2Cget_idollist 关于OAuth2定义和运行流程先讲到这里,下篇将在Spring Security中使用OAuth2

    1.4K40编辑于 2022-12-02
  • 来自专栏数据云团

    算法篇-python排序算法-2

    冒泡排序|插入排序|选择排序 回顾下写过代码,理一理~ >冒泡排序 ? >插入排序 ? >选择排序 ? 接下来是快排啦,别刹不住车呀~稳着点开比较好 ? >快速排序 让指定元素归位,就是放到它应该放位置(左边元素比它小,右边元素比他大),然后对每个元素归位,完成排序。 有没有想到思路? 在前面的学习中有用过标志位做法,而这次需要另写一个归位函数。 ? ? 你会发现一个有趣事情,那就是 left 和 right 取值,如果需要排列元素很多又不知道多少时,有个麻烦事就发生了。 你 left 值可以取第一个元素索引值,那 right 呢 ? 快排存在一个最坏情况,就是每次归位,都不能把列表分成两部分。

    72130发布于 2019-07-18
  • 来自专栏码农帮派

    LeetCode中级算法-回溯算法2

    子集 [题目] 给定一个不包含重复元素数组,返回该数组所有可能子集 [输入] [1,2,3] [返回] [[] [3] [2] [2 3] [1] [1 3] [1 2] [1 2 3]] [解法 import "fmt" func main() { input := []int {1,2,3} result := computeResult(input) fmt.Println( [ ["A","B","C","E"], ["S","F","C","S"], ["A","D","E","E"], ] [输入1] "ABCCED" [返回1] true [输入2] "ABCS" [返回2] false [解法] 这个题目的解点是第i个元素上下左右是不是下一个元素,遍历整个字符串,当遍历到第i个字符串时候,需要在上一个字母坐标周围(上下左右)找到第i个字母 ,要是可以找到,就遍历下一个字符,并让下一个字符以新坐标进行检测,整个过程中只要发现有true,就说明可以继续向下 [代码实现] package main import "fmt" var board

    60420发布于 2021-01-12
  • 来自专栏强化学习专栏

    聚类算法2)--- ISODATA算法

    文章分类在AI学习笔记: AI学习笔记(8)---《聚类算法2)--- ISODATA算法》 聚类算法2)--- ISODATA算法 一、 ISODATA算法 ISODATA 其他聚类算法见: 聚类算法(1)---最大最小距离、C-均值算法 1.1算法原理 SODATA算法采用迭代方式动态地更新簇数目和簇中心,根据设定参数来调整簇数量以及样本点与簇之间距离等 算法注意事项 ISODATA算法相比于传统K-means算法增加了簇合并和簇分裂步骤,这使得算法能够动态地调整簇数量和形状,适应数据复杂性。 三、 ISODATA算法实验结果 相关参数设置: 参数类型 数值 预期聚类数 2 初始聚类中心个数 3 每类最小样本数 3 标准差阈值 0.1 最小中心距离 2 每次可合并最多对数 3 迭代次数 最终运行结果 由此实验可知,设置预期聚类数为3或者5,聚类最终结果分类为2类。

    71310编辑于 2024-12-03
  • 来自专栏HenCoder

    HenCoder UI 部分 2-2 全新定义 View 尺寸

    这期是 HenCoder 布局部分第二期:重写 onMeasure() 来全新定制自定义 View 尺寸。 简介 这期虽然距离上期时间比较久,但主要是我个人原因,而不是因为这期内容难。 这期内容还是比较简单,主要是一些概念和原理上东西,实操方面非常容易,所以和上期一样,主要把视频看看就差不多啦: ? 总结 和上期一样,这期同样是视频之后就直接是总结。 因为关键点全都在视频里讲清楚了,所以这里只总结一下视频中关键点: 全新定制尺寸和修改尺寸最重要区别 需要在计算同时,保证计算结果满足父 View 给出尺寸限制 父 View 尺寸限制 由来: 开发者要求(布局文件中 layout_ 打头属性)经过父 View 处理计算后更精确要求; 限制分类: UNSPECIFIED:不限制 AT_MOST:限制上限 EXACTLY:限制固定值 全新定义定义 View 尺寸方式 重新 onMeasure(),并计算出 View 尺寸; 使用 resolveSize() 来让子 View 计算结果符合父 View 限制(当然,如果你想用自己方式来满足父

    41130发布于 2018-08-20
领券