Sei sulla pagina 1di 14

Universidade Estadual de Campinas UNICAMP

Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com


IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

Lista de Exerccios 3
1.

(Convergncia do Algoritmo do Gradiente) Considere a funo () = + , onde > . A


funo estritamente convexa e possui um minimizador global estrito em = (, ).
a)

Determine o limite superior para a taxa de convergncia do algoritmo do gradiente de


maior descida aplicado ao problema de minimizar a partir de um ponto inicial
arbitrrio;

R: Como de classe , o passo timo (, ], > , que resolve o problema


() =
minimizando a forma quadrtica de , (), com a aproximao de + = , =
(( )), dada pelo algoritmo do gradiente.

() = ()( ) ( ) + ( ) = () + , pois = +

.
() mnimo quando () = , pois uma funo convexa, dado que > .
() = = , =
Para a funo , tem-se que:

= ( ) e = (

)>

E o valor de alpha que maximiza a taxa de convergncia do Algoritmo do Gradiente no ponto


dado por.

( ) =

( + )

+
(
)

Quando da aplicao do algoritmo do gradiente, a variao da diferena do valor da funo


objetivo em um determinado ponto e o valor do timo, por iterao, dada pela inequao.

+ (+) , para () = ()( ) ( ) = () ( )


Onde o nmero de condio da matriz , dado como a relao entre o maior e menor autovalor
associado. Considerando , a matriz tem autovalores 1 e . Como > , = e a taxa de
convergncia dada pela inequao
+ (
b)

) , para qual o limite superior a igualdade + = (

) .

= , ento o
Mostre que se as variveis do problema forem escaladas na forma
= ,
algoritmo do gradiente de maior descida convergir em um passo, qualquer que seja o ponto
inicial escolhido.

R: O valor de atualizao de aps uma iterao dado por:


+ =
Do valor de que maximiza a taxa de convergncia do Algoritmo do Gradiente para a funo ,
temos que:

+
+

( )
= ( ) (
) ( )

= ,
= , a expresso se resume a
Se as variveis forem escaladas na forma

+

+

( )
= ( ) (
) ( ) ( )
=( )

Valor que minimiza a funo .

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

2.

Prof. Dr. Paulo Valente

(Classificao Linear) O problema de classificao linear consiste em, dado um conjunto de


pares( , ), , {, +}, = , , , , determinar e tais que, para todo
{

> , = +
< , =

Esse problema pode ser formulado como


() |

= + + +
( ) ,
. . |
, = , , ,

(As variveis de deciso do problema so , e , , , ) Obtenha a forma padro de () em


funo de . Em seguida use a rotina linprog para resolver problemas-testes com dados ( , ),
, {, +}, = , , , gerados aleatoriamente. Os resultados devem incluir ilustraes
grficas com = ou = e, a) classificao perfeita ( = ); b) classificao imperfeita
( > ).
R: O problema consiste em encontrar um hiperplano que separe em dois grupos, {, +}, um
determinado conjunto de dados. A forma padro de () dada por:
() |

= + + +
( ) + = + ,
. . |
, = , , ,

Onde so variveis de folga,


representa um grau de erro na classificao,
+ e
em que, para > , ocorre classificao errnea e, para = , h classificao perfeita.

A restrio pode ser representada como:


() (, ) + = +

) ((
,

) ( ) ) + ( ) = + ( )
,

Que pode ser reescrita, inserindo em e estendendo = ,+

)(
,

) ( ) + ( ) = + ( )

Agrupando os termos e tambm ao vetor , tem-se a seguinte equao.

)(

,

) =

( )

Como alternativa ao MATLAB, utilizou-se a funo linprog da biblioteca optimize, pacote scipy1
0.17.0, na linguagem Python. Para os problemas de classificao perfeita ( = ) e imperfeita
( > ), dois conjuntos com pares de distribuies normais multivariada sem e com interseo,
respectivamente, foram gerados. cada uma das distribuies, valores { }, so
assinalados.
(, , , )
Sero consideradas distribuies isotrpicas com = , = (
)
(, , , )

https://github.com/scipy/scipy

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016
a)

Prof. Dr. Paulo Valente

Classificao perfeita ( = ):
((, ; , ); (, ; , )) = ((; ); (, ; , )), = + e
((, ; , ); (, ; , )) = (((; ); (, ; , )), ), =
Resultado: = (, ; , ), = , , = {} , =

