1 测试参数变换情况
2.1 精度上限:
无论怎么调整initial step size和Delta,都类似,精度波动,精度存在上限
2.1.1 Initial step size=10, 步长只上升不下降,精度波动;Initial step size=5,步长下降,精度固定。
Initial step size=5在某个阶段步长下降,然后精度不再提高2.1.2 Delta
2.2 FFT
在现有的基础上调高一个量级,仍然收敛。
2.3 overlap
overlap的波动对收敛没有影响,但是如果一个demand分到的流量过小,那就有问题了。收敛速度会大幅放慢。系统参数不能让某部分分到的流量过小。那就要对CNL,cost的分配机制,参数影响都有一个很好的理解。
对于membership来说,中间值较好。Demand分的流量较均匀。
step size adjust trajectory
2.4CNL参数
MuE 0.1-0.99 在0.1时,一种mode分的流量为0,全局不收敛。在0.99时,收敛性较好。不知道MuE表示什么意思?
MuE对split的结果是否有这么大的影响?我用CNL.excel来试试。
与 Projection的计算结果一致
下面看看CNL公式,MuE的影响。
MuE越小,exp(x)就越小,membership也越小,整体的mode share不清楚
MuE=0.1,不收敛,迭代5万余次,其中一个mode分到的流量为0
其余MuE在0.2~0.99都能计算出准确结果 MuE越小,流量差距越明显。
FW对比,数据源,读入数据处,头文件,shortest path。都要改数据。在MuE=0.2~0.5时试算,一样的结果。MuE=0.1时,FW可以计算出结果,而且结果正确。但是,某种mode得到的流量的确接近0了。
2.4.1 Projection不能处理mode demand=0的情况,而FW可以。
2.4.2 mode demand=0本身是要避免的。MuE越大越好。Theta越小越好。
Paste_Image.png2.3 Link cost fun
给不同的BPR可以,但是肯定差距不要过大。PPT一定要经过调解。否则分到的流量不合理。
总的来说,CNL对于输入的ptt的敏感度很高。对于参数设置非常敏感。
2.4 Demand
2 如何防止某方式分到的流量过小?
2.1 法一
if (nm[nestmode_i].DemandP <= 1e-50){
nm[nestmode_i].DemandP = 1e-50;
}
就相当于demand的约束不是大于等于0而是大于等于1e-50。
尝试结果不行。可能CNL就是要接近0了。
2.2 法二
只要=0,就判定不行。出循环。
for (nestmode_i = 0; nestmode_i < NoNMs; nestmode_i++) {
if (nm[nestmode_i].DemandP == 0) {
NMNonZeroIndicator = 1;
}
}
if (NMNonZeroIndicator == 0) {
S4FunValueNPth(l, p, nm, od);
S5Residual(p, nm, Alpha);
SetpSizeJudgeFlag = S6StepSizeJudge(p, nm, Alpha);
//printf("%d\t", SetpSizeJudgeFlag);
}
NMNonZeroIndicator = 0;
测试结果还是不行,那就只能在FW上先试好,再在Projection上跑。
2.3 现在FW上跑一个合理的结果,再在Projection上跑。
先在FW试好,再在Projection上跑。
可以跑起来。
在此基础上,确定CNL参数。
#define MuE 0.8 //Gumbel dispersion parameter
#define Theta 1 //Gumbel parameter of root level
先调整网络结构。
link,相关的head file
#define NoLs 5
#define NoNodes 4
shortest path,对rail and PNR的shortest path 没有影响。
得出结果,与CNL验证,CNL结果正确。
下面,改变Free flow time 和 BPR function,然后缓慢加Demand。
BPR要在Link cost和line search里面一起改。确实收敛。
下面增加free flow time。也能收敛。
下面增加Demand,直接在OD一个地方改就好。 Demand 从200渐次增加至600,没有问题。
得到了一个可行配置。
od link initial solution
还是不行,就是demand/flow升级的时候,出现demand=0,在其后计算cost存在困难。
在投影的时候,注意使其不为0.然后终于收敛了。还是在投影技术(法一)上控制的。法二也用了,但不知有没有起作用。
网友评论