Академический Документы
Профессиональный Документы
Культура Документы
ipynb - Colaboratory
sujeito a: x ≥ 3
x ≥ 0
tol2 = 1e − 6
beta = 0.05
MI = 5
x = Symbol('x')
lbd = Symbol('lbd')
mi = Symbol('mi')
s = Symbol ('s')
# Condições iniciais
sol = Matrix([10,1,1])
tol1 = 1e-6
tol2 = 1e-6
beta = 0.05
MI = 5
iteracao = 0
var = Matrix([x,lbd,s])
jacobiano = L.jacobian(var)
hessiana = hessian(L,var)
# Cálculo do erro
delta_y =-jacobiano.subs([(x,sol[0]),(lbd,sol[1]),(s,sol[2]),(mi,MI)])
erros = np.abs(delta_y)
maior_erro = np.max(erros)
iteracao = iteracao + 1
hessiana_atual = hessiana.subs([(x,sol[0]),(lbd,sol[1]),(s,sol[2]),(mi,MI)])
delta_x = hessiana_atual.inv()*delta_y.transpose()
sol = sol + delta_x
MI = MI*beta
delta_y = -jacobiano.subs([(x,sol[0]),(lbd,sol[1]),(s,sol[2]),(mi,MI)])
https://colab.research.google.com/drive/1bXIgz7hbvInU5sPcDsItfnXdD6UTrleX#scrollTo=uQbVb7DY40XN&printMode=true 1/5
10/06/2019 Exercício_8.ipynb - Colaboratory
erros = np.abs(delta_y)
maior_erro = np.max(erros)
miplt.append(MI)
ite.append(iteracao)
fob = f.subs([(x,float(sol[0])),(mi,MI),(s,float(sol[2]))])
plt.plot(miplt,ite)
plt.title('Variação do MI durante as iterações')
print('Valor da FOB:',fob)
print('Solução:')
print('x =',float(sol[0]))
print('mi =',MI)
print('lbd =',float(sol[1]))
print('s=',float(sol[2]))
print('Número de iterações:',iteracao)
2 2
minimizar f (x 1 , x 2 ) = (x 1 − 5) + (x 2 − 5)
x1 ,x2
sujeito a: x 1 + x 2 = 10
0 ≤ x 1 ≤ 10
0 ≤ x2 ≤ 9
x1 = Symbol('x1')
x2 = Symbol('x2')
x3 = Symbol ('x3')
lbd = Symbol('lbd')
mi = Symbol('mi')
su1 = Symbol ('su1')
su2 = Symbol ('su2')
piu1 = Symbol('piu1')
piu2 = Symbol('piu2')
https://colab.research.google.com/drive/1bXIgz7hbvInU5sPcDsItfnXdD6UTrleX#scrollTo=uQbVb7DY40XN&printMode=true 2/5
10/06/2019 Exercício_8.ipynb - Colaboratory
# Verificando a convexidade da função objetivo
# Cálculo da hessiana
var = Matrix([x1,x2])
hessiana = hessian(f,var)
nr_linhas = hessiana.shape[0]
nr_colunas = hessiana.shape[1]
intervalo = np.arange(0,10.1,0.1)
cont = 0
det_hess = []
for a in intervalo:
cont = cont + 1
sub_hessiana = hessiana[:nr_linhas,:nr_colunas]
det_sub = det(sub_hessiana)
det_sub = det_sub.subs([(x1,a),(x2,a)])
nr_linhas = nr_linhas - 1
nr_colunas = nr_colunas - 1
det_hess.append(det_sub)
det_hess = np.array([det_hess])
if det(hessiana) >= 0:
if det(hessiana) > 0:
if np.min(det_hess) <= 0:
if np.min(det_hess) == 0:
print('F(x1,x2) é côncava')
else:
print('F(x1,x2) é extritamente côncava')
else:
if np.min(det_hess) >= 0:
if np.min(det_hess) == 0:
print('F(x1,x2) é convexa')
else:
print('F(x1,x2) é extritamente convexa')
else:
print('F(x1,x2) é simultaneamente côncava e convexa')
else:
print('para alguns pontos, F(x1,x2) não é côncava e nem convexa')
print('Número de iterações:',cont)
# Condições iniciais
sol = Matrix([1,1,1,1,1,1,1])
tol1 = 1e-12
tol2 = 1e-12
https://colab.research.google.com/drive/1bXIgz7hbvInU5sPcDsItfnXdD6UTrleX#scrollTo=uQbVb7DY40XN&printMode=true 3/5
10/06/2019 Exercício_8.ipynb - Colaboratory
beta = 0.03
MI = 1
iteracao = 0
var = Matrix([x1,x2,lbd,su1,su2,piu1,piu2])
jacobiano = L.jacobian(var)
hessiana = hessian(L,var)
# Cálculo do erro
delta_y =-jacobiano.subs([(x1,sol[0]),(x2,sol[1]),(lbd,sol[2]),(su1,sol[3]),
(su2,sol[4]),(piu1,sol[5]),(piu2,sol[6]),(mi,MI)])
erros = np.abs(delta_y)
maior_erro = np.max(erros)
iteracao = iteracao + 1
hessiana_atual = hessiana.subs([(x1,sol[0]),(x2,sol[1]),(lbd,sol[2]),(su1,sol[3]),
(su2,sol[4]),(piu1,sol[5]),(piu2,sol[6]),(mi,MI)])
delta_x = hessiana_atual.inv()*delta_y.transpose()
sol = sol + delta_x
MI = MI*beta
delta_y = -jacobiano.subs([(x1,sol[0]),(x2,sol[1]),(lbd,sol[2]),(su1,sol[3]),
(su2,sol[4]),(piu1,sol[5]),(piu2,sol[6]),(mi,MI)])
erros = np.abs(delta_y)
maior_erro = np.max(erros)
miplt.append(MI) # adicionando os valores de mi na lista
ite.append(iteracao) # adicionando os número de iterações na lista
fob = f.subs([(x1,float(sol[0])),(x2,float(sol[1])),(su1,float(sol[3])),(su2,float(sol[4]
plt.plot(miplt,ite)
plt.title('Variação do MI durante as iterações')
print('Valor da FOB:',fob)
print('Solução:')
print('x1 =',float(sol[0]))
print('x2 =',float(sol[1]))
print('mi =',MI)
print('lbd =',float(sol[2]))
print('piu1 =',float(sol[5]))
print('piu2 =',float(sol[6]))
print('su1=',float(sol[3]))
print('su2 =',float(sol[4]))
print('Número de iterações:',iteracao)
https://colab.research.google.com/drive/1bXIgz7hbvInU5sPcDsItfnXdD6UTrleX#scrollTo=uQbVb7DY40XN&printMode=true 4/5
10/06/2019 Exercício_8.ipynb - Colaboratory
https://colab.research.google.com/drive/1bXIgz7hbvInU5sPcDsItfnXdD6UTrleX#scrollTo=uQbVb7DY40XN&printMode=true 5/5