model Lavor_SA
declarations
! Número de modelos de lavadoras
MODELOS = 1..4
! Plantas de montaje
PLANTAS = 1..2
! Tiempo disponible en cada planta (horas)
TiempoDisponible: array(PLANTAS) of real := [2500, 3200]
! Tiempos de fabricación por modelo y planta (horas por unidad)
Tiempo: array(PLANTAS, MODELOS) of real :=
[ [3, 3.5, 5, 2.5], ! Planta 1
[2.8, 4, 4.5, 2] ] ! Planta 2
! Costos de fabricación por modelo y planta (cientos de euros por unidad)
Costo: array(PLANTAS, MODELOS) of real :=
[ [3, 2.5, 5.2, 2.2], ! Planta 1
[2.8, 2.3, 4.8, 2.1] ] ! Planta 2
! Precio de venta por modelo (cientos de euros por unidad)
Precio: array(MODELOS) of real := [6.5, 7, 9.2, 5.2]
! Variables de decisión: cantidad de lavadoras producidas por modelo y planta
x: array(PLANTAS, MODELOS) of mpvar
end-declarations
! Función objetivo: maximizar el beneficio total
Profit := sum(i in PLANTAS, j in MODELOS) (Precio(j) - Costo(i, j)) * x(i, j)
maximize(Profit)
! Restricciones de capacidad en cada planta
forall(i in PLANTAS) do
sum(j in MODELOS) Tiempo(i, j) * x(i, j) <= TiempoDisponible(i)
end-do
! Restricciones de no negatividad
forall(i in PLANTAS, j in MODELOS) x(i, j) >= 0
end-model
bW9kZWwgTGF2b3JfU0EKICAgIGRlY2xhcmF0aW9ucwogICAgICAgICEgTsO6bWVybyBkZSBtb2RlbG9zIGRlIGxhdmFkb3JhcwogICAgICAgIE1PREVMT1MgPSAxLi40CgogICAgICAgICEgUGxhbnRhcyBkZSBtb250YWplCiAgICAgICAgUExBTlRBUyA9IDEuLjIKCiAgICAgICAgISBUaWVtcG8gZGlzcG9uaWJsZSBlbiBjYWRhIHBsYW50YSAoaG9yYXMpCiAgICAgICAgVGllbXBvRGlzcG9uaWJsZTogYXJyYXkoUExBTlRBUykgb2YgcmVhbCA6PSBbMjUwMCwgMzIwMF0KCiAgICAgICAgISBUaWVtcG9zIGRlIGZhYnJpY2FjacOzbiBwb3IgbW9kZWxvIHkgcGxhbnRhIChob3JhcyBwb3IgdW5pZGFkKQogICAgICAgIFRpZW1wbzogYXJyYXkoUExBTlRBUywgTU9ERUxPUykgb2YgcmVhbCA6PSAKICAgICAgICBbIFszLCAzLjUsIDUsIDIuNV0sICAgISBQbGFudGEgMQogICAgICAgICAgWzIuOCwgNCwgNC41LCAyXSBdICAhIFBsYW50YSAyCgogICAgICAgICEgQ29zdG9zIGRlIGZhYnJpY2FjacOzbiBwb3IgbW9kZWxvIHkgcGxhbnRhIChjaWVudG9zIGRlIGV1cm9zIHBvciB1bmlkYWQpCiAgICAgICAgQ29zdG86IGFycmF5KFBMQU5UQVMsIE1PREVMT1MpIG9mIHJlYWwgOj0gCiAgICAgICAgWyBbMywgMi41LCA1LjIsIDIuMl0sICEgUGxhbnRhIDEKICAgICAgICAgIFsyLjgsIDIuMywgNC44LCAyLjFdIF0gISBQbGFudGEgMgoKICAgICAgICAhIFByZWNpbyBkZSB2ZW50YSBwb3IgbW9kZWxvIChjaWVudG9zIGRlIGV1cm9zIHBvciB1bmlkYWQpCiAgICAgICAgUHJlY2lvOiBhcnJheShNT0RFTE9TKSBvZiByZWFsIDo9IFs2LjUsIDcsIDkuMiwgNS4yXQoKICAgICAgICAhIFZhcmlhYmxlcyBkZSBkZWNpc2nDs246IGNhbnRpZGFkIGRlIGxhdmFkb3JhcyBwcm9kdWNpZGFzIHBvciBtb2RlbG8geSBwbGFudGEKICAgICAgICB4OiBhcnJheShQTEFOVEFTLCBNT0RFTE9TKSBvZiBtcHZhcgogICAgZW5kLWRlY2xhcmF0aW9ucwoKICAgICEgRnVuY2nDs24gb2JqZXRpdm86IG1heGltaXphciBlbCBiZW5lZmljaW8gdG90YWwKICAgIFByb2ZpdCA6PSBzdW0oaSBpbiBQTEFOVEFTLCBqIGluIE1PREVMT1MpIChQcmVjaW8oaikgLSBDb3N0byhpLCBqKSkgKiB4KGksIGopCiAgICBtYXhpbWl6ZShQcm9maXQpCgogICAgISBSZXN0cmljY2lvbmVzIGRlIGNhcGFjaWRhZCBlbiBjYWRhIHBsYW50YQogICAgZm9yYWxsKGkgaW4gUExBTlRBUykgZG8KICAgICAgICBzdW0oaiBpbiBNT0RFTE9TKSBUaWVtcG8oaSwgaikgKiB4KGksIGopIDw9IFRpZW1wb0Rpc3BvbmlibGUoaSkKICAgIGVuZC1kbwoKICAgICEgUmVzdHJpY2Npb25lcyBkZSBubyBuZWdhdGl2aWRhZAogICAgZm9yYWxsKGkgaW4gUExBTlRBUywgaiBpbiBNT0RFTE9TKSB4KGksIGopID49IDAKCmVuZC1tb2RlbAo=