我正在尝试使用scipy中的l\u bfgs约束优化例程来优化函数。 但是优化例程将值传递给函数,这些值不在边界内。在
我的完整代码看起来像
def humpy(aParams):
aParams = numpy.asarray(aParams)
print aParams
####
# connect to some other software for simulation
# data[1] & data[2] are read
##### objective function
val = sum(0.5*(data[1] - data[2])**2)
print val
return val
####
def approx_fprime():
####
Initial = numpy.asarray([10.0, 15.0, 50.0, 10.0])
interval = [(5.0, 60000.0),(10.0, 50000.0),(26.0, 100000.0),(8.0, 50000.0)]
opt = optimize.fmin_l_bfgs(humpy,Initial,fprime=approx_fprime, bounds=interval ,pgtol=1.0000000000001e-05,iprint=1, maxfun=50000)
print 'optimized parameters',opt[0]
print 'Optimized function value', opt[1]
####### the end ####
基于初始值(初始值)和边界(区间) 选项=优化.fmin\u l\u bfgs()将向我的软件传递值以进行模拟,但传递的值应在“bounds”内。事实并非如此。请参阅下面在不同迭代中传递的值
^{pr2}$在这个迭代中-4.4139714被传递给我的第二个参数,但是它应该从(10.0,50000.0)开始变化,我不知道从哪里来的-4.4139714?在
我应该在哪里更改代码?所以它传递的值应该是
您试图对floats执行位异或(^运算符),这毫无意义,因此我认为您的代码实际上不是您遇到问题的代码。但是,我把^改成了**假设这是你的意思,没有问题。代码对我来说工作得很好。参数严格按照定义进行限制。在
Python2.5版。在
你是在问我做这样的事吗?在
相关问题 更多 >
编程相关推荐