Comments 7
Вы уверены, что нашли глобальные минимумы?
0
Unconstrained minimization docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.minimize.html
0
Нет. Смотрите сюда, где написано, что глобальные максимумы/минимумы ищутся c помощью:
А minimize использует (см. Вашу же ссылку)
которые используют (численно вычисляемые) градиенты, якобианы и пр., т.е. ищут локальные максимумы/минимумы.
Другое дело, что могут быть посторонние соображения, что минимум/максимум в задаче единственный, или что начальное положение близко к глобальному экстремуму.
Global (brute-force) optimization routines (e.g. basinhopping, differential_evolution)
А minimize использует (см. Вашу же ссылку)
one of BFGS, L-BFGS-B, SLSQP, depending if the problem has constraints or bounds.
которые используют (численно вычисляемые) градиенты, якобианы и пр., т.е. ищут локальные максимумы/минимумы.
Другое дело, что могут быть посторонние соображения, что минимум/максимум в задаче единственный, или что начальное положение близко к глобальному экстремуму.
0
Во 2ой ссылке дано аналитическое решение, дающее глобальный минимум:
x(i+1) = x(i) * c, где с = (P_конечное / P_начальное) ^ (1/n) (краевые условия x(0) = P_начальное, x(n) = P_конечное).
Доказывается в несколько строк (от противного):
Заметим, что надо минимизировать E = T * ( (x(1) / x(0) — 1) + (x(2) / x(1) — 1) +… + (x(n) / x(n-1) — 1), где T = m * R * T * gammma / (gamma -1) не зависит от x, т.е. достаточно искать минимум F(x) = x(1) / x(0) + x(2) / x(1) +… + x(n) / x(n-1)
Пусть x(0), x(1),…, x(n) — оптимальный набор
Если существует i: sqrt(x(i) * x(i+2)) != x(i+1), то набор
x(0), x(1),…, x(i), sqrt(x(i) * x(i+2)), x(i+2),… x(n) выгоднее, чем
x(0), x(1),…, x(i), x(i+1), x(i+2),… x(n) (что является противоречием).
Почему выгоднее? Потому что выражение y/A + B/y >= 2*sqrt(y/A * B/y) = 2sqrt(A*B) достигает минимума при y = sqrt(A * B) (здесь A = x(i), y = x(i+1), B=x(i+2)).
Т.е. в оптимальном решении sqrt(x(i) * x(i+2)) == x(i+1), или же x(i+1)/x(i) == x(i+2)/x(i+1).
Непонятно, зачем автор впихнул сюда scipy и зачем ему (или злому модеру) было тереть предыдущий мой комент.
x(i+1) = x(i) * c, где с = (P_конечное / P_начальное) ^ (1/n) (краевые условия x(0) = P_начальное, x(n) = P_конечное).
Доказывается в несколько строк (от противного):
Заметим, что надо минимизировать E = T * ( (x(1) / x(0) — 1) + (x(2) / x(1) — 1) +… + (x(n) / x(n-1) — 1), где T = m * R * T * gammma / (gamma -1) не зависит от x, т.е. достаточно искать минимум F(x) = x(1) / x(0) + x(2) / x(1) +… + x(n) / x(n-1)
Пусть x(0), x(1),…, x(n) — оптимальный набор
Если существует i: sqrt(x(i) * x(i+2)) != x(i+1), то набор
x(0), x(1),…, x(i), sqrt(x(i) * x(i+2)), x(i+2),… x(n) выгоднее, чем
x(0), x(1),…, x(i), x(i+1), x(i+2),… x(n) (что является противоречием).
Почему выгоднее? Потому что выражение y/A + B/y >= 2*sqrt(y/A * B/y) = 2sqrt(A*B) достигает минимума при y = sqrt(A * B) (здесь A = x(i), y = x(i+1), B=x(i+2)).
Т.е. в оптимальном решении sqrt(x(i) * x(i+2)) == x(i+1), или же x(i+1)/x(i) == x(i+2)/x(i+1).
Непонятно, зачем автор впихнул сюда scipy и зачем ему (или злому модеру) было тереть предыдущий мой комент.
0
Ага, тоже только что в Maple проверил. Надо бы еще проверить, не может ли эта величина c формально быть отрицательной при четном/нечетном количестве ступеней? Чтобы последовательность давления была типа +2, -4, +8, -16… А что, автор же unconstrained минимизацию использует? :)
0
Даже проще: F(x) = x(1) / x(0) + x(2)/x(1) +… + x(n) / x(n-1) >=
n * ( (x(1) / x(0)) * (x(2) / x(1)) *… * (x(n) / x(n-1)) ^ (1/n) = n * (x(n) / x(0)) ^ (1/n)
(среднее арифметическое >= среднее геометрическое)
Равенство и минимум при x(1)/x(0) = x(2)/x(1) =… = x(n) / x(n-1).
n * ( (x(1) / x(0)) * (x(2) / x(1)) *… * (x(n) / x(n-1)) ^ (1/n) = n * (x(n) / x(0)) ^ (1/n)
(среднее арифметическое >= среднее геометрическое)
Равенство и минимум при x(1)/x(0) = x(2)/x(1) =… = x(n) / x(n-1).
0
Sign up to leave a comment.
Оптимизация многоступенчатых компрессоров по энергозатратам на адиабатическое сжатие газа