04 Monte Carlo方法求解非线性规划(02)


0.说明

  • 本文是鸡年新年计划的内容之一:每周学习一个数学模型,写一篇总结,记录自己学到的东西和遇到的问题。
  • 这些文章并不是相关模型的全面介绍,也不是从最基础的开始,所以不一定适合数学模型的beginner,但都是些很实际的技术,希望能帮到你。
  • 本文的重点是,分析一个具体的Monte Carlo方法得到的非线性规划的最优解、最优值和运行时间的特点。

1.向大家求助的问题

关于下面的这些问题,我迫切的需要你的帮助,哪怕是一些网址和信息,所以,感谢你给我发邮件[email protected]或直接加我QQ好友:117829132(请一定注明“帮助你”)或直接在评论中留言。

1.Monte Carlo方法求解非线性规划,取多少个点是至关重要的,欢迎你告诉我更多实用的、确定点数的方法。

2.一个线性规划模型记为M,限制其中某些(或全部)决策变量只能取整数后得到一个整数线性规划,记为M’。即使M有最优解,M’也有可能甚至没有可行解,为什么?

本文所述的程序和题目可以见03 Monte Carlo方法求解非线性规划(01)

1. 每个单次的运行时间分析

全部3000个单次的运行时间如下图:其中横轴是每个单次的序号,纵轴是每个单次的运行时间。
每个单次的运行时间
上图显示出了几个现象:
1.在全部3000个单次中,大部分单次的运行时间都是12.3秒左右,但前200次的运行时间差异较大。

原因未知,但猜测的原因可能是与MATLAB的随机数生成算法有关,或者,与程序中每个单次开始前初始化随机数种子rand( ‘state’, sum(clock));有关。

如果是因为MATLAB随机数生成算法的原因,那么,在以后的仿真当中,如果要使用单次运行时间估计全部的运行时间,那么应该先运行几个单次,然后取平均值。03 Monte Carlo方法求解非线性规划(01)的例子就是使用了一个单次的时间乘以3000进行估计的,估计的时间比实际用时多了5%左右(共多了30多分钟)。

2.每隔800次左右就会出现一个明显的”坑“(如上图中三个黑色圆圈所示),运行时间明显下降,且两个坑之间的间隔非常规律,始终是800次左右。

原因同样未知,但同样猜测,原因可能是与MATLAB的随机数生成算法有关,或者,与程序中每个单次开始前初始化随机数种子rand( ‘state’, sum(clock));有关。

猜你喜欢

转载自blog.csdn.net/cgch_cn/article/details/57406244
今日推荐