一种基于改进匈牙利算法的家系组成方法与流程

文档序号:36864517发布日期:2024-02-02 20:46阅读:65来源:国知局
一种基于改进匈牙利算法的家系组成方法与流程

本发明涉及家禽育种,具体提供一种基于改进匈牙利算法的家系组成方法。


背景技术:

1、在家禽育种中,特别是在构建母鸡家系的过程中,选择最佳的公母鸡组配是一个重要而复杂的问题。家禽的专门化品系一般在组配前会经历选种阶段,根据各种性状,如生长速度、抗病能力、体型等选择出一部分优秀的个体,然后从这些优秀的个体中精确地挑选出最佳的公母鸡配对,以最大程度地提高后代的生产性能和其他优良性状,如果组配不当,可能导致组配的公鸡和母鸡之间存在较近的亲缘关系,从而造成后代近交水平的提升,降低后裔的生产性能,也会浪费这些优秀亲本个体的遗传潜力,导致母鸡家系构建的效果并不理想。这样的结果不仅会导致育种效果不佳,而且会造成资源浪费,增加生产成本。

2、现有技术中,家禽育种中的公鸡与母鸡组配选择有两种常见的方法:人工手动计算分析和程序循环遍历。

3、人工手动计算分析是由专业的育种者收集并分析公鸡与母鸡的各种信息,包括它们的性状、遗传背景、生长情况等。然后,根据这些信息和育种者的专业知识或经验,通过计算并分析,得出哪只公鸡与哪只母鸡配种最有可能产生优质的后代。但这种方法有一些不足之处,首先,手动的计算和分析过程既耗时又费力,且由于人为因素可能引入错误。其次,这种方法主要依赖于育种者的经验,并未系统地考虑所有可能的遗传因素,可能导致选择的结果不是最优的。因此,人工手动计算分析无法应对大规模的母鸡家系育种需求。

4、程序循环遍历是通过计算机程序来实现公鸡和母鸡的组配。这种方法主要是通过遍历所有可能的组配组合,然后选择最优的组合。然而,这种方法也存在缺点,程序采用循环遍历的方式实现,暴力枚举所有可能的组配情况,然后遍历所有组配情况,找到最优组配情况,这样的方式虽然逻辑简单,但是效率很低,当遇到大规模育种需求时,个体数量的增加会导致计算时间呈指数级增加,无法在育种实践中组配的窗口期内有效完成母鸡家系组成工作。

5、综上所述,在现有的家禽母鸡家系组成技术中,无论是人工计算分析的方法,还是计算机程序遍历的方法,都存在着明显的缺陷。


技术实现思路

1、为了克服上述缺陷,提出了本发明,以提供解决或至少部分地解决现有技术对于家禽母鸡家系组配方法具有逻辑简单、效率低的技术问题。

2、本发明提出一种基于改进匈牙利算法的家系组成方法,包括步骤:

3、s1:定义代表雄性活体集合的数组lista、代表雌性活体集合的数组listb,以及lista中的每个雄性活体与listb中的每个雌性活体之间的亲缘关系值relationab;

4、s2:初始化数组lista、数组listb以及亲缘关系值relationab;

5、s3:对lista中每个雄性活体,分别构建used列表,并将所述used列表中的值初始化为false,每个所述used列表中的值分别代表listb中每个雌性活体在当前雄性活体的组配中是否已经被考虑;

6、s4:从lista中的第一个雄性活体开始,在listb中遍历雌性活体进行第一次组配;

7、s5:若第一次组配成功,则对下一个雄性活体进行第一次组配,若第一次组配不成功,则进行第二次组配;

8、s6:重复s4-s5,直到lista中的所有雄性活体组配成功;

9、s7:根据组配结果,构建组配列表matchpairs。

10、进一步,所述步骤s1包括:

11、s11:为每个活体分别定义一组实例,所述实例包括活体编号id、匹配对象matched和权重标记数值value;

12、s12:根据活体的性别,将所有活体的实例分别分配到数组lista和数组listb;

13、s13:定义lista中的每个雄性活体与listb中的每个雌性活体之间的亲缘关系值relationab。

14、进一步,所述步骤s2包括:

15、根据活体的性能在数组中按从高到低的顺序排序,实例数量较少的数组从该数组第一个实例开始依次补充到该数组末尾,直到两个数组内的实例数量相同;

16、按照顺序分别为lista和listb中的每个实例从0开始依次配置活体编号id;

17、将每个实例的匹配对象matched设为-1;

18、计算lista中每个雄性活体往上第n代亲本与listb中每个雌性活体往上第n代亲本之间拥有不同亲本概率,得到所述亲缘关系值relationab;

19、对每个雄性活体,寻找与其具有最大亲缘关系值maxrelationab的雌性活体,将所述雄性活体的权重标记数值value设为所述最大亲缘关系值maxrelationab,将所述雌性活体的权重标记数值value设为0。

20、进一步,针对某个编号id为i的雄性活体,其第一次组配包括步骤:

21、s41:初始化j=0,其中,所述j表示当前组配中的雌性活体编号id;

22、s42:判断listb中实例的活体编号id是否包括所述j,若是,执行s43,若否,则当前雄性活体的第一次组配不成功;

23、s43:计算lista中编号id为i的雄性活体与listb中编号id为j的雌性活体的差距值gap=lista[i].value+listb[j].value-relationab[i][j],其中,i表示当前组配中的雄性活体编号id;

24、s44:判断所述差距值是否为0,若是,则更新listb中编号id为j的雌性活体的被考虑情况used[j]为ture,若否,则更新j=j+1后返回s42;

25、s45:判断是否能将listb中编号id为j的雌性活体组配给lista中编号id为i的雄性活体,若是,执行s46,若否,则更新j=j+1后返回s42;

26、s46:更新listb中编号id为j的雌性活体的匹配对象matched为i,当前雄性活体的第一次组配成功。

27、进一步,所述步骤s45包括:

28、s451:判断listb中编号id为j的雌性活体的匹配对象matched是否为-1,若是,执行s46,若否,执行s452;

29、s452:对listb中编号id为j的雌性活体的匹配对象matched重新进行第一次组配,尝试为其寻找编号为j的雌性活体之外的另一个使其二者之间的gap值能够为0的雌性活体;

30、s453:判断s452是否组配成功,若是,执行s46,若否,则更新j=j+1后返回s42。

31、进一步,所述第二次组配包括步骤:

32、s51:计算当前组配不成功的雄性活体与listb中used值为false的所有雌性活体的差距值gap;

33、s52:得到最小的差距值gapmin;

34、s53:更新lista中参与当前雄性活体第一次组配的所有雄性活体的权重标记数值value新=value旧-gapmin;

35、s54:更新listb中used值为true的雌性活体的权重标记数值value新=value旧+gapmin;

36、s55:对当前组配不成功的雄性活体按照步骤s41-步骤s47的方式再次组配;

37、s56:重复所述s51-s55,直到组配成功。

38、本发明工作原理和有益效果为:

39、在实施本发明的技术方案中,通过定义雄性活体和雌性活体之间的亲缘关系值,利用亲缘关系值定义权重标记数值和差距值,变量初始化过程,将双方亲本的重合率作为组配的权重,使得所有选种的优秀个体都有机会参与到配对中,并且可以最终实现所有配对组合的亲缘关系总体最远,从而最大化利用优良性状,并防止种群规模缩小,保证各母鸡家系的遗传特性和稳定性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1