24小时热门版块排行榜    

查看: 2848  |  回复: 24
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

chaogumath

铜虫 (小有名气)


[交流] 大规模优化数值计算,梯度的计算方式讨论

各位,
    最近在做非线性规划的大规模数值计算。用的是向前差分近似计算梯度:
g=[f(xi+h)-f(xi)]/h,用for i=1:n 进行循环计算。但是大家看到,如果变量有500个的话,就要计算500次f(xi+h),这个计算量太大了。例如:f(xi+h)计算1次需要0.001秒,那么,计算梯度g就需要5秒。这已经占了整个计算时间的70%。咋办?请教各位同仁。
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaogumath(金币+2):谢谢参与
如果是用matlab,把for循环去掉估计能省下不少时间。否则的话,很难。优化问题中梯度、Hessian之类的信息一向都是难点。在一些特殊问题上,人们会有特别的方法来对待,不过通行的技巧据我所知是不存在的。通过算法上的改进来控制总体的计算量,这样的可能性当然存在,可以选取合适的全局算法,比如某些单调问题的免梯度算法,即便是计算梯度,也许也可以引入其他技巧,但是这个对于问题本身的依赖很强。建议多看看同类问题的文献,或许能有收获。
5楼2011-08-30 20:40:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaogumath(金币+2):谢谢参与
引用回帖:
6楼: Originally posted by chaogumath at 2011-09-03 17:28:15:
这个for循环确实厉害。使我想到一句话,中国人民的事情,就算再小,乘以13亿就是大事了。呵呵。谢谢各位指点。

关于Matlab的循环,多说两句吧。因为Matlab是执行脚本的,而不是像C++之类的编译后执行,循环的本质是每次都重新读取代码执行,这个效率是极其低下的,所以尽量避免使用循环语句是Matlab编程的一条基本准则。而Matlab也提供很多内建的程序使得很多情况下剔除循环语句成为可能。
10楼2011-09-04 03:31:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaogumath(金币+2):谢谢参与
引用回帖:
12楼: Originally posted by chaogumath at 2011-09-04 15:40:54:
fortran语言是编译后执行吗?应该比matlab好?
我现在用Octave,他的循环也是跟matlab一样的吧?时间超长。

Fortran我没有用过,但是因为是编译后执行,所以效率更高应该是没有问题的。Octave算是Matlab的效仿者吧,而且逐渐流行也是因为开源和与Matlab兼容比较好,两者应该是差不多的。
13楼2011-09-05 15:46:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
19楼: Originally posted by daicong at 2011-12-08 21:59:19:
看到高手了,你能否指点一下下面这个问题呢?
我就开门见山的说问题了:举一个例子

min   z=14.3-6*x-21*y
s.t.   x+y-c=0.99
x+y+c=1.41
x+2y-c=1.57
x+2y+c=2.03
x+3y-c=1.9
x+3y+c=2.3
c>=0

...

线性规划的解法比如单纯形法或许能给出解,不过如果是给出范围的话,恐怕需要去看看运筹学的书了,印象当中可以画割线图求解,毕竟只有二维。最大的问题在于,这里的c到底是常量还是变量。如果是常量,就有矛盾的方程了,充其量能给个某种意义下的最小二乘解。如果是变量,那么这个问题的维度就提高了。
20楼2011-12-09 21:40:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小木虫(金币+0.5):给个红包,谢谢回帖
引用回帖:
21楼: Originally posted by daicong at 2011-12-09 20:36:18:
因为是范围,所以你的推荐是使用“画个线图求解”是吗?
c其实本来不存在的,因为原来的约束条件是大于等于和小于等于,所以为了转换成标准的形式,加入了c,即c是大于等于0的,是一个范围。

c是松弛变量的话,运筹学的教材中应该有对应的例子了,拿线性规划的方法姐就是了。手头没有运筹的书,你可以翻一下看。
22楼2011-12-10 07:21:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chaogumath 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见