Añadidos endpoints de validación, organización del backend en subcarpetas y archivos y añadido el control de errores http.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
def compute_value_function(request):
|
||||
levels = request.levels
|
||||
cards = request.blank_cards
|
||||
refs = request.references
|
||||
|
||||
p, q = sorted(int(k) for k in refs)
|
||||
up, uq = refs[str(p)], refs[str(q)]
|
||||
|
||||
if len(levels) < 3:
|
||||
raise ValueError("Mínimo debe haber 3 niveles para esta funcionalidad.")
|
||||
|
||||
total_units = sum(cards[i] + 1 for i in range(p, q))
|
||||
if total_units == 0:
|
||||
raise ValueError("Las cartas no pueden generar 0 unidades.")
|
||||
|
||||
alpha = (uq - up) / total_units
|
||||
|
||||
values = [0] * len(levels)
|
||||
values[p] = up
|
||||
|
||||
for i in range(p + 1, len(levels)):
|
||||
units = sum(cards[r] + 1 for r in range(p, i))
|
||||
values[i] = up + alpha * units
|
||||
|
||||
for i in range(p - 1, -1, -1):
|
||||
units = sum(cards[r] + 1 for r in range(i, p))
|
||||
values[i] = up - alpha * units
|
||||
|
||||
return {
|
||||
"criterion_name": request.criterion_name,
|
||||
"values": {levels[i]: round(values[i], 4) for i in range(len(levels))}
|
||||
}
|
||||
|
||||
|
||||
def compute_points(request):
|
||||
result = compute_value_function(request)
|
||||
values = list(result["values"].values())
|
||||
return {"points": [{"x": i, "y": values[i]} for i in range(len(values))]}
|
||||
Reference in New Issue
Block a user