首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

多目标优化算法(一)NSGA-Ⅱ(NSGA2)

多目标优化算法(一)NSGA-Ⅱ(NSGA2) 注:没有想到这篇博客竟然有很多人查看,这是我去年写算法,里面难免会有一些错误,大家可以看看评论区,这里matlab代码不太好,是以C语言思维写,...基本没有并行,初学者建议可以看看platEMO代码,提前培养好写代码习惯!...前言 这个算法是本人接触科研学习实现第一个算法,因此想在这里和大家分享一下心得。 1....end 从二目标优化问题来看,就像是该个体在目标空间所能生成最大矩形(该矩形不能触碰目标空间其他边长之和。拥挤度示意图如图2所示。...图8 ZDT6 pareto最优解对比图(绿色为理论值,红色为实验值) 从结果中可以看出,除ZDT4以外,找到解几乎全部是pareto前端上,并且解在目标空间分布十分均匀,该算法对于非凸非均匀多目标函数最优解寻找还是十分有效

6.4K42

基于事件型表驱动法菜单框架之小熊派简易气体探测器实战项目开发(中)

上次我们分享了事件驱动型菜单框架,也实现了一个基本小项目,如下: 基于事件型表驱动法菜单框架之小熊派简易气体探测器实战项目开发() 但是怎么看怎么都觉得界面不爽,单纯显示文字方式实在是太单调了,...于是,我选择在SD卡中放图片,通过Fatfs去读取SD卡中图片来进行显示,图片都是我自己在阿里图库开源素材,然后用PS自己P: ? 废话不多说,来看看实际效果吧!...演示视频如下: 这样看起来效果就舒服一啦。...此时按左键可以切换选项,短按右键进入某一菜单项,长按右键退出回到主页面,这里实现了仪器信息,其它项目还没有实现,但要添加也非常简单,期待后期分享。...本节代码已同步到码云代码仓库中: 获取方法如下: 1、新建一个文件夹 ? 2、使用git clone远程获取小熊派所有案例代码 ? ?

59321
您找到你想要的搜索结果了吗?
是的
没有找到

C++可调用Callable类型总结

但是函数对象本质还是一个 class 具体化 object, 里面是可以附带一些成员变量(可以理解为函数对象状态(state)), 这就让函数对象应用场景比函数指针更广阔....函数指针并不是没有其用处了, 对于 C API 库里某些函数不支持函数对象还是有用武之地....这里不提及模板函数, 因为模板函数概念存在于编译期, 运行期函数没有模板概念, 都是经过完全特化过, 因此与普通函数/类成员函数概念是一致....; // 正确, 没有状态 lambda (没有捕获)lambda表达式可以直接转换为函数指针 Ptr p1 = [&](int* p){delete p;}; // 错误, 有状态 lambda...3、心心念念优化完成了,虽然不是很完美

23420

C++ string类学习

insert有两个使用偏移量进行操作重载函数,且都没有默认值,根据输入参数选择函数,如果写成str.insert(3,'c');那么将直接在str[3]位置插入1个c字符。...所以使用stringerase和substr操作时候最好把两个参数写全了,且注意表示不是偏移量区间(迭代器版本才是区间),而是从某个偏移量开始n个数,而使用insert时候可以写偏移量,也可以将偏移量和要插入个数同时写出..."<<c_num<<endl; 35 string f="def"; 36 int f_num=e.find(f); 37 cout<<"字符串f位置在"<<f_num<<endl...同样重载运算符operator<<用于输出操作。...,不是首字符位置这个与rfind区分 string类替换函数: string &replace(int p0, int n0,const char *s);//删除从p0开始n0个字符,然后在

1.2K90

如何编写复杂sql

很多人将这个问题归结为天赋,我却不这么看,我想这个不是天赋问题,任何人经过一定有效率学习和练习都能完成。...凯恩教授曾说:要善于把复杂问题简单化。李小龙最后把深奥武学简单之化为功和防,就是中国古典哲学中阴和阳。...,列出我们用到字段。...但实际,所有的报表字段都是从上面的sql列出来字段经过简单处理得来,比如性别的数量,其实就是count(‘男’)或者count('女'),年龄是count(cust_age)得到。...基本已经能够看到结果集样子了。但是,现在结果集还不正确,因为大部分统计字段还都是0,我们需要对它进行转换。 转换完成之后,只需要分组然后count一下即可。

5.4K100

研发效能提升,从正确地实施度量开始

工作切分随意性 有时管理者会制定一些KPI来度量团队绩效,但就像那句名言所说:你度量什么,就会得到什么。其实这句话说了一半,另一半是:只是不一定是用你所期待方式得到。...实际,如果将代码产出作为考核KPI,除了会得到一堆臃肿、难以维护代码之外没有任何好处;如果将研发过程中发现缺陷数作为考核KPI,自然会形成开发与测试团队之间『混乱之墙』,除了增加团队之间隔阂也没有其他好处...以敏捷研发过程中一些概念(如故事点数)进行度量 有些采用敏捷研发模式团队,在使用每个迭代能完成故事点数或迭代速率来进行度量和考核,实际只是一种容量规划工具(推测需要多久完成工作),绝对数值跟团队紧密相关...研发效能度量正确姿势 通过以上分析可以得知,我们对软件研发效能度量,应当遵从以下两个基本原则: 1. 聚焦在全局指标不是局部指标 我们要促进跨越职能和功能,在团队内、团队间彼此高效协作。...聚焦在结果产出不是某阶段工作输出 我们不应对那些看似繁忙但产出了一大堆无效工作输出团队或人员进行奖励,而是引导到那些对促进组织达成目标有实际帮助工作上去。

7.4K44

清华博士后用10分钟讲解AlphaCode背后技术原理,原来程序员不是那么容易被取代

也就是说,AlphaCode代码能力媲美在Codeforces参加过测试几乎一半程序员(2300名)。...,为挑战者提供了能与正确预期输出相匹配输入。...现在,他们不尝试生成输入与输出对,只是试图产生一些与问题相关现实输入。所以,AlphaCode可能必须根据问题所在,生成字符串、二进制数或数字列表等。 ...他们抓取了一些 github 代码,并随机选择所谓枢轴(pivot point)。 枢轴之前所有内容都会被输入编码器,解码器目标是重建枢轴以下代码。...编码器仅输出代码向量表示,可用于整个解码过程。 解码器以自回归方式运行:首先预测代码第一个标记。然后,损失函数只是预测 softmax 输出和真实令牌(token)之间交叉熵。

77120

代码测试意味着完全消灭了Bug?

有时你可以做一个简单实现,不牺牲任何可测试性;太棒了!但是有时你必须找到一个平衡。对于某些代码,不添加单元测试是可以。 对“单元测试”过分关注可能会对代码库造成难以置信损害。...一旦测试开始做任何有用事情,例如验证它实际从数据库中返回正确行,单元测试纯粹主义者开始抱怨它并不是真正单元测试,你做错了。...请注意,代码并非完全没有经过测试,因为我们确实进行了集成测试。 重构版本要复杂得多。除了花了两周时间将一段工作代码重构成另一段工作代码(另一篇文章主题)之外,我并不相信它实际要好得多。...如果一个普通程序员因为有很多层抽象难以理解一些简单函数本质,那么一定是出现了问题。重构提供了一个工具用另一个测试用例来验证正确性(简单性)。简单性很难保证正确性,但单元测试也不是。...所以这些都是错误抽象:它们包装和混淆,不是分离关注并缩小范围。 关于开源项目 如果你有兴趣在开源项目中请求其他人来贡献,那么测试可以理解是一个非常重要问题。

46210

分类模型评价指标_简述常用模型评价指标

所以,Precision(猫)= 10/13 = 76.9% Recall 以猫为例,在总共18真猫中,我们模型认为里面只有10只是猫,剩下3只是狗,5都是猪。这5八成是橘猫,能理解。...所以,Recall(猫)= 10/18 = 55.6% Specificity 以猫为例,在总共48不是动物中,模型认为有45不是猫。...这里只是简单回顾一下: 在分类型模型中,以二分类为例,我们模型结果一般可以视为0/1问题,或者说positive/negative问题。模型产出物,不是positive,就是negative。...如果ROC曲线完全在横轴,代表这一,y=0,即TPR=0。模型没有把任何positive数据正确判断为positive,预测完全不准确。...所以如果ROC曲线完全与右上方45度倾角线重合,证明模型准确率是正好50%,错判几率是一半一半。 因此,我们绘制出来ROC曲线形状,是希望TPR大,FPR小。

72510

当我们谈论Unit Test时我们在谈论什么?

最小,小到无法再拆分,这个单元做了一件事。 可测试,这个单元应该有明确输入和输出并且在输入确定时,我们应该能够预测输出情况。 二....但是对我们没有考虑到情况-----告辞。。。 这里着重讨论一下后面两: 提供样例,有的童鞋习惯在函数上面写上一大段注释,有时候看业务代码搞得像在读JDK源码。...哪些地方需要Unit Test 正如前文所述,并不是所有地方都需要写UT,从某种意义讲,UT应该越少越好,前提是系统拆分够精确,关注测试够详细。...怎么做Unit Test 至于如何做UT,网上一搜一大把教程,这里就不赘述了,只是列几条个人总结值得注意: 多组数据(考虑周全)->正常业务测试,边界条件测试 不要误用Mock工具,理清需要被Mock...对象 整体覆盖率没有意义,但是关键业务代码覆盖率很重要 维时:每一个BugReport都应有一个对应UT UT并不是越多越好,而是对于核心代码、有意义错误,UT越详细越好 作者:鬼畜猪 链接

56420

RocketMQ,同一个topic下是否可以通过不同tag来进行订阅吗?

这里我们摘取其中消费者部分代码: @Service @RocketMQMessageListener(topic = MqTopicConstant.DEMO_TOPIC , consumerGroup...} } 在上面的代码中,重点是业务板块部分代码,如果在订阅关系中重新将业务板块内代码copy一份,然后修改对应Expression值(也就是tag值),那么基本是不会成功。...思路与第一种方案一样,阿里云这里只是创建了一个ConsumerBean,上面的自主搭建时采用了多个Consumer。...那是因为:集群模式消费,它会负载均衡分配到各个节点去消费,所以一半消息(不固定个数)跑到了Consumer1,结果Consumer1订阅是tag1,所以不会任何输出。...如果换成BROADCASTING,那后者会收到全部消息,不是一半,因为广播是广播全部Consumer。 如果还有其他相关问题,也可关注公众号“程序新视界”,相互沟通学习。

