Задача по преобразованию двух взаимосвязанных показателей в один

 

Прошу помощи в решении задачи и выражении решения в коде. Возможно она решается легко, а я просто не знаю нужных фраз для задачи их поисковику.

Итак, имеется два показателя R и P - они измеряются в процентах, их диапазон ограничен 0 и 100. Данные показатели характеризуют один объект, поэтому допустимо производить между ними вычисления. Показатель R и P непропорционально значимы, но просто повесить коэффициент на один из них и потом их перемножить будет, думаю не верно. Нужно преобразовать эти два значения в один показатель, получив по возрастанию показателя лучшее значение, при этом прирост желательно должен быть линеен.

Если представить в виде графика все возможные точки, где по оси x - P, а по оси y - R, а потом разделить этот график на 4 равные части, то можно охарактеризовать каждый квадрат по значимости - верхний правый самый важный (хороший результат) - 1 место, потом идет нижний правый - 2 место, потом следует левый верхний - 3 место и наконец нижний левый - 4 место. В итоговом показатели эти квадраты должны быть размещены соответственно по убыванию -- от 0% до 25% - 4 квадрат, а от 75% до 100% первый квадрат. Соответствующую разбивку возможно следует сделать и в подгруппе. Тогда графически результат будет кривая от 0 до 100 с коэффициентом ускорения 0,5. По идеи, тогда надо каждый квадрат преобразовать так, чтобы он умещался в диапазон 1/4 от итоговой функции, а для этого нужно выполнить какое то приближение к функции, с приемлемым шагом значения по x и y, допустим с шагом 10 - [0;10];[0;20];[0;30] ... [50;10];[50;20];[50;30]. А дальше не понимаю, как это все преобразовать, по идеи наклон общей функции известен, можно представить каждое значение по y в диапазоне 10 как прямую, и тогда задача в последовательном наклоне каждого такого отрезка и присоединение его к уже наклоненному. Есть ли здравый смысл в этом и что делать дальше - не знаю - жду ваших мнений!

 

Если просто  сложить и поделить на 2 не подходит, тогда применить теорему Пифагора.

 
Попробуйте с конца, в эксель задайте три столбца R, P и V - ваше желаемое линейное  результирующее значение. Экселем найдите коэффициенты abc(V=a+b*R+c*P. Варианты гляньте в ютубе).
 
Dmitry Fedoseev:

Если просто  сложить и поделить на 2, тогда применить теорему Пифагора.

Может я что-то не понимаю, но если сложить 10(R)+60(P) и 60(R)+10(P) и поделим на 2, то получим 35 в обоих случаях, но первый случай относится к 2 группе по значимости, а второй случай к третей. Что предлагаете делать дальше?

 
Unicornis:
Попробуйте с конца, в эксель задайте три столбца R, P и V - ваше желаемое линейное  результирующее значение. Экселем найдите коэффициенты abc(V=a+b*R+c*P. Варианты гляньте в ютубе).

Это надо надстройку использовать "Поиск решения"? Если не трудна, сбросьте такой эксель файл с парой строк - остальное я добавлю, если метод рабочий. Однако, как то сомневаюсь, что тут коэффициентами можно обойтись - скорей нужна матрица коэффициентов...

 
Aleksey Vyazmikin:

Может я что-то не понимаю, но если сложить 10(R)+60(P) и 60(R)+10(P) и поделим на 2, то получим 35 в обоих случаях, но первый случай относится к 2 группе по значимости, а второй случай к третей. Что предлагаете делать дальше?

Если значимость разная, то на коэффициенты умножать.

Вообще, это задача для методов нечеткой логики.

 
Dmitry Fedoseev:

Если значимость разная, то на коэффициенты умножать.

Вообще, это задача для методов нечеткой логики.

Самый простой вариант - каждую группа разделить путем прибавления 100,200,300,400 - а внутри этих групп оставить среднее значение, но такой вариант мне не очень нравится.

Логика нужна четкая, что бы её можно было запрограммировать :) 

Думаю, что можно поделить каждый квадрат из 4 ещё на 25 квадратов, и каждый этот квадрат уже пронумеровать согласно его значимости, если значение попадает в этот квадрат, то выдаем номер квадрата... значение можно процентировать по числу квадратов, как считаете? 

 
Aleksey Vyazmikin:

