三个女人一台戏 ---mappedBy

mappedBy理解为,拥有方能够自动维护跟被拥有方的关系,如果从被拥有方,通过手工强行来维护拥有方的关系;

夫妻双向关联
在Man里面定义的注解:

@OneToOne(cascade = CascadeTye.ALL)  
public Woman getWoman(){  
   return woman;  
} 

在Woman里面定义的注解:

@OneToOne(cascade = CascadeType.ALL,mappedBy = "woman")  
public Man getMan(){  
   return man;  
}  

mappedBy它表示当前所在表和Man的关系是定义在Man里面的woman这个成员上面的,他表示此表是一对一关系中的从表,也就是说关系是在Man表中维护的。Man表是关系的维护者。
也可以让主导权在Woman上面,也就是让他产生一个指向Man的外键,但是最好让Man来维护整个关系。

Partial-Mapped Crossover(PMX)是一种常用于遗传算法中的交叉操作。其目的是在两个父代个体中交换一部分基因片段,以产生新的个体作为下一代的可能解。 PMX首先选择两个随机位置作为交叉点,然后将这两个位置之间的基因片段进行交换。交换后,每个子代个体中仍然可能存在相同的基因,但不同基因的顺序被改变了。接下来,我们需要对子代个体进行处理,以确保没有重复的基因。 具体来说,我们从交叉点之后的基因片段开始,将其中的重复基因对应到另一个父代个体中的相同位置,并将其相映射的基因也进行相应的交换。这一过程同样适用于交叉点之前的基因片段。这样,我们就得到了一个没有重复基因的子代个体。 举个例子来说,假设有两个父代个体分别为A = [1, 2, 3, 4, 5, 6]和B=[4, 2, 6, 1, 3, 5],选择的交叉点为2和4。在交换了交叉点2和4之间的基因片段之后,得到的子代个体为C=[1, 2, 6, 4, 3, 5]。我们需要处理C中的重复基因。 首先,我们找到C中重复的基因2和6,对应到A中的位置为2和3,于是交换A中2和3位置的基因,得到A’=[1, 6, 3, 4, 5, 2]。然后,我们找到C中重复的基因4和3,对应到B中的位置为4和3,于是交换B中4和3位置的基因,得到B’=[4, 2, 5, 1, 6, 3]。最终,我们得到了没有重复基因的子代个体C’=[1, 6, 5, 4, 3, 2]作为下一代的可能解。 通过进行PMX交叉操作可以保留父代个体中的一些有用特征,并产生新的个体,增加了遗传算法搜索解空间的多样性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值