IIC2613 / Syllabus

Repositorio oficial Inteligencia Artificial 2020-2
7 stars 1 forks source link

Maximize en Parte 4 #20

Closed raimundomartinez closed 3 years ago

raimundomartinez commented 4 years ago

Hola. Tengo una duda con respecto a una línea del código bodega.lp.

maximize{1,R,T : final(R,T)}.

¿Porque se le incluye ese "1" al principio? ¿Que hace? Según yo debería solo ser

maximize{R,T : final(R,T)}.

La segunda versión funciona, pero me da una solución menos óptima, con la primera línea se resuelve el problema en 13 pasos mientras que con la segunda en 15. Agradeceria mucho si me explicaran que pasa por detrás porque llevo harto rato pegado con la pregunta.

valerojasm commented 4 years ago

Hola Raimundo!

La diferencia es que uno optimiza la cantidad de instancias y otro la suma entre estas instancias respectivamente, esto porque #sum{1, X : predicado(X)} es análogo a #count{X: predicado(X)}. Dicho esto, si optimizáramos #maximize{1, X: predicado(X)}, estaríamos buscando que la cantidad de X que cumplen con predicado(X) sea máxima dadas las restricciones del problema - mientras que si hacemos #maximize{X: predicado(X)}, estamos buscando que la suma de los X de los que depende el predicado(X) en el modelo sea máxima. En el libro puedes encontrar más ejemplos de esto!

Saludos!

raimundomartinez commented 4 years ago

Gracias!