c语言利用遗传算法实现tsp问题,【分享】遗传算法解决TSP问题的源程序

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

std::back_inserter(Child2));

/**********************************************************************

cout <

for (tempIter=Child1.begin(); tempIter!=Child1.end(); ++tempIter)

cout <

cout <

cout <

for (tempIter=Child2.begin(); tempIter!=Child2.end(); ++tempIter)

cout <

cout <

**********************************************************************/

std::rotate (fatherBk.begin(), fatherBk.begin()+HighBoundary+1, fatherBk.end());

std::rotate (motherBk.begin(), motherBk.begin()+HighBoundary+1, motherBk.end());

/**********************************************************************

cout <

copy (fatherBk.begin(),fatherBk.end(), std::ostream_iterator(cout, " "));

cout <

cout <

copy (motherBk.begin(), motherBk.end(), std::ostream_iterator(cout, " "));

cout <

**********************************************************************/

for (V_iter = m_GenerationGene[iFather].begin()+LowBoundary;

V_iter != m_GenerationGene[iFather].begin()+HighBoundary+1; ++V_iter)

{

motherBk.erase(std::remove(motherBk.begin(), motherBk.end(), *V_iter),

motherBk.end());

}

for (V_iter = m_GenerationGene[iMother].begin()+LowBoundary;

V_iter != m_GenerationGene[iMother].begin()+HighBoundary+1; ++V_iter)

{

fatherBk.erase(std::remove(fatherBk.begin(), fatherBk.end(), *V_iter),

fatherBk.end());

}

/**********************************************************************

cout <

copy (fatherBk.begin(),fatherBk.end(), std::ostream_iterator(cout, " "));

cout <

cout <

copy (motherBk.begin(), motherBk.end(), std::ostream_iterator(cout, " "));

cout <

**********************************************************************/

iDistance = _CITY_AMOUNT -HighBoundary - 1;

std::copy(motherBk.begin(), motherBk.begin()+iDistance, std::back_inserter(Child1));

std::copy(motherBk.begin()+iDistance, motherBk.end(), std::inserter(Child1,Child1.begin()));

std::copy(fatherBk.begin(), fatherBk.begin()+iDistance, std::back_inserter(Child2));

std::copy(fatherBk.begin()+iDistance, fatherBk.end(), std::inserter(Child2,Child2.begin()));

/**********************************************************************

cout <

copy (Child1.begin(), Child1.end(), std::ostream_iterator(cout, " "));

cout <

cout <

copy (Child2.begin(), Child2.end(), std::ostream_iterator(cout, " "));

cout <

**********************************************************************/

/*iChild1Probability = fnEvalOne(Child1);

//iChild2Probability = fnEvalOne(Child2);

P_iter = std::max_element(m_vProbability.begin(), m_vProbability.end());

if (iChild1Probability 

{

m_GenerationGene[P_iter-m_vProbability.begin()] = Child1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值