4.6K10

维体系之做好一个纽带(下)

4.做安全方案也是,VPN+堡垒机可以解决99%日常安全隐患,不是去从花费高、细节地方先去实现。 工作流程优化 上面说了,其它岗位很繁忙,很难有精力做其它事,这里除了系统还有流程。...如果支持不多,关注不到你(很常见,好多公司没运维主管,就CTO),那可以将计划书拆分几个小块,一改革,尽量和效果关联。...这里讲开发他们也不是傻子,devops人家都听过,随意你推动大家都会欢迎,觉得很好。 规矩 开发人员写代码时候,都会探讨一下怎么写,出一个方案,用什么技术。...这样对工作会曝光,将清晰透明,在多个维当中可以看出谁在划水和偷懒。当然也可以方便任务分配和记录,维干是一个很杂活,经常会出现做一半中断情况,就需要jira这种东西去记录。...这些东西最好用python去写一个动态脚本,不然会频繁于维护confluence,wiki将失去查看意义,每次查看还是去源头看(例如阿里云),只是去维护它。

42820

中国信通院云大所牛晓玲:XOps + SRE,如何赋能企业迈进高质量发展新格局?

从下可以看到: 1、基础设施层,面向网络、IT等,相应出现了 NetOps、ITOps 2、软件生命周期层 DevOps、DevSecOps、AIOps 3、在企业内部面向数据研发生命周期 DataOps...这里举两个案例,第一是某大型股份制银行数字化研发大盘,给 DevOps 平台提供了非常完备数据采集度量定义规范,帮助内部提供精细化研发效能管理。...低代码平台等,都嵌入在工具链里面才能实现真正业技融合。...智能维围绕质量、成本、效率、安全等众多场景,建立维能力相关要求。 第一是建立应对场景,将场景进行了深度梳理。...第二是建立系统工具标准,在支撑智能维能力过程中系统和工具应该具备什么核心能力,在系统和工具标准里面都有所输出。这部分涵盖了国内所有做智能研究机构和厂商,基本均在这个标准中有所输出

