一、问题简化
l: 城市数
:从城市i到城市j的运输成本
:0-1变量,0代表路线中没有i->j,1代表有
: 从i->j花费时间
: 到达j的时间
: 规定允许到达j的最早时间
:规定允许离开j的最晚时间
: 早到,等待时间惩罚值
: 晚到,推迟时间惩罚值
目标函数:
注: 中第一部分:不考虑约束的成本;第二部分:早到的惩罚项;第三部分:晚到惩罚项
二、算法介绍
1. Memetic算法
与遗传算法类似,但在交叉和变异步骤增加了局部搜索。加速了迭代速度,每次求出较优解,优化种群结构,可以避免早熟现象,但有可能陷入局部最优。可以通过调整变异操作进行优化。
2. 编码方式
采取排列编码,如{3,1,4,5,2,(3)}代表5个城市的经历顺序。
3. 适应度函数设计
目标函数 要取的是最小值。那么我们的适应度函数可以设计为:
或
用第一种设计时maxvalue不方便设置,因为根据不同单位有可能 本身就有很大的值出现;推荐使用第二种设计,因为实际的TSP问题中权值都是正值,所以
都是正值,此时c可以随意取。
4. 交叉变异策略
由于顺序交叉可以有效得保留父代一部分序列并且融合不同序列得有序结构,推荐使用顺序交叉法。
变异操作:以概率 任取两个节点进行交换。
5. 局部搜索策略
Step1: 设置参数P,生成随机数p=random(0,1)
Step2: 若p < P , 使用贪婪法(可以使用贪婪倒位算子)进行局部搜索优化;否则,使用递归弧插入算子进行局部优化。
Step3:改变参数P来调节两种算子权重,回到第一步
注:贪婪倒位算子:如一个体I={ 6,5,3,7,2,4,1,9,8,(6)}
递归弧插入算子:同样假设个体为{6,5,3,7,2,4,1,9,8,(6)}
LambdaLR类:torch.optim.lr_scheduler作用是,可以自定义学习率学习曲线,官方代码如下:lass LambdaLR(_LRScheduler): """Sets the learning rate of each parameter group to the initial lr times a given function. When last_epoch=-1, sets initial lr as lr. Args: optim
using UnityEngine;using System.Collections.Generic;public class MapManager : MonoBehaviour { public GameObject[] OutWallArray; public GameObject[] FloorArray; public GameObject[] wallArray; pu
今天帮同事部署Monkey平台的测试环境,部署完成后执行分析日志的脚本时总是报错,后来发现是由于他的电脑上没有安装mysqldb。于是安装mysqldb,但是在build的过程中总是报错,报错信息如下: _mysql.c(34) : fatal error C1083: Cannot open include file: ‘config-win.h’: No such file or di
为什么80%的码农都做不了架构师?>>> ...
使用 Spring Boot 开发,对外开发接口供调用,传入参数中有中文,出现中文乱码,查了好多资料,总结解决方法如下:第一步,约定传参编码格式不管是使用httpclient,还是okhttp,都要设置传参的编码,为了统一,这里全部设置为utf-8第二步,修改application.properties...
Thumbnailator 是一个为Java界面更流畅的缩略图生成库。从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量。同时还支持根据一个目录批量生成缩略图。 http://code.google.com/p/thumbnailator/ 版本:thumbnailator-
弹幕效果第一种写法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .cont
故障现象:添加zabbix 客户端主机,关联模板,提示 “不允许环形模板链接”,无法更新主机,如下图所示:其他症状: zabbix控制台主机所在群组,本例为windows 监控模板属于templates组,无法展开。故障原因: templates os windows 模板自身关联了自己,取消关联,故障解决。...
#1.abs() 绝对值或复数的模abs(-1)>>> 1#2.all()接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回Falseall([1,2,3])>>> True#3.any()接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回Falseany([0,0])>>> False#4.ascii(...
前言咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+。偶尔也有人问,你是怎么打破35岁定律的?对于这个问题我从没正面回答过,直到今年年初。今年疫情期间,与同行好友的一席聊天,让我足足思考了两天:回想起来其实自己之前也走过不少弯路,但比起大多数同行,自己最大的幸运,是坚持走完3条路之后,最终找准了自己最适合的那一条。对职业规划有困惑的朋友,可以听我慢慢说来。工欲行其事,必先利其器1.B4AB4A是Andr
通过穿透样式来修改:focus的属性/deep/ :focus { outline: 0;}
2019独角兽企业重金招聘Python工程师标准>>> ...