Вы находитесь на странице: 1из 26

tiles

Algunos trucos u

Seguidamente se dan algunos trucos que facilitan la formulacion de muchos problemas, y permiten resolver problemas
no lineales mediante metodos lineales.
1. Como convertir variables no restringidas cuando el software exige variables no negativas.
2. Como convertir un conjunto de restricciones lineales de
desigualdad en uno equivalente de igualdades lineales.
3. Como convertir un conjunto de restricciones lineales de
igualdad en uno equivalente de desigualdades lineales.
4. Como convertir un problema de maximizacion en uno de
minimizacion.
5. Como convertir una funcion objetivo no lineal en una
lineal.
6. Como convertir algunas restricciones no lineales en restricciones lineales.
7. Como convertir un espacio vectorial en un cono.
8. Como tratar con conjuntos alternativos de restricciones.
9. Como tratar con restricciones condicionales.
10. Como tratar con funciones discontinuas.
11. Como tratar con funciones no convexas a trozos.
323

Tratando con variables no restringidas I

Un conjunto de variables {x1, x2, . . . , xr } puede reemplazarse por


{y1 z1, . . . , yr zr |y1, . . . , yr 0; z1, . . . , zr 0}
de diferencias de variables no negativas. Esto implica duplicar el numero de variables.
Esto es posible porque se pueden definir las partes positivas
y negativas
y i = x+
i = max{0, xi },
zi = x
i = max{0, xi }.

(1)

respectivamente. Entonces se tiene x = x+


i xi , donde

ambas x+
i y xi son no negativas. Sin embargo, puesto que

se puede escribir x = (x+


i + k) (xi + k) para todo k > 0,
hay infinitas descomposiciones.
Una alternativa consiste en reemplazar las r variables
no restringidas {x1, . . . , xr } por las r + 1 no negativas
{x1 , . . . , xr , x},

xi = xi x; i = 1, 2, . . . , r.

(2)

As, se anade solo una variable, en vez de r. Si se elige


x = min{x1, x2, . . . , xr }; xi = xi + x,
entonces, las variables {x1 , . . . , xr , x} son no negativas.
Notese que si {x1 , . . . , xr , x} satisface (2), entonces {x1 +
k, . . . , xr +k, x +k} tambien satisface (2), para cada k > 0.
324

Tratando con variables no restringidas II

Sea el conjunto de restricciones


x1 +x2 +x3 = 1,
x1 x2 x3 1,
+x3 1,
x1
0.
x1
Haciendo la transformacion
x2 = y2 z2
x3 = y3 z3,
y2, y3, z2, z3 0,

(3)

(4)

donde y2 = x+
2 , y3 = x3 , y z2 = x2 , z3 = x3 , resulta

x1 +y2 z2 +y3 z3 = 1,
x1 y2 +z2 y3 +z3 1,
+y3 z3 1,
x1
x1, y2, z2, y3, z3 0.

(5)

Alternativamente, con el cambio de variable


x 2 = y2 y
x3 = y3 y,

(6)

resulta

x1 +y2 +y3 2y = 1,
x1 y2 y3 +2y 1,
+y3 y 1,
x1
x1, y2, y3, y, 0.
que tiene una variable menos que el sistema (5).
325

(7)

Convirtiendo un conjunto de desigualdades


en uno de igualdades equivalente

Los sistemas de desigualdades pueden convertirse en sistemas de igualdades sin mas que anadir nuevas variables
que se llaman variables de holgura:
La desigualdad
ai1x1 + ai2x2 + + ainxn bi,
mediante la variable de holgura xn+1 0 se escribe
ai1x1 + ai2x2 + + ainxn + xn+1 = bi.
La desigualdad
ai1x1 + ai2x2 + + ainxn bi,
mediante la variable de holgura xn+1 0 se escribe
ai1x1 + ai2x2 + + ainxn xn+1 = bi.
Introduciendo las variables de holgura, u1 y u2, el conjunto de desigualdades (5) se tranforma en el de igualdades
equivalente
= 1
x1 y2 +z2 y3 +z3 +u1
+y3 z3
u2 = 1
x1
donde ahora
x1, y2, y3, z2, z3, u1, u2 0.
326