99540

单元测试最佳实践|如何避免常见陷阱?

为每个功能单元编写一个单元测试,不是代码单元。...只为代码覆盖率编写测试 跟踪测试覆盖率通常是一个好主意。如今,许多测试框架都支持这一,并且像codecov这样平台可以很容易地随着时间推移对其进行跟踪。...那么,为什么沉迷于它不是一个好想法呢? 代码覆盖率只是一种测量工具。100% 代码覆盖率并不意味着你已经覆盖了所有的边缘情况,它只是意味着所有的代码路径都被执行了。...我没有努力覆盖每一行代码,而是推荐 Martin Fowler 建议。将测试重点放在有风险代码。那是您自己编写代码不是可能会被重构框架。然而,知道什么是有风险很困难,因为它需要经验。...您应该将 [您测试工作] 集中在风险。— Martin Fowler,重构 特别是某个代码逻辑导致线上bug,或者其它同学发现问题,都可以编写成测试用例,防止此类错误再次出现。

86730

传统企业微服务落地大法(3)-离微服务更近一步第二阶段

当然不应该这样,例如两军打仗,当炊事班烟熏着战士了,是将中军大营搬出去,还是讲炊事班搬出去呢?当然是炊事班了。 另外一是,能够形成复用组件,往往不是核心业务逻辑。...接下来,应该新建工程,新启动一个进程,尽早注册到注册中心,开始提供服务,这个时候,新工程中代码逻辑可以先没有,只是转调用原来进程接口。 为什么要越早独立越好呢?哪怕还没实现逻辑先独立呢?...接下来就可以将老工程中逻辑逐渐迁移到新工程,由于代码迁移不能保证逻辑完全正确,因而需要持续集成,灰度发布,微服务框架能够在新老接口之间切换。...最终当新工程稳定运行,并且在调用监控中,已经没有对于老工程调用时候,就可以将老工程下线了。 3.3. 阶段二维模式 经过业务层服务化,也对维组造成了压力。 应用逐渐拆分,服务数量增多。...开发部门中间件组,主要研究如何正确使用这些PaaS,配置什么样参数,使用正确姿势等等,这个和业务相关。 ?

