Estimados compañeros, estoy intentando correr un problema de programaciòn
lineal en R. Este problema ha sido corrido en el programa xpress, a
continuaciòn se muestra el còdigo de este programa.


Se cuenta con tres tablas e, a y b.

e:

"Producto" "Oficina" "Segmento" "Canal" "efectividad."
"1" "COMPRA DE CARTERA" "18" "ALTO VALOR" "18" 0,15
"2" "COMPRA DE CARTERA" "18" "ALTO VALOR" "COMER" 4,519

a:

Producto Oficina Segmento cantidad
   "TDC"  "67"  "BAJO VALOR"   119
   "TDC"  "94"  "BAJO VALOR"   119

b:

"Canal" "capacidad"
"1" "18" 119
"2" "19" 358

Y se desea maximizar la efectividad.

Alguien me puede dar una pista para lograr mi cometido de poder hacer este
ejercicio en R.?

Gracias por cualquier ayuda



#-----------------------------------------------còdigo de
xspress------------

declarations



                P: set of string !Conjunto de Productos

                O: set of string !Conjunto de Oficinas

                S: set of string !Conjunto de Segmentos

                C: set of string !Conjunto de canales de gestión



                e: dynamic array(P,O,S,C) of real !Efectividad de gestión de
un cliente de determinado grupo en un canal de gestión

                a: array(P,O,S) of integer !Número de clientes en cada grupo


                b: array(C) of integer !Capaciad de gestión (# de clientes)
por canal



                x: dynamic array(P,O,S,C) of mpvar !Asignación de un grupo
de clientes a un canal



end-declarations



initializations from input

                a e b

end-initializations



! Creación de las variables de decisión

forall(i in P, j in O, k in S, l in C| exists(e(i,j,k,l)))do

                create(x(i,j,k,l))

                x(i,j,k,l) is_binary

end-do



!Cada grupo de clientes se asigna a un solo canal de gestión

forall(i in P, j in O, k in S)

                sum(l in C| exists (x(i,j,k,l)))x(i,j,k,l)=1



!No se viola la capacidad de cada canal de gestión

forall(l in C)

                sum(i in P, j in O, k in S| exists
(x(i,j,k,l)))x(i,j,k,l)*a(i,j,k)<=b(l)



!Límite inferior para el Call

forall(l in C| l="CALL")

                sum(i in P, j in O, k in S| exists
(x(i,j,k,l)))x(i,j,k,l)*a(i,j,k)>=10000



!Límite superior para el Call

forall(l in C| l="CALL")

                sum(i in P, j in O, k in S| exists
(x(i,j,k,l)))x(i,j,k,l)*a(i,j,k)<=30000



!Límite inferior para la Comer

forall(l in C| l="COMER")

                sum(i in P, j in O, k in S| exists
(x(i,j,k,l)))x(i,j,k,l)*a(i,j,k)>=15000



!Función objetivo

efectividad:=sum(i in P, j in O, k in S, l in C| exists
(x(i,j,k,l)))a(i,j,k)*e(i,j,k,l)*x(i,j,k,l)



maximize(efectividad)



writeln("Efectividad Total= ", getobjval)

writeln("")

writeln("Decisiones:")

forall(i in P, j in O, k in S, l in C| getsol(x(i,j,k,l))<>0)

                writeln(i, " ", j, " ", k, " ", l)

writeln("")

writeln("Envios:")

forall(l in C)

                writeln(sum(i in P, j in O, k in S| exists
(x(i,j,k,l)))getsol(x(i,j,k,l))*a(i,j,k)," clientes enviados al canal ", l)



end-model


-- 
Luis Alberto López González
Analista de Riesgo Financiero
Estadístico Universidad Nacional de Colombia
celular 3132781143
Skype luis.alberto.lopez12

	[[alternative HTML version deleted]]

