########################################################### # WDWR 18042 # # Planowanie produkcj w warunkach ryzyka. # # SKRYPT URUCHAMIAJACY - Metoda punktu odniesienia # # Autor: Krzysztof Rudnicki # ########################################################### ####################### # Konfiguracja modelu # ####################### model WDWR2.mod; data WDWR2_trunc.dat; option solver cplex; ############################# # Metoda punktu odniesienia # ############################# printf "\n######################################\n"; printf "### RPM solution space calculation ###\n"; printf "######################################\n"; objective RPM; param steps = 10; param stepSize {r in RATED} = (utopia[r] - nadir[r]) / (steps-1); param iteration; param iterationCount = steps*steps; set RESULTS = {1..iterationCount}; set VALUES = {"PROFIT", "RISK", "RPM"}; param result {RESULTS, VALUES}; for {i in 0..steps-1} { for {j in 0..steps-1} { let iteration := 1 + steps*i + j; let aspiration["PROFIT"] := nadir["PROFIT"] + i * stepSize["PROFIT"]; let aspiration["RISK"] := nadir["RISK"] + j * stepSize["RISK"]; printf "### %d: Solving model for aspirations: %f, %f\n", iteration, aspiration["PROFIT"], aspiration["RISK"]; solve; let result[iteration, "PROFIT"] := profit; let result[iteration, "RISK"] := risk; let result[iteration, "RPM"] := RPM; printf "Profit: %f\n", profit; printf "Risk: %f\n", risk; printf "RPM: %f\n", RPM; } } display result; printf { r in RESULTS } "%f\t%f\t%f\n", result[r,"PROFIT"], result[r, "RISK"], result[r,"RPM"] > ./result.csv ;