Самый простой вариант - каждую группа разделить путем прибавления 100,200,300,400 - а внутри этих групп оставить среднее значение, но такой вариант мне не очень нравится.

Логика нужна четкая, что бы её можно было запрограммировать :) 

Думаю, что можно поделить каждый квадрат из 4 ещё на 25 квадратов, и каждый этот квадрат уже пронумеровать согласно его значимости, если значение попадает в этот квадрат, то выдаем номер квадрата... значение можно процентировать по числу квадратов, как считаете? 

Она (нечеткая логика) как бы только называется нечеткой, на самом деле там все четко и все программируется.

Не совсем понял  про 100, 200, 300. Но кажется вы один показатель используется как Х, другой как Y и смотрите в какой координатный угол попал итоговый вектор. Можно не делить координатную плоскость еще на секции, а просто посчитать угол вектора. Любой вектор можно записать через проекции на координатные оси, а можно через его длину и угол наклона (полярные координаты).

 
Dmitry Fedoseev:

Она (нечеткая логика) как бы только называется нечеткой, на самом деле там все четко и все программируется.

Да это я пошутил. Просто это область в которой надо разбираться дополнительно, и решение не будет лёгким и очевидным.

Dmitry Fedoseev:

Не совсем понял  про 100, 200, 300.

В зависимости от группы прибавлять максимальное значение 100 умноженное на номер группы (или наоборот перенумеровать), тогда результат 35 будет иметь значение 235 и 335.

Dmitry Fedoseev:

Но кажется вы один показатель используется как Х, другой как Y и смотрите в какой координатный угол попал итоговый вектор.

Так и делаю.

Dmitry Fedoseev:

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

Хмм... т.е. предлагаете из точки [50;50] получить угол наклона от 0 до условно 360 - это вариант...

Как это посчитать\запрограммировать?

Но так мы все равно получим вектор, а этого мало... но если вектор помножить на длину отрезка... хм... кажется что это не верное решение.
 
Угол через арктангенс посчитать.
 
Aleksey Vyazmikin:

Прошу помощи в решении задачи и выражении решения в коде. Возможно она решается легко, а я просто не знаю нужных фраз для задачи их поисковику.

Итак, имеется два показателя R и P - они измеряются в процентах, их диапазон ограничен 0 и 100. Данные показатели характеризуют один объект, поэтому допустимо производить между ними вычисления. Показатель R и P непропорционально значимы, но просто повесить коэффициент на один из них и потом их перемножить будет, думаю не верно. Нужно преобразовать эти два значения в один показатель, получив по возрастанию показателя лучшее значение, при этом прирост желательно должен быть линеен.

Если представить в виде графика все возможные точки, где по оси x - P, а по оси y - R, а потом разделить этот график на 4 равные части, то можно охарактеризовать каждый квадрат по значимости - верхний правый самый важный (хороший результат) - 1 место, потом идет нижний правый - 2 место, потом следует левый верхний - 3 место и наконец нижний левый - 4 место. В итоговом показатели эти квадраты должны быть размещены соответственно по убыванию -- от 0% до 25% - 4 квадрат, а от 75% до 100% первый квадрат. Соответствующую разбивку возможно следует сделать и в подгруппе. Тогда графически результат будет кривая от 0 до 100 с коэффициентом ускорения 0,5. По идеи, тогда надо каждый квадрат преобразовать так, чтобы он умещался в диапазон 1/4 от итоговой функции, а для этого нужно выполнить какое то приближение к функции, с приемлемым шагом значения по x и y, допустим с шагом 10 - [0;10];[0;20];[0;30] ... [50;10];[50;20];[50;30]. А дальше не понимаю, как это все преобразовать, по идеи наклон общей функции известен, можно представить каждое значение по y в диапазоне 10 как прямую, и тогда задача в последовательном наклоне каждого такого отрезка и присоединение его к уже наклоненному. Есть ли здравый смысл в этом и что делать дальше - не знаю - жду ваших мнений!

У вас функция получается разрывной в центре - предел при стремлении к центру по первому квадрату будет не меньше 75, а по четвёртому - не более 25.

Причина обращения: