fork download
  1. '''
  2. Разрабатывается ПО DataFlow 2.0. И, грубо говоря, оно состоит из 2 частей: Подземная и наземная. Само ПО предназначено для расчета подземной части. А для наземной части используется API РН-СИМТЕП. В БД и расчетах используются псевдодавления. Однако СИМТЕП принимает только квадраты давлений. Поэтому необходимо было использовать алгоритм, который аппроксимирует индикаторную диаграмму псевдодавлений квадратами давлений.
  3. API – это, если коротко, то интерфейс взаимодействия с приложением. Если представить приложение как черный ящик, то у нас там имеются входы (это отправляемая часть данных в API) и выходы (получаемая часть данных). Мы досконально не знаем, что там внутри происходит, однако можем иметь примерное представление о том, что будет на выходе в зависимости от входных данных.
  4. Что дается на входе: дается таблица псевдодавлений и соответствующих им дебитам по каждому пласту скважины
  5. Изначально задача была поставлена как «Найти показатели индикаторной диаграммы квадратов давлений эквивалентного пласта для скважин, работающих на несколько пластов, изначально данные в псевдодавлениях». В таком виде задача сводится к следующему: найти показатели A и B для эквивалентного пласта такие, чтобы \sum_{i=1}^{n} (Q_{i calc} - Q_{i sum})^2 \arrow min. Для решения этой задачи были использованы численные методы. Были проведены исследования возможности аппроксимации различных численных методов.
  6. Метод Ньютона – достаточно быстро сходится, однако не является стабильным
  7. Метод Левенберга-Марквардта – достаточно стабилен, однако медлителен
  8. Градиентный спуск – стабилен, но крайне медлителен
  9. Метод Гаусса-Ньютона – достаточно быстро сходится, однако качество подобного вычисления достаточно низкое (под качеством вычисления подразумевается невязка между фактическими и вычисленными значениями индикаторной диаграммы. Чем меньше невязка, тем выше качество аппроксимации)
  10. Также был использован метод, который, по сути, похож на Левенберга-Марквардта, однако более жестко выбирает на каждой итерации, каким образом сделать шаг – с помощью градиентного спуска или с помощью метода Ньютона. В методе Левенберга-Марквардта есть коэффициент, который, можно сказать, регулирует значимость между методом Ньютона и градиентным спуском. То есть, грубо говоря, мы должны это все дело достаточно долго высчитывать, что по факту и наблюдается – метод Левенберга-Марквардта, хоть и показывает достаточно хорошую сходимость, довольно значительно отстает в производительности. А в модифицированном методе Ньютона шаги градиентного спуска применяются строго тогда, когда невозможно найти невырожденный гессиан.
  11.  
  12. '''
Success #stdin #stdout 0.11s 14164KB
stdin
Standard input is empty
stdout
Standard output is empty