(8)

Convirtiendo un conjunto de igualdades


en uno de desigualdades equivalente

Proposici
on 1 El conjunto de igualdades
aTi x = bi; i = 1, 2, , . . . , m

(9)

es equivalente al conjunto de desigualdades

m
P

i=1

aTi x bi, i = 1, . . . , m,
m
aTi x P bi.

(10)

i=1

Demostraci
on: Que (9) implica (10) resulta obvio.
Recprocamente, considerese k {1, . . . , m}. Entonces

aTk x =

m
X

i=1

aTi x

i6=k

aTi x

m
X
i=1

bi

y, considerando que aTk x bk , resulta


aTk x = bk .
El conjunto de igualdades
x1 +x2 +x3 = 0,
x1 x2 x3 = 2,
+x3 = 1,
x1
es equivalente al conjunto de desigualdades
x1 +x2 +x3 0,
x1 x2 x3 2,
+x3 1,
x1
+x3 1,
3x1
327

i6=k

bi = bk ,

Convirtiendo un problema
ximos en uno de mnimos
de ma
n objetivo no lineal en lineal
y una funcio

El problema
Maximizar Zmax = cT x
es equivalente al problema
Minimizar Zmin = cT x
cuando ambos estan sometidos a las mismas restricciones.
Ademas, Zmax = Zmin.
El problema
Minimizar Z = f (x)
sujeta a
h(x) = 0
g(x) 0,
es equivalente al problema

(11)

Minimizar Z = y
sujeta a
h(x) = 0
g(x) 0
(12)
f (x) y.
Este truco es util cuando la tecnica de resolucion requiere
una funcion objetivo lineal.

328

Funciones objetivo no lineales


