如何解决在目标函数中使用foor循环使用scipy.optimize的问题
我正在尝试最小化以下目标函数: the problem is finding qs that minimizes Cg
因此,我在python中创建了一个函数,然后使用Scipy Optimiz.minimize将其最小化
我认为在最后一步“返回”中同时使用两个for循环会遇到问题
def objective_function(qs):
tasa_falla=10/12
costo_alm=(0.3/12)*1000
costo_falla=3200
lead_time=1
qinf=10
def resultados():
for qs in range(0,10):
resultados=[]
for i in range(0,qs+1):
resultados.append((qs-i)*(math.exp(-tasa_falla)*(((tasa_falla*lead_time)**i)/(math.factorial(i)))))
i=i+1
return resultados
def resultados_2():
for qs in range(0,10):
resultados_2=[]
for i in range(qs+1,qinf+1):
resultados_2.append((i-qs)*(math.exp(-tasa_falla)*(((tasa_falla*lead_time)**i)/(math.factorial(i)))))
i=i+1
return resultados_2
return (costo_alm*sum(resultados())+costo_falla*sum(resultados_2()))
我认为定义目标函数时存在问题,因为它不是显式基于qs的(这是我应该最小化的),因为我获得了以下结果: Result
但是我知道这不是最小值,我使用以下代码执行了相同的操作:
tasa_falla=10/12
costo_alm=(0.3/12)*1000
costo_falla=3200
lead_time=1
qi=0
qinf=10
general=[]
for qs in range(0,10):
resultados=[]
for i in range(0,qs+1):
resultados.append((qs-i)*(math.exp(-tasa_falla)*(((tasa_falla*lead_time)**i)/(math.factorial(i)))))
i=i+1
resultados_2=[]
for i in range(qs+1,qinf+1):
resultados_2.append((i-qs)*(math.exp(-tasa_falla)*(((tasa_falla*lead_time)**i)/(math.factorial(i)))))
i=i+1
general.append(costo_alm*sum(resultados))
general.append(costo_falla*sum(resultados_2))
然后:
largo=list(range(0,len(general)+1))
pares=[]
for i in largo:
if i % 2 == 0:
pares.append(i)
print(pares)
pares.pop()
costo_global=[]
for i in pares:
costo_global.append(general[i]+general[i+1])
最后:
df_costo_global = pd.DataFrame({'qs':list(range(10)),'Costo global':costo_global})
我得到: Table with results
所以我知道最小化Objective函数的qs值为4
感谢您的帮助
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。