Programacion simple

Minimizar la siguiente funcion:

\[f(x) = -x_1 - 3 x_2 (1)\]

Sujeta a las siguientes restricciones:

\[\begin{array}{cccc} x_1 & + & x_2 & <= & 6 \\ -x_1 & + & 2x_2 & <= & 8 \end{array} \]

donde: \(x_1, x_2=>0\)

Solucion:

Primero definimos la el vector de coeficientes de la funcion objetivo (1).

\[ c^T=(-1, -3)\]

Objetivo <- c(-1, -3)

Luego definimos la matriz con los coeficientes de las restricciones:

\[ A = \begin{pmatrix} 1 & 1 \\ -1 & 2 \end{pmatrix} \]

Coef_Restricciones <- matrix(data = c(1, 1, -1, 2), 
                        nrow = 2, 
                        ncol = 2, 
                        byrow = TRUE)

Asi mismo, se define el vector B con los valores del lado derecho de las inecuaciones de las restriciones:

\[B = (6, 8)\]

Sol_Restricciones <- c(6, 8)

Sumado a esto, definimos el vector con las direccion de las restricciones:

\[D = (<=, <=)\]

Dir_Restricciones <- c("<=", "<=")

Una vez planteado el problema en estos terminos procedemos a minimizar nuestra funcion objetivo mediante el paquete lpSolve, por medio de la funcion lp():

library(lpSolve)
Solucion <- lp(direction = "min", 
               objective.in = Objetivo, 
               const.mat = Coef_Restricciones, 
               const.dir = Dir_Restricciones, 
               const.rhs = Sol_Restricciones)

Obteniendo de esta forma que el punto donde se minimiza la funcion objetivo es \(-15.33\) y la solucion el punto (\(1.33, 4.67)\)

LS0tCnRpdGxlOiAiT3B0aW1pemFjaW9uIGxpbmVhbCBlbiBSIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyMjIFByb2dyYW1hY2lvbiBzaW1wbGUKCk1pbmltaXphciBsYSBzaWd1aWVudGUgZnVuY2lvbjogCgokJGYoeCkgPSAteF8xIC0gMyB4XzIgKDEpJCQKClN1amV0YSBhIGxhcyBzaWd1aWVudGVzIHJlc3RyaWNjaW9uZXM6IAoKJCRcYmVnaW57YXJyYXl9e2NjY2N9CiB4XzEgJiArICYgIHhfMiAmIDw9ICYgNiBcXAoteF8xICYgKyAmIDJ4XzIgJiA8PSAmIDggXGVuZHthcnJheX0gICQkCgpkb25kZTogJHhfMSwgeF8yPT4wJAoKIyMjIyBTb2x1Y2lvbjoKClByaW1lcm8gZGVmaW5pbW9zIGxhIGVsIHZlY3RvciBkZSBjb2VmaWNpZW50ZXMgZGUgbGEgZnVuY2lvbiBvYmpldGl2byAoMSkuCgokJCBjXlQ9KC0xLCAtMykkJApgYGB7ciBWZWN0b3IgQ30KT2JqZXRpdm8gPC0gYygtMSwgLTMpCmBgYAoKTHVlZ28gZGVmaW5pbW9zIGxhIG1hdHJpeiBjb24gbG9zIGNvZWZpY2llbnRlcyBkZSBsYXMgcmVzdHJpY2Npb25lczoKCiQkIEEgPSBcYmVnaW57cG1hdHJpeH0gCiAxICYgMSAgXFwKLTEgJiAyICBcZW5ke3BtYXRyaXh9ICQkCgpgYGB7ciBNYXRyaXogQX0KQ29lZl9SZXN0cmljY2lvbmVzIDwtIG1hdHJpeChkYXRhID0gYygxLCAxLCAtMSwgMiksIAogICAgICAgICAgICAgICAgICAgICAgICBucm93ID0gMiwgCiAgICAgICAgICAgICAgICAgICAgICAgIG5jb2wgPSAyLCAKICAgICAgICAgICAgICAgICAgICAgICAgYnlyb3cgPSBUUlVFKQpgYGAKQXNpIG1pc21vLCBzZSBkZWZpbmUgZWwgdmVjdG9yICpCKiBjb24gbG9zIHZhbG9yZXMgZGVsIGxhZG8gZGVyZWNobyBkZSBsYXMgaW5lY3VhY2lvbmVzIGRlIGxhcyByZXN0cmljaW9uZXM6CgokJEIgPSAoNiwgOCkkJApgYGB7ciBWZWN0b3IgQn0KU29sX1Jlc3RyaWNjaW9uZXMgPC0gYyg2LCA4KQpgYGAKClN1bWFkbyBhIGVzdG8sIGRlZmluaW1vcyBlbCB2ZWN0b3IgY29uIGxhcyBkaXJlY2Npb24gZGUgbGFzIHJlc3RyaWNjaW9uZXM6CgokJEQgPSAoPD0sIDw9KSQkCmBgYHtyIFZlY3RvciBEfQpEaXJfUmVzdHJpY2Npb25lcyA8LSBjKCI8PSIsICI8PSIpCmBgYApVbmEgdmV6IHBsYW50ZWFkbyBlbCBwcm9ibGVtYSBlbiBlc3RvcyB0ZXJtaW5vcyBwcm9jZWRlbW9zIGEgbWluaW1pemFyIG51ZXN0cmEgZnVuY2lvbiBvYmpldGl2byBtZWRpYW50ZSBlbCBwYXF1ZXRlIGBscFNvbHZlYCwgcG9yIG1lZGlvIGRlIGxhIGZ1bmNpb24gYGxwKClgOgoKYGBge3IgU29sdWNpb259CmxpYnJhcnkobHBTb2x2ZSkKbGlicmFyeShNQVNTKQpTb2x1Y2lvbiA8LSBscChkaXJlY3Rpb24gPSAibWluIiwgCiAgICAgICAgICAgICAgIG9iamVjdGl2ZS5pbiA9IE9iamV0aXZvLCAKICAgICAgICAgICAgICAgY29uc3QubWF0ID0gQ29lZl9SZXN0cmljY2lvbmVzLCAKICAgICAgICAgICAgICAgY29uc3QuZGlyID0gRGlyX1Jlc3RyaWNjaW9uZXMsIAogICAgICAgICAgICAgICBjb25zdC5yaHMgPSBTb2xfUmVzdHJpY2Npb25lcykKYGBgCgpPYnRlbmllbmRvIGRlIGVzdGEgZm9ybWEgcXVlIGVsIHB1bnRvIGRvbmRlIHNlIG1pbmltaXphIGxhIGZ1bmNpb24gb2JqZXRpdm8gZXMgJGByIHJvdW5kKFNvbHVjaW9uJG9ianZhbCwgMilgJCB5IGxhIHNvbHVjaW9uIGVsIHB1bnRvICgkYHIgcm91bmQoU29sdWNpb24kc29sdXRpb24sIDIpYCkk