Hola sstrellita:),
Podrías usar simplex o greedy para resolver ese problema. Si querés en la sección de descargas hay un buen libro (Introduction to Algorithms de Cormen) donde se explica perfectamente la estrategia greedy.
Tenía el post casi listo antes, pero tuve un bajon de tensión y se perdió, así que ahora solo te pongo un poco de pseudocodigo.
Código:
//datos del problema
int cant //cantidad de tipos de productos
int horas //horas de producción
int precXuni[cant] //precio de cada unidad del producto
int uniXhora[cant] //cantidad de unidades producidas por hora
int limprod //limite de unidades de produccion
//terminan datos del problema
int ingresos //dinero ganado en la cantidad de horas fijada en horas
int ingXhora[cant] //ingreso por hora de produccion
int indices[cant]
int limhoras[cant] //limite de produccion pero considerado en horas
//suponiendo que el limite en unidades es multiplo
//de la cantidad de unidades producidas por hora
for i = 1 to cant
ingXhora[i] = precXhora[i] * uniXhora[i]
indices[i] = i
limhoras[i] = limprod[i] / uniXhora[i]
rof
//se ordena de forma descendente segun los valores de ingXhora
//al arreglo indices, de esta forma, para acceder al i-esimo elemento
//ordenado de ingXhora se escribe ingXhora[indices[i]]
ordena(ingXhora,indices)
for i = 1 to cant
if horas >= limhoras[i]
horas = horas - limhoras[i]
ingresos = ingresos + limprod[i] * precXuni[i]
else
ingresos = ingresos + horas * precXuni[i]
break
fi
rof
show ingresos
No es mucho trabajo pasarlo a vb, pero cualquier problema avisa.
Saludos