2016-05-28 1 views
0

Я пытаюсь рассчитать балл, основанный на двух частях данных: процентах и ​​расстоянии. Оба они используются в ранжировании цветов.Алгоритм для создания баллов по процентам и расстоянию

Percentage может варьироваться от 0 до 100 и может быть десятичным. Фактически, большую часть времени это десятичное, а не целое число. Проценты важны, потому что это означает, что в изображении больше цвета.

Distance также может быть от 0 до 100 и также может быть десятичным. Расстояние вычисляется более сложным образом ... по существу, каждый цвет имеет истинное значение и отображаемое значение. Отображаемое значение представляет собой предварительно заданный цвет, поэтому простыми словами true_color - map_color = distance. Расстояние отличается от истинного цвета от отображаемого цвета.

Моя проблема заключается в том, как взвешивать цифры, чтобы высокий процент с меньшим расстоянием превышал высокий процент с большим расстоянием. Вот некоторые попытки, которые я сделал:

Вот как я считаю, что данные должны быть заказаны, потому что он ставит вес в процентах с учетом расстояния (точности), а не только процента.

7 percent, 0.5 distance = 140 (1st) 
4 percent, 0.02 distance = 200 (2nd) 
2 percent, 1 distance = 200 (3rd) 
10 percent, 8 distance = 125 (4th) 
10 percent, 50 distance = 125 (5th) 

Однако я продолжаю приходить с этим порядок, основанный на моей формуле:

t = 100 // max distance possible 

4 percent * (t/0.02 distance) = 20,000 
7 percent * (t/0.5 distance) = 1400 
2 percent * (t/1 distance) = 200 
10 percent * (t/8 distance) = 125 
10 percent * (t/50 distance) = 20 

Любые идеи о том, как это исправить?

+0

Это было бы подходящим? 'pct + 2 (100-dst)': самые высокие значения приходят первыми. – trincot

+0

@ trincot Я на самом деле думаю, что работает. Я правильно выполнил математику и заданные порядки. 'percent + 2 * (100 - distance)'. Если вы поместите это как ответ, я могу дать вам кредит. Благодаря! – stwhite

ответ

2

Я хотел бы предложить эту формулу:

percentage + 2 * (100 - distance) 

Если позже вы все еще нуждаетесь в регуляторах, вы можете играть немного с фактором .

Другая тактика может быть применять квадратный корень расстояния:

percentage + 20 * (10 - sqrt(distance)) 

Это сделает увеличение расстояние, имеющим больший эффект, когда расстояния мало, чем тогда, когда он уже большой , Но он помещает ваши первые два цвета в обратном порядке.

+0

Что было бы обратным варианту квадратного корня? Я только спрашиваю, поэтому я могу попробовать все три варианта в наборе результатов и посмотреть, как они упорядочиваются (хотя первое должно быть достаточно). Это скорее любопытство ... спасибо за вашу помощь! – stwhite

+1

@stwhite: «обратный» квадратный корень квадратный. Это, вероятно, не то, что вы хотите. –

+0

@JimMischel Я предполагаю, что я имел в виду, это обратное этому => «расстояние, имеющее больший эффект, когда расстояние невелико». Таким образом, расстояние меньше, когда оно мало, чем когда оно велико. Если это то же самое, что вы говорите, тогда мы можем забыть об этом, ха-ха. – stwhite

Смежные вопросы