多目标遗传算法 ------ NSGA-II (部分源码解析)父、子种群合并 merge.c
源码 解析 部分 合并 目标 II ------ Merge
2023-09-11 14:19:20 时间
1 /* Routine for mergeing two populations */ 2 3 # include <stdio.h> 4 # include <stdlib.h> 5 # include <math.h> 6 7 # include "global.h" 8 # include "rand.h" 9 10 /* Routine to merge two populations into one */ 11 void merge(population *pop1, population *pop2, population *pop3) 12 { 13 int i, k; 14 for (i=0; i<popsize; i++) 15 { 16 copy_ind (&(pop1->ind[i]), &(pop3->ind[i])); 17 } 18 for (i=0, k=popsize; i<popsize; i++, k++) 19 { 20 copy_ind (&(pop2->ind[i]), &(pop3->ind[k])); 21 } 22 return; 23 } 24 25 /* Routine to copy an individual 'ind1' into another individual 'ind2' */ 26 void copy_ind (individual *ind1, individual *ind2) 27 { 28 int i, j; 29 ind2->rank = ind1->rank; 30 ind2->constr_violation = ind1->constr_violation; 31 ind2->crowd_dist = ind1->crowd_dist; 32 if (nreal!=0) 33 { 34 for (i=0; i<nreal; i++) 35 { 36 ind2->xreal[i] = ind1->xreal[i]; 37 } 38 } 39 if (nbin!=0) 40 { 41 for (i=0; i<nbin; i++) 42 { 43 ind2->xbin[i] = ind1->xbin[i]; 44 for (j=0; j<nbits[i]; j++) 45 { 46 ind2->gene[i][j] = ind1->gene[i][j]; 47 } 48 } 49 } 50 for (i=0; i<nobj; i++) 51 { 52 ind2->obj[i] = ind1->obj[i]; 53 } 54 if (ncon!=0) 55 { 56 for (i=0; i<ncon; i++) 57 { 58 ind2->constr[i] = ind1->constr[i]; 59 } 60 } 61 return; 62 }
copy_ind 具体进行两个个体 内容拷贝的函数。
29 ind2->rank = ind1->rank; 30 ind2->constr_violation = ind1->constr_violation; 31 ind2->crowd_dist = ind1->crowd_dist;
复制个体的 支配层 排序值。
复制个体的 限制条件 的超出值, 大于等于0未超出, 小于0为超出限制。
复制个体的 拥挤距离 。
判断个体的编码, 把个体的具体编码值 复制。
复制个体的 各个 目标函数的数值。
复制个体的 各个限制条件的 数值, 所有限制条件的数值之和等于 constr_violation 。
相关文章
- NVDLA软件架构和源码解析 第一章—内核驱动
- dojo/io-query源码解析
- Java集合之LinkedList源码解析
- 【转载】retrofit 2 源码解析
- Django源码分析之执行入口
- FIS源码解析-整体架构
- Spark修炼之道(高级篇)——Spark源码阅读:第五节 Stage提交
- Apache Spark源码走读(九)如何进行代码跟读&使用Intellij idea调试Spark源码
- 【转载】TabLayout 源码解析
- Spring MVC注解Controller源码流程解析--HandlerAdapter执行流程--上
- k8s源码Client-go中Reflector解析
- phantomjs 下拉滚动条获取网页的全部源码
- 毕业设计 Spring Boot的在线就医咨询管理系统(含源码+论文)
- Django 之 admin组件使用&源码解析
- linux内核radeon gpu源码解析4 —— drm_get_pci_dev函数详解1
- linux内核radeon gpu源码解析1 —— 什么是radeon
- nginx源码包制作自定义rpm包(开启ipv6或rtmp)——筑梦之路
- Laravel Providers——服务提供者的注册与启动源码解析
- Volley源码解析(一)
- (01)ORB-SLAM2源码无死角解析-(44) EPnP 源代码分析(4)→PnPsolver::qr_solve():QR分解
- (02)Cartographer源码无死角解析-(49) 2D点云扫描匹配→相关性暴力匹配1:SearchParameters
- (02)Cartographer源码无死角解析-(27) 数据订阅、变换、排序、转发→总体复盘
- 风格迁移2-07:MUNIT(多模态无监督)-源码无死角解析(3)-loss计算
- DynaSLAM-3 DynaSLAM中Mask R-CNN部分源码解析(Ⅱ)
- DynaSLAM-2 DynaSLAM中Mask R-CNN部分源码解析(Ⅰ)
- 【Nginx 源码学习】内存池 及 优秀案例赏析:Nginx内存池设计
- AppArmor零知识学习九、源码构建(6)
- CentOS 7 aarch64 源码制作openssh 9.3p1修复漏洞——筑梦之路
- Android源码kernel编译