我想估计对新产品的需求。客户是代理商。每种产品都有3个变量,需要根据购买来优化。为了找到最大化销售的最佳变量,我使用了局部优化算法,即梯度下降。它的工作如下:
1.定义重量,大小和价格的初始价值。2.搜索过程开始:dgradient是目标函数梯度的规范。DX计算了变量和新变量之间的差异。
while [dgradient > 0.00001 and numiter < 1000 and dxw > 0.00001 and dxs > 0.00001 and dxp > 0.00001]
set weightnw weight - stepsize * (the gradient)
set sizenw size - stepsize * (the gradient)
setpricenw price - stepsize * (the gradient)
搜索过程在附近产生新变量,但我必须确保它们在范围内。因此,我在循环时定义了这个,以确保它们处于范围:
while [not(((weightnw <= 400) and (weightnw >= 100)) and ((sizenw >= 5) and sizenw <= 20)) and ((pricenw >= 20) and (pricenw <=90)))]
set stepsize stepsize - 0.0001
set weightnw weight - stepsize * (the gradient)
set sizenw size - stepsize * (the gradient)
setpricenw price - stepsize * (the gradient)
然后计算目标函数,并比较新变量的目标函数的值。
该过程有意义吗?
谢谢
numanal
扩展包括几种优化多变量问题的方法,包括单纯形方法和更深奥的方法,例如CMAES和BOBYQA。它们确实允许设定界限。Netlogo 6.0还没有准备好(有5.3的工作版本(,但是如果您认为它可能有用,请让我知道,我可以为您运送Beta。
charles