Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python纸浆复制Excel';s解算器_Python_Pulp - Fatal编程技术网

Python纸浆复制Excel';s解算器

Python纸浆复制Excel';s解算器,python,pulp,Python,Pulp,当我尝试在目标表达式中使用math.log函数时,会弹出此错误。有人能帮我理解a如何添加我需要优化的公式吗 model_MPL+=samples*(math.log(beta_var)-beta_var*math.log(alfa_var))+suma 我试图复制Excel的解算器,以优化weibull分布的alpha和beta参数 data = np.array([509,660,386,753,811,613,848,725,315,872,487,512]) def func_aplic

当我尝试在目标表达式中使用math.log函数时,会弹出此错误。有人能帮我理解a如何添加我需要优化的公式吗

model_MPL+=samples*(math.log(beta_var)-beta_var*math.log(alfa_var))+suma

我试图复制Excel的解算器,以优化weibull分布的alpha和beta参数

data = np.array([509,660,386,753,811,613,848,725,315,872,487,512])

def func_aplicada(x):
    return (beta_last -1)*math.log(x)-(x/alfa)**beta_last

alfa = 688.916073521629
beta_last = 3.979166666666667

suma=0
samples=data.shape[0]
for i in range(0,samples):
    suma += func_aplicada(data[i])

print('Cantidad de muestras = ',samples, '/ sumaacum =',suma)

import pulp as pl

model_MPL = pl.LpProblem("MPL", pl.LpMaximize)

beta_var = pl.LpVariable("beta_var",beta_last*0.5 , beta_last*1.5)
alfa_var = pl.LpVariable("alfa_var", alfa*0.5, alfa*1.5)

model_MPL += alfa_var>=0.1
model_MPL += beta_var>=0.1

model_MPL += samples * (math.log(beta_var) - beta_var * math.log(alfa_var)) + suma 


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-52-08c6614fb718> in <module>
     22 model_MPL += beta_var>=0.1
     23 
---> 24 model_MPL += samples * (math.log(beta_var) - beta_var * math.log(alfa_var)) + suma

TypeError: must be real number, not LpVariable
data=np.array([509660386753811613848725315872487487512])
def func_aplicada(x):
返回(beta_last-1)*数学日志(x)-(x/alfa)**beta_last
阿尔法=688.916073521629
beta_last=3.9791667
suma=0
样本=数据。形状[0]
对于范围内的i(0,样本):
suma+=func_aplicada(数据[i])
打印('Cantidad de muestras=',样本,/sumaacum=',suma)
进口纸浆作为pl
模型_MPL=pl.LpProblem(“MPL”,pl.LpMaximize)
beta_var=pl.LpVariable(“beta_var”,beta_last*0.5,beta_last*1.5)
alfa_var=pl.LpVariable(“alfa_var”,alfa*0.5,alfa*1.5)
模型MPL+=阿尔法变量>=0.1
模型MPL+=贝塔值>=0.1
model_MPL+=samples*(math.log(beta_var)-beta_var*math.log(alfa_var))+suma
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
22型号MPL+=贝塔值>=0.1
23
--->24 model_MPL+=样本*(math.log(beta_var)-beta_var*math.log(alfa_var))+suma
TypeError:必须是实数,而不是LpVariable

由于错误指示
alpha\u var
beta\u var
属于
LpVariable
类型,但您需要数值

调用
alpha_var.value()
获取LpVariable的值

model_MPL += samples * (math.log(beta_var.value()) - beta_var.value() * math.log(alfa_var.value())) + suma

我认为你需要在目标函数中使用lpSum

import pulp as pl

model_MPL = pl.LpProblem("MPL", pl.LpMaximize)

beta_var = pl.LpVariable("beta_var",beta_last*0.5 , beta_last*1.5)
alfa_var = pl.LpVariable("alfa_var", alfa*0.5, alfa*1.5)

model_MPL += alfa_var>=0.1
model_MPL += beta_var>=0.1

model_MPL += lpSum([sample * (math.log(beta_var) - sample * beta_var + sample * math.log(alfa_var)) 
                    for sample in samples]) + suma 


我改变了这一点,有了一个新的错误类型
TypeError回溯(最近一次调用)--->29 model_MPL+=samples*(math.log(beta_var.value())-beta_var.value()*math.log(alfa_var.value())+suma TypeError:必须是实数,而不是NoneType