2013-08-06 2 views
2

У меня функция - не линейный (I THK), и набор переменныхзначения Минимизация для функции

S=[(x1,y1),(x2,y2)...].

Цель состоит в том, чтобы найти значение для x и y таким образом, что

sum of(max(|x-xi|,|y-yi|) for each (xi,yi) element of S is minimized and | | represents absolute value.

Я столкнулся с функцией optimize() в python, но я действительно не знаю, работает ли это для этого случая. Есть ли какой-нибудь алгоритм, который я могу запрограммировать самостоятельно, чтобы найти решение i.e x и y.

eg : S=[(1,4),(2,3),(0,1),(1,1)] 

for x=1.5 and y=2.5(and some other values as well) the function gives the minimum value : 5 
max(|1.5-1|,|2.5-4|)=1.5 
max(|1.5-2|,|2.5-3|)=0.5 
max(|1.5-0|,|2.5-1|)=1.5 
max(|1.5-1|,|2.5-1|)=1.5 
sum:5.0 
+0

Просьба указать, является ли 'S' словарем или списком. –

+1

это звучит как простая проблема регрессии, хотя вы минимизируете прямые остатки вместо квадратов остатков. Я бы использовал базовую алгебру/исчисление, чтобы свести к минимуму объективную функцию, а не взломать что-то вместе, чтобы перевести ее в грубую силу. – roippi

+0

@ Xaranke это «набор» кортежей, как он сказал и показал. – roippi

ответ

0

если «{» можно заменить на «[», это будет намного проще understand.It означает список магазин tuples.your цель состоит в том, чтобы найти минимум в (| х-хх |, | y-yi |) и суммируем минимум? Если я не ошибаюсь в вашей цели, мы можем сделать так: принять x = 5 y = 5 sum = 0 для elem in s: sum = sum + (abs (5-elem [0])> abs (5 -elem [1]) и abs (5-elem [1]) и abs (5-elem [0]))

это то, что вы хотите?

+0

эй я отредактировал вопрос – ranger

+0

, может быть, вам нужно изменить его back.i хотите использовать python для выполнения двоичного оператора, например, C.you'd лучше google. –

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