48530

相爱相杀维之殤:苏宁消费金融超大规模 IT 系统 DevOps 实践

这一块出了问题,我本身环境是好,我设置环境是好,你生产环境出了问题你自己过去查,不关我事儿,是你事儿,本质还是价值输出还不够完美,人与人对接,总归是有很多问题。...,不是靠系统来治理。...基于出发点,仅仅只提供了资源输出,我资源没有问题,理论讲我也不会背这些锅,那最后锅应该由谁来背呢?...基于一些考量更多是体现在整个平衡,它平衡了整个速度、成本、质量和风险,以及提升了整个创新能力,其实这个就回到了维需不需要跑得更快一。...其实有了相应方法论和技术加持,其实我们就能跑的快一。既然我们要做正确事,我们下一步干什么?我们要正确地做事,所以说我们得要有方法。在整个落地过程当中,我们要从具体到抽象。

58320

do{}while(0)执行一次无意义?你可能真的没理解

然而,在很多C程序中,你可能会看到不是那么直接比较特殊一宏定义,比如do{}while(0)。 do{conditional code}while(condition)结构 流程图如下: ?...初见do{...}while(0) linux内核和其他一些开源代码中,经常会遇到这样代码: do{ ... }while(0) 这样代码一看就不是一个循环,do..while表面上在这里意义都没有...总结了7种妙处 实际,do{...}while(0)作用可不止一,下面我列举了一些。 有时候只是为了代码分块,比仅仅使用{}更直观些。...当你执行一段代码一半,想跳过剩下一半时候,如果你正处于do{...}while(0)循环中,则能用break达到这个目的。 do { 执行....可以是兼容各种编译器 int a; a = 10; int b; b = 20; 这种代码支持c89编译器是编译不过去,比如ADS 2.0。

2.2K21

一个面试题:截取字符串函数,输入为一个字符串和字节数,输出为按字节截取字符串

但 是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出 为“我ABC”不是“我ABC+汉半个”。...,输出为按字节截取字符串。...但 * 是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应 * 该输出为“我ABC”不是“我ABC+汉半个”. */ public class Test10...这样理解:它什么都不是所以为负数 //英文字母占一个字节,所以读取不会出问题,所以可以正确读取,这里理解:可以正确读取就为正数 //此处我们还要判断,到底是汉字一半还是后一半呢...就读到上一个字节就行了,所以就(len-1),对吧?

1.3K90

“扯淡DevOps,我们开发者根本不想做维!”

“我确实更喜欢回到只需要掌握特定编程技巧时候,不是现在这样成为一个万事通,因为多个责任分散了我太多精力。这两者都是全职工作,而我只能各自投入一半精力。”...“转型目的不是要给开发人员增加负担,而是在正确时间为开发者提供正确信息。”...Harness 公司 Durkin 表示,“开发者最需要不是额外配置任务,而是在正确时间能从系统中快速获取必要信息,这样就能支持维、安全和基础设施团队正常工作。...这才是重点,不是让他们全面负责生产。 在云计算领域,Kubernetes 容器编排正在成为开发与维之间边界。...关注这条边界,就能让开发者集中于自己代码,并让维人员确保底层基础设施和管理运行与优化。“但这种独立是以沟通和理解作为基础,并不是以往那种孤岛式各自为战。”

33230

代码上线方案走过历史

2、合理化上线方案 开发人员(rd)需在个人电脑搭建LAMP环境测试开发好网站代码并且在办公室或 IDC机房测试环境测试通过,最好有专职测试人员(ts)。...尽量由维人员管理上线,对于代码功能性,开发人员更在意,而对于代码性能优化和上线后服务器稳定,维更在意服务器稳定,因此,如果网站宕机问题归维管,就要让维上线,这样更规范科学。...开发人员通知或和测试人员一起测试程序,没有问题后,由配置管理员打上新tag标记。这里要注意,不同环境配置文件是随代码同时发布。...5 、Java程序代码上线具体方案 对于java上线方法:较大公司需要分组平滑上线(如从负载均衡器摘掉一半服务器),发布代码后,重启服务器测试,没问题后,挂上上好线一半,再下另外一半。...频繁提交代码会促使开发人员创建模块化,低复杂性代码。 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成难度变大,甚至难以集成。

77750
领券