Figura 1 Classificao perfeita.


b)

Classificao imperfeita ( = ):
((, ; , ); (, ; , )) = ((; , ); (, ; , )), = + e
((, ; , ); (, ; , )) = (((, ; ); (, ; , )), ), =
Resultado: = (, ; , ), = , , = , , = , , = , , demais =
{} {; ; }, = , > .

Figura 2 Classificao imperfeita.

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

Exemplo de script em Python.


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.

# -*- coding: utf-8 -*"""


Created on Sat Jun 11 16:33:58 2016
@author: Gabriel Sabena Gusmo
"""
import numpy as np # package to handle numeric arrays
from matplotlib import pyplot as plt
# package to handle graphics
from scipy.optimize import linprog # package that has simplex implemented

plt.close('all')

# close all plots

fig = plt.figure() # create new figure


plt.plot([0]) # create a new axis
fs_factor = 1.2 # font size factor to increase or deacrease
plt.rcParams['font.family'] = 'Consola' # font type
plt.rcParams['font.size'] = 10*fs_factor
plt.rcParams['legend.fontsize'] = 10*fs_factor
plt.rcParams['axes.labelsize'] = 10*fs_factor
plt.rcParams['xtick.labelsize'] = 10*fs_factor*0.9
plt.rcParams['ytick.labelsize'] = 10*fs_factor*0.9
# plot setup
scale = 5 # scale
# regulates the axis limits as below
xlim = [-scale,scale] # y-limits
ylim = xlim # x-limits
ax = fig.axes[0] # figure-object handler
ax.set_xlim(xlim) # set horizontal limits
ax.set_ylim(ylim) # set vertical limits
ax.set_xlabel('$X_1$',fontsize = 10*fs_factor) # set horizontal axis label
ax.set_ylabel('$X_2$',fontsize = 10*fs_factor) # set vertical axis label
pxgrid = plt.plot(xlim,[0,0],'-',color='gray',alpha=0.5) # plots x-axis
pygrid = plt.plot([0,0],ylim,'-',color='gray',alpha=0.5) # plot y-axis
size = 150 # size of populations ; n = 2 # number of clusters
# data generation
X1 = np.random.normal((-1,0.5),(0.45,0.35),[size,n]) # population 1,
X2 = np.random.normal((0.5,-1),(0.45,0.40),[size,n]) # population 1,
S1 = np.ones([size,1]) # s-values for X1
S2 = -np.ones([size,1]) # s-values for X2
X = np.concatenate((X1,X2),0) # total population, concatenation of X1 and X2
S = np.concatenate((S1,S2),0) # populations' s's
# plot populations
p1 = plt.plot(X1[:,0],X1[:,1],'o',markersize=2.75,\
markeredgewidth=0,color='blue',alpha=0.75,label='$\mu = (-1;+0.5), \sigma = (0,45;0,35), s = +1$')[0]
p2 = plt.plot(X2[:,0],X2[:,1],'o',markersize=2.75,\
markeredgewidth=0,color='red',alpha=0.75,label='$\mu = (+0.5;-1), \sigma = (0,45;0,40), s = -1$')[0]
# run linprog
c = np.concatenate((np.zeros([1,n+1]),np.ones([1,size*2]),\
np.zeros([1,size*2])),1).flatten()
a = np.dot(np.diagflat(S),np.concatenate((X,-np.ones([size*2,1]),\
np.diagflat(S**(-1)),-np.diagflat(S**(-1))),1))
b = np.ones([size*2,1])
v = linprog(c,A_eq=a,b_eq=b,bounds=np.concatenate((np.repeat([[None,None]],\
n+1,0),np.repeat([[0,None]],size*4,0)),0),options={'maxiter':3000})
vec = ax.annotate(s='',xy=((v.x[2]/v.x[1])/(1+v.x[0]/v.x[1])+v.x[0]*0.1,\
(v.x[2]/v.x[1])/(1+v.x[0]/v.x[1])+v.x[1]*0.1),\
xytext=((v.x[2]/v.x[1])/(1+v.x[0]/v.x[1]),(v.x[2]/v.x[1])/(1+v.x[0]/v.x[1])),\
arrowprops={'arrowstyle':'-|>','lw':1,'color':'black','alpha':0.65})
vec.arrow_patch
plt.plot(np.linspace(-2,2,100),\
-(np.linspace(-2,2,100))*(v.x[0]/v.x[1])+v.x[2]/v.x[1],'-.',color='black')
ax.legend(loc=0,markerscale=2,fancybox=0,numpoints = 1,frameon=1,labelspacing=0.15) # set legend

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016
3.

Prof. Dr. Paulo Valente

(Algoritmo Simplex) Suponha que numa dada iterao do algoritmo Simplex obtm-se a tabela a
seguir.

Fornea condies sobre , e para que as afirmaes abaixo seja verdadeiras.


a)

A soluo bsica vivel;

R: Para a soluo bsica ser vivel e , e irrestritos, pois a soluo pode


no ser tima.
Assuma que a condio de a) seja verdadeira para os itens seguintes
b)

A soluo bsica tima;

R: Para a soluo bsica ser tima os custos relativos de mudana de base, e , para
que no haja aumento do com uma nova base.
c)

O problema ilimitado. Neste item, assuma > ;

R: Para que o problema seja ilimitado, com > , precisa ser < , de maneira que a varivel
crescer indefinidamente sem que as variveis bsicas e atinjam seus limites inferiores,
ponto no qual sairiam da base.
d)

A soluo bsica tima e existem solues timas alternativas. Neste item, assuma >
. Obtenha ento uma soluo bsica tima alternativa por meio do algoritmo Simplex
considerando = .

R: Admitindo ser a soluo bsica tima e > e = , para que haja solues timas
alternativas, deve poder entrar na base sem que haja variao do valor de . Fato que s
ocorreria se = .
A soluo bsica inicial = (; ; ; ; )
1
1 0
0
0
0
1

2
3
4
>0 =0 0
2
2
1
1
3
0

4
82
3 =3
5
3

Pelo teste de razo: { ; } = , sai da base e entra na base.

1
2
3
4
1
0
>0 =0 0
0 23 43
0
1
0
13 13
1
0

4
82
19 3 1
5 3
1

A soluo bsica alternativa = (; ; ; ; )


4.

(Sensibilidade em Otimizao Linear) No problema de otimizao linear a seguir,


parametriza os custos unitrios associados s variveis e .
= ( + ) + ( ) +
+
() |
. . | +
, ,
Determine (), o valor timo de () em funo de , usando o algoritmo Simplex. Represente
graficamente ().
R:

1
2
3
1 (3 + 2) (3 ) 1
0
1
2
3
0
2
1
4

4
0
1
0

5
0
0
1

5
7

Considerando ( + ) < , tem-se que < , mas, para ( ) < , > . Portanto, a mudana
de base se faz possvel se > ou < .

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

Para > , entra na base. Pelo teste de razo { ; } = , deve sair da base.
O novo tableau se torna.

1
0
0

1
0
0
1

2
3
(92 2) 5 + 4
32
1
12
2

4
0
1
0

5
32
12
12

(3 + 2)72
32
72

Avaliando os custos relativos mudana de base, o nico o qual negativo dentro da faixa de
2 . Pelo teste de razo {1; 7} = 1 e,portanto, 2 entra na base e 4 a deixa. O novo
tableau torna-se.

1
0
0

1
0
0
1

2
0
1
0

3
2 + 83
23
53

4
3 + 43
23
13

5
3 53
13
23

+ (6 5)
1
3

Para > 3, 5 < 0 e, assim, 5 entra na base e 1 a deixa de acordo com o teste de razo.

1
1 92 + 52
0
12
0
32

2
0
1
0

3
112 32
32
52

4
32 + 12
12
12

5
0
0
1

+ ( 152 + 52 )
52
92

Nesse ponto, o nico candidato a entrar na base 3 , mas para > 113. Portanto, para
3 < < 113, o valor da funo objetivo dada por 152 + 52 e a soluo
= (0; 52 ; 0; 0; 92).
Para > 113, a soluo ilimitada, pois 3 pode ter seu valor aumentado indefinidamente,
sem que nenhuma das variveis bsica atinjam seus limites inferiores.
Para < 32, partindo do tableau timo, tanto 1 como 4 so candidatos a entrar na base.
Partindo com 1 , {5; 3} = 2 e, portanto, 5 sai da base. Volta-se ao tableau com 1 e 2
na base, calculado anteriormente. Neste ponto, 3 no pode entrar na base, pois ter-se-ia um
problema ilimitado. Quem entraria na base seria 4 e, pelo teste de razo, 2 sairia da base.
No tableau com 1 e 4 na base, calculado acima, 3 no pode entrar na base, pois tratar-se-ia
de um problema ilimitado, somente podendo 5 entrar na base se = 32 sem que houvesse melhora
na funo objetivo. Assim a imagem da funo objetivo dada, em seu domnio, por:

()

212 + 142 32
0 32 < 3
={
152 52 3 < 113
113 <

Figura 3 Imagem da funo objetivo ( ).

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016
5.

Prof. Dr. Paulo Valente

(Otimizao Quadrtica) Considere o problema quadrtico

+
() |

. . | =
No qual , = , , e uma matriz simtrica definida positiva
no subespao nulo de , isto , > para todo tal que = .
a)

Mostre que a matriz

[ ]

no singular;
R: Como = e > no subespao nulo de , e o da matriz dado por + ,
a qual, portanto, tem cheio e invertvel.
b)

Mostre que o sistema de equaes derivado das condies de Karush-Kuhn-Tucker de ()


possui uma nica soluo. Determine a soluo tima analtica de ().

R: (, ) = ( + ) + (( )) = + + =

A condio necessria e suficiente dado que > . A equao pode ser representada
matricialmente como:

[ ] [ ] = [ ]

A qual s existir se [ ] for no singular.


6.

(Algoritmos dos Conjuntos Ativos) Resolva o problema quadrtico


() = ( ) + ( , )
+ + ()
|
+ ()
()
|
. . + + ()
|
|
()
()
Atravs do Algoritmo dos Conjuntos Ativos a partir do ponto inicial = (, ).
R: A funo objetivo pode ser representada na forma quadrtica () = + +

=[
] , = [ ] , = ,

Define-se = = {; } como o conjunto de restries ativas no ponto . Os gradientes das


restries so dados por.

+
[ ] [

+]

Para = (, ), ( ) = , . O problema auxiliar () consiste em encontrar a atualizao de


no subespao definido pelo conjunto de restries ativas, sem que se viole nenhuma outra
restrio.

+
() |

. . = ,

= + = [ ] + [ ] = [ ]



[
]+[ ]

() ,, |

. . [
] = [ ]

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

A nica soluo para o sistema definido no () = [ ]. Para que a condio de otimalidade

de primeira ordem seja satisfeita, devem existir s positivos, tais que:

+ [ ] [ ] = [ ] + [ ] = [ ], [ ] = [ ]

Dado que os multiplicadores associados so negativos, e que a variao da funo objetivo


maior na direo de , = {, }\{}={4}.
Resolvendo o () em , tem-se:


() , | [ ] + []
. . [ ] = []
Por substituio, = , o problema se resume a encontrar o mnimo de , o qual, pela
condio de otimalidade de primeira ordem, se localiza em = = .

O novo valor de dado por = [ ] + [


] = [
]. O valor de limitado pela primeira

restrio , ou seja,
{; ; } = {() + = ; () + = ; () + = } > = , = .

E = { } = {, }, = [ ].

Resolvendo o problema auxiliar para e ,

= + = [ ] + [ ] = [ ]



[
] + [ ]

(), |

. . [
] = [ ]

Novamente, a nica soluo = [ ]. Calculando os multiplicadores de Lagrange associados,

temos:

+ [ ] [ ] = [
] = , = e = . = \{} = {}
+

Retornando ao () com e ,


() , | [ ] + []
. . [ ] = []
Inserindo a restrio na funo objetivo, = , tem-se a equao: = , a qual,

pelas condies de otimalidade de primeira ordem, tem seu mnimo em = [


].

{; } = {() ( + ) + = ; () + ( + ) + = } > = ,
= > , = .

= [ ] + [
]=[
] , = , pois no se atinge a restrio {2} com = .

O novo () se torna:

= + = [
]+[ ]= [
]



(), | [ ] + []
. . [ ] = []

Problema que se resolve, novamente, com = [ ], pois trata-se da soluo do mesmo () anterior,

mas em seu ponto timo. Calculando os multiplicadores de Lagrange associados, temos:

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

+ [ ] = [
] + [ ] [ ] = [
]=[ ]

H apenas um multiplicador de Lagrange, = , o qual positivo determina que o ponto


= [
7.

] e ( ) = timo.

(Classificador com Margem Mxima) Quando possvel separar estritamente os dados de um


problema de classificao, o separador (classificador) linear no nico. Neste caso, uma
estratgia possvel maximizar a margem de separao, isto , determinar o hiperplano tal
que a distncia entre os hiperplanos crticos
+ = { = +} e = { = }
seja mxima. Um hiperplano que maximiza a margem de separao faz com que um ponto prximo
dos pontos tais que = + ou = tenha mais chances de ser classificado corretamente.
a)

Mostre que a distncia entre os hiperplanos crticos igual a . Assim, o problema


de classificao com margem mxima pode ser formulado como um problema quadrtico nas
variveis e :
() |


. . ( ) , = , , , .

R: Supondo que + e se situem sobre os hiperplanos crticos + e , respectivamente, a


distncia entre os hiperplanos dada pela projeo do vetor formado por + e sobre .
+ = (+ ) = + () =
Portanto, se + + , () = e + =
b)

Use os mesmos dados do Exerccio 2 correspondentes a para encontrar um hiperplano


separador com margem mxima atravs da rotina quadprog do MATLAB.

R: A resoluo do problema quadrtico foi realizada utilizando o pacote CVXOPT 1.1.62, na


linguagem Python, o qual se distingue parcialmente da built-in do MATLAB na maneira como os
parmetros de restrio so passados funo. A funo coneqp, resolve um sistema quadrtico
na forma:

+
() |

. . |
Como no h termos lineares na funo objetivo, = . Como a funo coneqp recebe as
restries com a relao , toma-se o oposto das restries do ex. 2.

= [

][
,

] [ ]

Neste exerccio, sero utilizados somente os mesmos parmetros para gerao de populaes que
foram gerados no ex. 2, podendo os ajustes diferenciar-se como consequncia de populaes
individualmente diferentes, mas cujas distribuies so as mesmas. O problema foi reestruturado
da seguinte forma.
A matriz de definio do problema quadrtico dada por:


= [

(+,+)

O cdigo utilizado para gerao de grficos semelhante ao do ex. 2. O snip do trecho do


cdigo referente rotina segue abaixo.

https://github.com/cvxopt/cvxopt

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016
1.
2.
3.
4.
5.
6.
7.
8.
9.

Prof. Dr. Paulo Valente

from cvxopt import matrix, solvers


...
# run quadprog equivalent
Q = matrix(2*np.diagflat(np.ones(n+1))) # the Q matrix ; Q[-1,-1] = 1e-3
c = matrix((np.ones(n+1)*0)/(size*2)) # linear terms (zeros)
G = matrix(-np.dot(np.diagflat(S),np.concatenate((X,-np.ones([size*2,1])),1))) # constraint matrix
h = matrix(-np.ones([size*2]))
sol = solvers.coneqp(Q,c,G,h)

Classificao perfeita ( = 100):


((, ; , ); (, ; , )) = ((; ); (, ; , )), = + e
((, ; , ); (, ; , )) = (((; ); (, ; , )), ), =
Resultado: = (, ; , ), = , , = {} , = , , =

Figura 4 Classificao perfeita.


8.

(Classificador com Margem Ajustvel) Quando no possvel separar dados de um problema de


classificao, necessrio estabelecer um compromisso entre margem de separao (distncia
entre os hiperplanos crticos) e o erro de classificao. Uma maneira de estabelecer esse
compromisso resolver o seguinte problema quadrtico nas variveis , e do vetor de erros
de classificao = ( , , , ):

|
() |
=
( ), = , , ,
. . |
, = , , , .
O parmetro a ponderao que estabelece o compromisso entre o erro de classificao
(que se quer minimizar) e a margem de separao (que se quer maximizar, minimizando ).
a)

Use os mesmos dados do Exerccio 2 correspondentes a > para resolver o problema


atravs da rotina quadprog do MATLAB. Resolva o problema para diferentes valores de ;

R: A estrutura do problema uma mescla da do ex. 2 e 7. A estrutura das restries a mesma


da do ex. 2, exceto pela no necessidade de se incluir variveis de folga na funo coneqp do
pacote CVXOPT utilizado no ex. 7., e de ser necessrio incluir as restries .
Portanto, as restries consistem da concatenao vertical a seguir.

10

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

] [

Prof. Dr. Paulo Valente

+,+

[ ]
,+ ] [ ]

,
Com o vetor de custos associados:

[ ]

e o problema quadrtico =

](++,++)

Abaixo, encontram-se os resultados para = ; , ; e parmetros geradores na legenda.

Figura 5 Sensibilidade - .
b)

Gere um grfico margem de separao erro de classificao (com implcito) e analise


o compromisso entre os dois ndices de desempenho do classificador.

R: Os valores gerados so referentes aos mesmos dados utilizados no item a)

11

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

Figura 6 Erro de Classificao vs. Margem de Separao.


Nota-se que o erro de classificao inversamente proporcional a margem de separao,

O cdigo utilizado para gerao de grficos semelhante ao do ex. 7. O snip do trecho do


cdigo referente rotina segue abaixo. A parcela relacionada a criao da Figura 6 foi
suprimida.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.

from cvxopt import matrix, solvers

# run quadprog equivalent with soft-margin


Q = matrix(2*lamb*np.diagflat(np.concatenate((np.ones(n),np.zeros(2*size+1)),0)))# the Q matrix ;
Q[-1,-1] = 1e-3
c = matrix(np.concatenate((np.zeros(n+1),np.ones(2*size)),0)/(2*size))# linear terms (zeros)
G1 = -np.dot(np.diagflat(S),np.concatenate((X,-np.ones([2*size,1]),np.diagflat(S**(-1))),1))
G2 = -np.concatenate((np.zeros(np.shape(X)),np.zeros([size*2,1]),np.diagflat(np.ones(size*2))),1)
G = matrix(np.concatenate((G1,G2),0)) # The upper (G1) and lower (G2) constraints
h = matrix(np.concatenate((-np.ones([size*2]),np.zeros([size*2])),0)) # constraints RHS
for i in range
Q = matrix(2*lamb*np.diagflat(np.concatenate((np.ones(n),np.zeros(2*size+1)),0)))# the Q matrix ;
Q[-1,-1] = 1e-3
c = matrix(np.concatenate((np.zeros(n+1),np.ones(2*size)),0)/(2*size))# linear terms (zeros)
G1 = -np.dot(np.diagflat(S),np.concatenate((X,-np.ones([2*size,1]),np.diagflat(S**(-1))),1))
G2 = -np.concatenate((np.zeros(np.shape(X)),np.zeros([size*2,1]),np.diagflat(np.ones(size*2))),1)
G = matrix(np.concatenate((G1,G2),0)) # The upper (G1) and lower (G2) constraints
h = matrix(np.concatenate((-np.ones([size*2]),np.zeros([size*2])),0)) # constraints RHS
vec = [] # array to be filled-up with sensitive parameters
for i in range(0,101):
# run quadprog + linrestrictions
lamb = 0.0+(1.0/100)*i # lambda value
Q = matrix(2*lamb*np.diagflat(np.concatenate((np.ones(n),np.zeros(2*size+1)),0))) # the Q matrix
c = matrix(np.concatenate((np.zeros(n+1),np.ones(2*size)),0)/(size*2)) # linear terms
G1 = -np.dot(np.diagflat(S),np.concatenate((X,-np.ones([size*2,1]),np.diagflat(S**(-1))),1))
G2 = -np.concatenate((np.zeros(np.shape(X)),np.zeros([size*2,1]),\
np.diagflat(np.ones(size*2))),1)
G = matrix(np.concatenate((G1,G2),0)) # the constraint matrix as a result of concatenation
b = matrix(np.concatenate((-np.ones([size*2]),np.zeros([size*2])),0)) # constraints RHS
sol = solvers.qp(Q,c,G,b); x=sol2['x'][0:3] # solve and gather x values
# fill-up vec with sensitive parameters
vec += [[lamb,np.array(x[0:2].T*x[0:2]).flatten()[0],sum(sol['x'][n+2:-1])]]
plt.plot(np.linspace(-2.5,2.5,100),-(np.linspace(-2.5,2.5,100))*(x[0]/x[1])+x[2]/x[1],'',color='black',alpha=0.25) # plot

12

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016
9.

Prof. Dr. Paulo Valente

(Modelagem em Otimizao Geomtrica) Considere o problema de alocao de potncia discutido


no contexto dos modelos de Otimizao Linear
+ + +

, = , , ,
() |
. . |
, , , .
Reformule () como um problema de Otimizao Geomtrica.
R:
Em otimizao geomtrica, a funo objetivo, (), e as restries associadas, (), so
representadas como combinaes lineares de funes posinomiais, definidas em e ,

respectivamente. O posinmio definido como funo na forma = = , > , .


Portanto, o problema de alocao de potncia pode ser representado como:

() = = = {
=

= , { = , }, }

As restries assumem a forma padro:

() =

= = { {

}

}}
= { : = , = },
= { = ,

10. (Otimizao Geomtrica Numrica) O objetivo deste exerccio comparar duas formulaes
convexas equivalentes do problema geomtrico na forma padro. Considere o problema geomtrico.



+ +

() |
+

. . |

, , >

a)

Obtenha a formulao convexa equivalente do problema atravs da simples transformao de


variveis = . Resolva o problema equivalente usando a rotina fmincon do MATLAB;

R:
Converso do problema forma exponencial-logartmica:
= =
+ + + ++
( + )

+

() |


. . |

, ,
Para resoluo de problemas de otimizao no-linear com restries, a rotina fmincon do MATLAB
utiliza, como padro, algoritmo de pontos interiores. Para resoluo deste problema, foi
utilizado algoritmo equivalente3 para o propsito, na linguagem Python.
1.
2.
3.
4.
5.

from scipy.optimize import fmin_slsqp


f = lambda y : 40.0*np.exp(-y[0]-y[1]/2.0-y[2])+20.0*np.exp(y[0]+y[2])+20.0*np.exp(sum(y))
g = lambda y : 1-((1.0/3.0)*np.exp(-2*(y[0]+y[1]))+(4.0/3.0)*np.exp(y[1]/2.0-y[2]))
out = fmin_slsqp(func=f,x0=[10,1,3],f_ieqcons=g,acc=1e-10,full_output=True)

3 https://github.com/scipy/scipy, pacote optimize, funo fmin_slsqp (Sequential Least Square Programming)

13

Universidade Estadual de Campinas UNICAMP


Gabriel Sabena Gusmo 081465 gusmaogabriels@gmail.com
IA 897 A Introduo Otimizao Matemtica 14/06/2016

Prof. Dr. Paulo Valente

A funo retorna:
Optimization terminated successfully.
(Exit mode 0)
Current function value: 100.0
Iterations: 38
Function evaluations: 219
Gradient evaluations: 37

Resultado na varivel out:


= [, ; , ; , ] = ( ) [; ; ] ( ) =

b)

Considere agora o logaritmo neperiano da funo objetivo e da restrio obtida no item


anterior. Resolva o problema equivalente usando a rotina fmincon do MATLAB

R:
( + + + ++ )

() |
( ( + ) + ) () =
. . |

, ,
Trecho do cdigo modificado:
6.
7.
8.
9.
10.
11.

from scipy.optimize import fmin_slsqp


import numpy as np

f = lambda y : np.log(40.0*np.exp(-y[0]-y[1]/2.0-y[2])+20.0*np.exp(y[0]+y[2])+20.0*np.exp(sum(y)))
g = lambda y : -np.log((1.0/3.0)*np.exp(-2*(y[0]+y[1]))+(4.0/3.0)*np.exp(y[1]/2.0-y[2]))
out = fmin_slsqp(func=f,x0=[10,1,3],f_ieqcons=g,acc=1e-10,full_output=True)

A funo retorna:
Optimization terminated successfully.
(Exit mode 0)
Current function value: 4.60517018599
Iterations: 14
Function evaluations: 71
Gradient evaluations: 14

Resultado na varivel out:


= [, ; , ; , ] = ( ) [; ; ] (( )) = , ( )
Compare as solues obtidas nos itens a) e b) em termos de preciso e esforo computacional.
Ao se aplicar o logaritmo neperiano ao problema transformado nas variveis = , chega-se
resposta final dentro da preciso estabelecida ( ) em menos iteraes, 14, frente a 38
para o problema exponencial. Tanto a transformao logartmica como a exponencial so
utilizadas para transformar problemas geomtricos posinomiais no-convexos que o caso
em verses convexas, cuja topologia permite que mtodos de gradiente sejam utilizados para
determinao de min/mx globais sem perda de generalizao. Partindo-se do ponto inicial
= [; ; ], chega-se ao final do processo iterativo do mtodo utilizado em 5 ms e 9 ms, para
o problema logaritmo e exponencial, respectivamente. O caso em que o logaritmo aplicado
transformao inicial favorecido por tratar de minimizao de uma funo convexa
(() , > ) definida em um domnio convexo ( , ), a qual converte o problema a
comportamento linear em , () .

14

Potrebbero piacerti anche