tratadas como lineales I
n ma
ximo)
(la funcio

Un PPL lo es cuando tanto la funcion objetivo como las


restricciones son lineales. En caso de que no se cumpla
alguna de estas, el problema deja de ser lineal.
El problema no lineal
Minimizar Z =

max |cTi x|

i=1,2,...,m

sujeta a
Ax = b
es equivalente al problema lineal:
Minimizar Z = y
sujeta a
Ax
cTi x
cTi x
y

b
y, i = 1, 2, . . . , m
y, i = 1, 2, . . . , m
0,

329

Funciones objetivo no lineales


tratadas como lineales I
n valor absoluto)
(la funcio

Minimizar Z = |cT x|
sujeta a
Ax = b
es equivalente al problema lineal:
Minimizar Z = y
sujeta a
Ax = b
cT x y
cT x y
y 0.
Mas generalmente, el problema no lineal
Minimizar Z =

m
X
i=1

|cTi x|

sujeta a
Ax = b
es equivalente al problema lineal:
Minimizar Z =

m
X
i=1

yi

sujeta a
Ax
cTi x
cTi x
yi

b
yi, i = 1, 2, . . . , m
yi, i = 1, 2, . . . , m
0, i = 1, 2, . . . , m.
330

Espacio vectorial como cono I

A veces interesa trabajar solo con componentes positivas.


Proposici
on 2 (Espacio vectorial como cono) Un
espacio vectorial A es un caso particular de cono:
A (A : A) ,

(13)

es decir, un espacio vectorial est


a generado por los generadores de A y sus opuestos, con componentes positivas.
Esto duplica los generadores. Es mejor la alternativa:
Teorema 1 Dado el espacio vectorial A y un vector
x A cuyas componentes con respecto a los generadores son positivas, entonces A (A : x) .
Demostraci
on:
Puesto que (A : x) A, basta
probar que A (A : x) . Puesto que x puede escribirse
x=

m
X
i=1

iai; i > 0; i = 1, . . . , m,

(14)

Si y A, para un real arbitrario , se tiene


y=

m
X
i=1

iai =

m
X
i=1

iai+xx =

Eligiendo

m
X
i=1

(i + i) ai+(x).

i
0,
(15)
= max

i=1,...,m i
es i + i 0; i = 1, . . . , m, y entonces y (A : x) .
331

Espacio vectorial como cono I

Nota 1 La importancia practica de este resultado es


que cualquier espacio vectorial generado por m vectores,
puede generarse con m + 1 vectores y componentes no
negativas.
Sea el espacio vectorial A = 1(1, 2, 3)T + 2(1, 0, 1)T .
Segun el Teorema 1, con
x=

i=1,2

ai = (1, 2, 3)T + (1, 0, 1)T = (0, 2, 4)T ,

se obtiene A (A : x) B , con

1 1 0

B = 2 0 2 .

3 1 4

Ahora, dado un vector cualquiera y de A, por ejemplo,


y = (1, 2, 3)T 2(1, 0, 1)T = (1, 2, 5)T ,
se puede elegir
= max |i| = max(| 1|, | 2|) = 2,
i=1,2

y entonces,
y = (1, 2, 5)T(1, 2, 3)T + 2(0, 2, 4)T = a1 + 2(x),
que es una combinacion lineal no negativa de los vectores a1
y x.
332

Conjunto alternativo de restricciones I

Las variables binarias constituyen una potente herramienta


para resolver algunos problemas. Una aplicacion interesante
consiste en imponer un conjunto alternativo de restricciones
(al menos una)
Proposici
on 3 (Restricciones alternativas)
Considerense los dos conjuntos de restricciones:
AT1 x b1
AT2 x b2.

(16)
(17)

Se puede escribir un conjunto de restricciones que implica que se satisface al menos una de las dos, mediante
AT1 x y1B1
AT1 x y2B2
y 1 + y2
y 1 , y2

b1
b2
1
{0, 1},

(18)
(19)
(20)
(21)

donde las matrices columna B1 y B2 deben satisfacer


para todo x:
AT1 x b1 + B1 B1 AT1 x b1
AT2 x b2 + B2 B2 AT2 x b2.

(22)
(23)

Si s
olo debe satisfacerse una de las restricciones del conjunto original, la restricci
on y1 + y2 1 debe reemplazarse por la y1 + y2 = 1.
333

Conjunto alternativo de restricciones II

Demostraci
on: Puesto que se satisfacen (20) y (21), se
tienen tres casos posibles:
Caso 1: (y1 = y2 = 0): Entonces, (18) y (19) resultan
(16) y (17), es decir, se satisfacen ambas restricciones.
Caso 2: (y1 = 0; y2 = 1): Puesto que se satisface (23)
para todo x, y (19) se convierte en (23), (19) no es aciva,
es decir, puede eliminarse.
Caso 3: (y1 = 1; y2 = 0): Puesto que se cumple (22)
para todo x, y (18) se convierte en (22), (18) no es activa,
es decir, puede eliminarse.
Considerese el conjunto de restricciones siguiente:

x1 0
0 0
1

x1

x2 2 0
1

x2
2x1 x2 0
2 1
0
y

(24)

x1 0
0 0
1

x
x2 0 0 1 1 0 ,
(25)

x2
x 1 + x2 1
1 1
1
que conduce a los dos conjuntos factibles A y B, sombreados
en claro y oscuro, en la figura, respectivamente.
Una forma de calcular las cotas de (22) y (23) consiste en
encontrar la menor region con lmites paralelos a los de A
conteniendo B, que es la region OST . Similarmente, la
334

Conjunto alternativo de restricciones III


X2
4

S
Q

P
3
2

1
O

T
1

X1

menor region con lmites paralelos a los de B conteniendo


A es la region P QR. Estas dos regiones se pueden definir
mediante el conjunto de restricciones:

x1 0
0
1
0
0

x
1

y1 0 2 (26)
x2 2 0
1

x2
2x1 x2 2
2 1
2
0

x1 0
0
1
0
0

x
x2 0 0 1 1 y2 0 0 , (27)

x2
x 1 + x2 3
1 1
2
1
de la que se obtiene

B1 = B2 = 0 .
2

(28)

Pero, es suficiente seleccionar valores grandes de B1 and B2.


335

Tratando con restricciones condicionales

Teorema 2 (Restricci
on condicional) Una restricci
on condicional de la forma:
f1(x1, . . . , xn) > b1

implica

f2(x1, . . . , xn) b2, (29)

es equivalentye al conjunto de restricciones:


f1(x1, . . . , xn) b1

y/o

f2(x1, . . . , xn) b2.

(30)

Demostraci
on: La restriccion condicional original no se
satisface solamente cuando:
f1(x1, . . . , xn) > b1

y f2(x1, . . . , xn) > b2,

(31)

y/o f2(x1, . . . , xn) b2.

(32)

y, por tanto, se satisface si


f1(x1, . . . , xn) b1

336

Tratando con funciones discontinuas

Las variables binarias tambien permiten tratar funciones discontinuas, tal como se muestra en la proposicion siguiente.
Proposici
on 4 (Funciones discontinuas) La
cion discontinua a minimizar

0
x=0
f (x) =
k + cx 0 < x b; k > 0

fun(33)

puede ser escrita como


f (x)
x
x
y
Demostraci
on:

ky + cx
by
0
{0, 1}.

(34)

Se analizan dos opciones posibles:

1. Si y = 0 de la segunda y tercera ecuaciones en (34),


resulta 0 x 0, es decir, x = 0 y reeemplazando
x = y = 0 en la primera se obtiene f (x) = 0.
2. Si, por el contrario, y = 1, se obtiene 0 x b y
f (x) = k + cx.
Notese que la discontinuidad en cero (f (0) = 0, f (0+) =
k) se resuelve por la condicion de que f (x) tiene n que
ser minimizada y, por tanto, f (0) = 0.
Seguidamente se usan variables binarias para tratar con funciones no convexas a trozos.
337

Tratando con funciones


no convexas a trozos I
f(x)

Proposici
on 5 (Funciones no convexas a trozos)
La funcion no convexa a trozos (ver Figura)

x
0xa
a<xb
f (x) = a + (x a)

a + (b a) + (x b) b < x c,
donde
< < ; , , > 0; a < b < c; a, b, c > 0,
puede ser escrita como
f (x)
x
aw1
w2(b a)
0
w2
w1, w2

=
=

x1 + x2 + x3
x 1 + x2 + x3
x1 a
x2 (b a)w1
x3 (c b)w2
w1
{0, 1}.
338

(35)
(36)
(37)
(38)
(39)
(40)
(41)

Tratando con funciones


no convexas a trozos II
f(x)

X
0

Proposici
on 6 (Funci
on no convexa a trozos con
discontinuidad inicial.) La funcion no convexa a trozos con discontinuidad inicial (ver figura)

0
f + (x a)
f (x) = 0
f0 + (b a) + (x b)

f + (b a) + (c b) + (x c)
0
donde

x=0
a<xb
b<xc
c < x d,

0 < < < ; 0 < a < b < c < d,

puede escribirse como


f (x)
x
w1(b a)
w2(c b)
0
w2
v, w1, w2

=
=

vf0 + x1 + x2 + x3
va + x1 + x2 + x3
x1 (b a)v
x2 (c b)w1
x3 (d c)w2
w1 v
{0, 1}.
339

(42)
(43)
(44)
(45)
(46)
(47)
(48)

tiles de GAMS
Algunos trucos u

Seguidamente se muestran algunos trucos de GAMS para


resolver algunos problemas interesantes:
Como asignar valores a una matriz.
Como definir una matriz simetrica.
Como definir una matriz dispersa.
Como dividir un problema en subproblemas.
Como anadir restricciones iterativamente.
Como tratar con estados iniciales y finales.
Como realizar un analisis de sensibilidad.
Como hacer que el flujo del problema dependa de las
soluciones obtenidas.

340

Asignando valores a una matriz

La mayor parte de los lenguajes de programacion requieren ciclos para


asignar valores a una matriz. GAMS lo hace con un solo comando.
Sean las matrices:

m1 =

1 1 1
2 3 4
, m2 =

1 1 1
3 4 5

El codigo para definir ambas matrices es:


SETS

I
J

row index
/1*2/
column index /1*3/;

PARAMETER m1(I,J),m2(i,J);
** Paralell assignment for all indices
m1(I,J)=1;
m2(I,J)=ord(I)+ord(J);
DISPLAY m1,m2;
El comando anterior DISPLAY produce la salida:
---1
2
---1
2

9 PARAMETER M1
1
2
1.000
1.000
1.000
1.000

3
1.000
1.000

9 PARAMETER M2
1
2
2.000
3.000
3.000
4.000

3
4.000
5.000

341

trica
Definiendo una matriz sime

Para definir una matriz simetrica basta definir su parte triangular superior y copiar el resto. Sea la matriz

1 0 3

A = 0 2 4

3 4 5

El codigo GAMS para definirla es:


SET
I row and column index
/1*3/
ALIAS(I,J);
PARAMETER A(I,J) data matrix
/1.1 1 2.2 2 3.3 5 1.3
DISPLAY A;
A(I,J)$(ord(I) gt ord(J))=A(J,I);
DISPLAY A;

2.3

4/;

Los resultados producidos por el comando display son:


---1
2
3
---1
2
3

13 PARAMETER A
1
2
1.000
2.000

data matrix
3
3.000
4.000
5.000

19 PARAMETER A
1
2
1.000
2.000
3.000
4.000

data matrix
3
3.000
4.000
5.000
342

Definiendo una matriz dispersa

Hay muchas formas de definir una matriz dispersa. Una de ellas es definir
solo los elementos no nulos. Otra, consiste en definirla mediante formulas,
si es esto posible. Considerese la matriz:

s=

0
0
1
2
0
0

0
1
2
0
0
1

1
2
0
0
1
0

2
0
0
1
0
2

0
0
1
0
2
0

El codigo que sigue la define por enumeracion:


SETS

I row and column index /I1*I6/


MAP1(I,I)
/I1.I3,I2.I2,I2.I6,I3.I5,I4.I4,I6.I6/
MAP2(I,I)
/I1.I4,I2.I3,I4.I6,I5.I5 /;
ALIAS(I,J);
PARAMETER s(I,J) sparse matrix;
s(I,J)$MAP1(I,J)=1;
s(I,J)$MAP2(I,J)=2;
s(I,J)$(ord(I) gt ord(J))=s(J,I);
DISPLAY s;
Otra forma mas ventajosa de definirla es:
SET I row and column index /I1*I6/;
ALIAS(I,J);
PARAMETER s(I,J) sparse matrix;
s(I,J)$(mod((ord(I)+ord(J)),4) eq 0)=1;
s(I,J)$(mod((ord(I)+ord(J)),5) eq 0)=2;
DISPLAY s;
343

Dividiendo un problema en problemas similares

El problema
Minimizar Z =

n X
n
X
j=1 i=1

sujeta a

n
X
i=1

cij xij

aixij bj j = 1 . . . n

se puede dividir en los n problemas (j = 1, 2, . . . , n):


Minimizar Z =

n
X
i=1

sujeta a

n
X
i=1

cij xij

aixij bj .

SETS

I row index
/1*2/
J column index /1*3/
DIN(J) dynamic set;
ALIAS(J,J1);
PARAMETERS c(I,J),a(I),b(J); c(I,J)=1; a(I)=1; b(J)=1;
POSITIVE VARIABLE x(I,J);
VARIABLE z;
EQUATIONS
Cost(J) objective function
Rest(J) restriction;
Cost(J)$DIN(J)..
SUM(I,c(I,J)*x(I,J)) =e= z;
Rest(J)$DIN(J)..
SUM(I,a(I)*x(I,J))
=g= b(J);
Model split /all/;
DIN(J)=NO;
loop(J1,
DIN(J1)=YES;
Solve split using lp minimizing z;
DIN(J1)=NO;
);
344

adiendo restricciones iterativamente


An

Supongase un problema en el que se anade una nueva restriccion en cada


iteracion. Para resolverlo se pueden usar conjuntos dinamicos, que se
actualizan en cada iteracion, y restricciones (ecuaciones), que dependen
del conjunto dinamico que corresponda. Considerese la t-secuencia de
problemas.
Minimizar Z = cx
sujeta a

ax b(i), i = 1, . . . , t.

Supongase que el maximo numero de iteraciones requerido es t = 5, y que


el parametro b(i) se aumenta en una unidad en cada iteracion, entonces el
codigo que sigue resuelve el problema en cinco iteraciones.
SETS
I iteration counter /1*5/
DIN(I) dynamic set;
ALIAS(I,I1);
SCALARS c,a;
PARAMETER b(I);
c=1; a=1; b(I)=1;
POSITIVE VARIABLE x;
VARIABLE z;
EQUATIONS
Cost
objective function
Rest(I) restriction;
Cost..
c*x =e= z;
Rest(I)$DIN(I)..
a*x =g= b(I);
Model add /all/;
DIN(I)=NO;
loop(I1,
DIN(I1)=YES;
Solve add using lp minimizing z;
b(I+1)=b(I)+1;
);
345

Tratando con los estados iniciales y finales

En muchos problemas es importante considerar los estados


inicial y final con valores fijos de sus correspondientes variables.
En GAMS, estos estados pueden modelarse usando comandos
condicionales que afectan a restricciones genericas.
El programador debera definir un conjunto ordenado conteniendo todos los ndices, inclyendo los correspondientes a los
estados inicial y final. En GAMS es posible obtener el primer
y ultimo ndice de un conjunto ordenado. Por ejemplo, dado el conjunto K, que se refiere a los periodos temporales,
posibles condiciones sobre las restricciones son:
$(ord(K) EQ 1) para satisfacer las restricciones correspondientes en el periodo inicial.
$(ord(K) EQ card(K)) para satisfacer las restricciones
correspondientes en el periodo final.
$((ord(K) GT 1) AND (ord(K) LT card(K))) para
satisfacer las restricciones correspondientes en los demas
periodos.
Ejemplos de esto se han dado en los problemas de planificacion
de la produccion y en el de la distribucion de energa.

346

lisis de sensibilidad
Realizando un ana

En algunas aplicaciones, es necesario estudiar como dependen


las soluciones de los datos de partida, lo que se llama estudio
de sensibilidad. El ejemplo que sigue muestra la dependencia
de la solucion de los coeficientes de una de las restricciones.
Minimizar Z = cx
sujeta a

a(t)x b.

Un simple cambio puede consistir en aumentar un coeficiente


en una unidad, es decir, a(t+1) = a(t) + 1. El codigo que sigue
resuelve el problema para cada valor del parametro actualizado. Este proceso se repite 5 veces.
SET
I iteration counter /1*5/
SCALARS a,b,c;
a=1; b=1; c=1;
POSITIVE VARIABLE x;
VARIABLE z;
EQUATIONS
Cost
objective function
Rest
restriction;
Cost..
c*x =e= z;
Rest..
a*x =g= b;
Model analysis /all/;
loop(I,
Solve analysis using lp minimizing z;
a=a+1;
);
347

Haciendo el modelo dependiente


de los estados del problema

Los modelos pueden cambiar dependiendo de los resultados


obtenidos. Por ejemplo, si el problema es no acotado, puede
interesar anadir una nueva restriccion, que lo convierta en
acotado, y resolverlo de nuevo. Por ejemplo:
Minimizar Z = cx
Si la solucion de este problema no es acotada, se anade una
nueva restriccion y se resuelve el nuevo problema:
Minimizar Z = cx
sujeta a
ax b.
El codigo que sigue es un ejemplo de esto:
SCALARS c,a,b,flag;
c=1; a=1; b=1;
VARIABLE x,z;
EQUATIONS
COST
objective function
REST
restriction to be added;
COST..
c*x =e= z;
REST$(flag eq 1)..
a*x =g= b;
MODEL analysis /ALL/;
flag=0;
SOLVE analysis USING lp MINIMIZING z;
if(analysis.modelstat eq 3,
flag=1;
SOLVE analysis USING lp MINIMIZING z;
);
348

Вам также может понравиться