Проблема: для l oop с оптимизатором внутри получается одинаковое значение выхода для разных входных данных - PullRequest
0 голосов
/ 05 марта 2020

Я попытался сделать для l oop с оптимизатором внутри. Я получил суровые значения w из нормального распределения, и теперь я хочу найти оптимальный x, связанный с w, для целевой функции. В любом случае l oop выплевывает одно и то же значение x для разных значений w. Надеюсь, что вы можете помочь!

Импорт необходимых библиотек для решения проблемы

import numpy as np
from scipy import optimize
from scipy.optimize import minimize
import matplotlib.pyplot as plt
from numpy import array

Задать значения параметров

m=1 #cash-on-hand
v=10 #disutility of labor
epsilon=0.3 #Frisch elasticity of labor supply
tau_0=0.4 #standard labor income tax
tau_1=0.1 #top bracket labor income tax
kappa=0.4 #cut-off for the top labor income bracket

Нарисовать 10000 отдельных зарплат

N=10
seed = 99
np.random.seed(seed)
w=np.random.uniform(0.5,1.5,size=N)

Определить функцию полезности

def fun(v,x,epsilon,m,w_i,tau_0,tau_1,kappa):
c=m+w_i*x-(tau_0*w_i*x+tau_1*max(w_i*x-kappa,0))
return -np.log(c)+v*(x**(1+1/epsilon))/(1+1/epsilon) 

Установить начальное значение x

x0=0.1
bnds=(0,1)

Оптимизировать x для различных значений w

x_star_list =[]
for w_i in w:
res=optimize.minimize_scalar(fun,x0, method='bounded',bounds=bnds, args=(v,epsilon,m,w_i,tau_0,tau_1,kappa))                        
x_star=res.x
x_star_list.append(x_star)
c=m+w_i*x_star-(tau_0*w_i*x_star+tau_1*max(w_i*x_star-kappa,0))
u=-fun(v,x_star,epsilon,m,w_i,tau_0,tau_1,kappa)
solution=(u,c,x_star,v,epsilon,m,w_i,tau_0,tau_1,kappa)
print("Solution using w={} :".format(w_i), solution,'\n')
...