Обоснование функции поиска макс или мин и её мат доказательства
Данные представляют из себя иерархическую структуру с значениями, которая взаимодействует с весами (коэффициентами) для достижения целевого значения.
См. Вложение, в котором я попытался описать работу алгоритма на данные момент
Описание
https://habr.com/ru/articles/561128/
Фрагмент кода (пока он устраивает)
def target_value(struct):
eps = struct.get('eps')
max_sum = 0
min_sum = 0
if struct['target_sum'] is None:
leafs_values_dict = get_leafs_values_dict(tree, full_values)
leafs_values = leafs_values_dict.values()
max_value = max(leafs_values)
min_value = min(leafs_values)
max_koef = 1 - (len(leafs_values) - 1) * eps
for value in leafs_values:
if value == max_value:
max_sum += value * max_koef
else:
max_sum += value * eps
if value == min_value:
min_sum += value * max_koef
else:
min_sum += value * eps
struct['target_sum'] = max_sum * target_precent
print(f"max_sum = {max_sum}")
print(f"min_sum = {min_sum}")
return struct