History Matching & "Homemade Crutches"

Последнее сообщение
oilman007 38 12
Июл 11

Здравствуйте!

Автоадаптация тема уже не новая. Обсуждались существующие пакеты...

Но! У меня есть желание написать самому программу для этого.

Хотелось бы узнать Ваши мысли на этот счет.

Было бы не плохо почитать статьи и т.п. на эту тему. Может кто подкинет ссылку.

Можно так же поделиться своим опытом в этом деле.

Спасибо!

RomanK. 2178 14
Июл 11 #1

Мнение какое? Опытом могу поделится. А что надо то?

oilman007 38 12
Июл 11 #2

RomanK. пишет:

Мнение какое?

в этом направлении стои работать или ни чего интересней FronSim'a(хотя я его не знаю) придумать почти не реально

 

 

RomanK. пишет:

Опытом могу поделится. А что надо то?

Интересуют алгоритмы в основном.

Какие параметры программы правили? Какое кол-во итераций? Какой итог работы программы?..

 

RomanK. 2178 14
Июл 11 #3

Работать над этим направлением ещё долго и долго.

Что почитать? Всевозможные алгоримты оптимизации, симплекс-методы, градиентные методы, генетические алгоритмы. Благо это все несложно и в обилии. Эти алгоритмы никак не связаны с гидродинамикой, а работают с моделью как с черным ящиком. В этом их самый серьезный минус.

Они бестолковые.

Какие параметры? Любые параметры

Количество итераций? Все равно, не в этом дело.

Какой итог? Разный.

oilman007 38 12
Июл 11 #4

RomanK. пишет:

Опытом могу поделится.

Можно поподробней?Laughing

oilman007 38 12
Июл 11 #5

RomanK. пишет:

... Всевозможные алгоримты оптимизации, симплекс-методы, градиентные методы, генетические алгоритмы. Благо это все несложно и в обилии. Эти алгоритмы никак не связаны с гидродинамикой, а работают с моделью как с черным ящиком. В этом их самый серьезный минус.

Они бестолковые.

...

Есть ли идеи как сделать их "толковыми"?

 

В ходе адаптации моделист правит параметрв исходя из какой то логики. Так?

Если принять это за аксиому :), то эту логиуку можно заложить в программу...

 

RomanK. 2178 14
Июл 11 #6

Идеи конечно есть. Тешу надеждой завершить диссертацию

oilman007 38 12
Июл 11 #7

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

Написано в С++. Блок схему не стал состовлять. Извините.:)

Прошу отнестись весьма критически.

Очень буду рад любым дополнениям, исправлениям, советам.

 

  1. class Model
  2. {
  3. public:
  4.   int quantWells;
  5.   int quantIter;
  6.   bool wellsRateIsNotBad();
  7.   bool wellsRateIsGood();
  8.   bool wellsRpIsNotBad ();
  9.   bool wellsRpIsGood ();
  10.   bool wellBhpIsGood (int well);
  11.   viod coarseActionForRateMatch();
  12.   void actionForAqua();
  13.   void fineActionForRateMatch();
  14.   viod actionForBhpMatch(int well);
  15.   //...
  16. };
  17. Model model;
  18. for( int qi=0;  ( !model.wellsRateIsGood() ||
  19.                   !model.wellsRpIsGood()  ||
  20.                   !model.wellsBhpIsGood()  )  &&
  21.                    qi < quantIter ;   ++qi)  {       //start
  22.   if ( model.wellsRateIsNotBad() &&
  23.        model.wellsRpIsNotBad()   ) {
  24.     if ( !model.wellsRateIsGood() &&
  25.          !model.wellsRpIsGood()   )
  26.         model.fineActionForRateMatch();
  27.     else
  28.       for( int well=0; well < model.quantWells ; ++well )
  29.         if( !model.wellBhpIsGood(well) )        model.actionForBhpMatch(well);
  30.   }else if ( !model.wellsRateIsNotBad()  ) {
  31.     model.coarseActionForRateMatch();
  32.   }else {
  33.     model.actionForAqua();
  34.   }
  35. }//finish

 

RomanK. 2178 14
Июл 11 #8

Ну, допустим. Пусть так.

Гоша 1199 15
Авг 11 #9

oilman007 пишет:

в этом направлении стои работать или ни чего интересней FronSim'a(хотя я его не знаю) придумать почти не реально

 

Интересуют алгоритмы в основном.

Какие параметры программы правили? Какое кол-во итераций? Какой итог работы программы?..

 

FrontSim - не средство автоматизированной адаптации, а симулятор.

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

Бестолковость? Да, конечно, так все и останется еще долго (даже если кто-нибудь сошьет воедино оптимизатор и симулятор). Машина толковой сама по себе не станет, просто увеличивается "скорость молотилки".

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

marsel331 64 13
Авг 11 #10

Гоша пишет:

FrontSim - не средство автоматизированной адаптации, а симулятор.

 

FrontSim - симулятор линий тока. Тут, наверно, подразумевался SimOpt... 

VIT 1124 15
Авг 11 #11

Не существует даже алгоритма нахождения всех корней произвольно заданного уравнения с одной переменной в общем виде, а вы "автоматическая адаптация" :-)

Вот некоторые из причин почему никто еще не создал чего-то выдающегося в этой сфере:

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

- возможны не монотонные изменения входных параметров, например наличие разломов, выклинивания и т.д.

- часто присутствует противоречивость исходных данных, просто мы не всегда знаем об этом (где откуда что добывается и куда закачивается)

- пространство решений огромно по сравнению с количеством вариантов которые мы можем просчитать. Это как научить играть в шахматы компьютер делающий одну операцию в секунду

Существующие пакеты обычно не ставят целью найти глобальное правильное решение, только помочь инженеру. В чем их и польза. Мне кажется перспективным и мало проработанным направлением может быть поиск локальных решений в заданных условиях. Например поиск непроводящих разломов, решение аквифера по продуктивности и объему, что нибудь со скважинами там типа разделения добычи по пластам. Такие задачи могут быть по силам для авто-адаптаторов.

RomanK. 2178 14
Авг 11 #12

Меня раздражает остутствие в программах-автоадаптаторах физического наполнения. Это просто решатели уравнений (и то не факт что при заданных параметрах ты найдешь ответ, не факт).

Поэтому использовать их нужно для физически понятных человеку задач. То есть: сам знаешь что - програмка докручивает ответ до более точного. Но фокус такой, что гидродинамику знать точное значение нет нужды, он сам с двух-трех прогонов "поставит" нужное значение. Поэтому и ценность такого рода софта сомнительная.

Гораздо больший интерес вызывает физически наполненные автоадаптаторы...которые на словах я могу объяснить как работают, но не слышал о реализации.

oilman007 38 12
Авг 11 #13

RomanK. пишет:

Гораздо больший интерес вызывает физически наполненные автоадаптаторы...которые на словах я могу объяснить как работают, но не слышал о реализации.

Можете объяснить?..

Объясните.

oilman007 38 12
Авг 11 #14

RomanK. пишет:

...

Поэтому использовать их нужно для физически понятных человеку задач. То есть: сам знаешь что - програмка докручивает ответ до более точного. Но фокус такой, что гидродинамику знать точное значение нет нужды, он сам с двух-трех прогонов "поставит" нужное значение. Поэтому и ценность такого рода софта сомнительная.

...

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

RomanK. 2178 14
Авг 11 #15

Цена ему 0.00 RUR (конечно больше, но я не виноват, что оптимизирующие пакеты выкладывают в свободный доступ). Наберусь терпения, и расскажу как один такой пакет можно прикрутить к ECLIPSE за просто так.

AlNikS 878 14
Авг 11 #16

Среди оптимизационных алгоритмов есть эвристические - это такие, которые находят не самое оптимальное решение, а "одно из более-менее хороших" путем отсечения "предположительно ложных путей", существенно ускоряя время расчета. Основная идея таких алгоритмов - берется начальное допустимое решение, затем итерационно, исходя из какой-то логики (куда можно заложить то, что вы называете физической основой), выбирается следующее допустимое решение в некоторой "окрестности", которое "чуть-чуть получше" и т.д. "пока не надоест". При этом не перебираются все подряд варианты. Возможно включение случайных скачков к какому-либо похожему допустимому решению, но не обязательно более лучшему. Ну и всякие другие фишки. Именно в эвристику ИМХО можно заложить физическую основу. А т.к. у нас погрешности туда-сюда в 10%, то то что решение не совсем оптимальное, никак не повлияет.

AGA 758 10
Фев 12 #17

У меня был опыт работы с "автоадаптаторами". Как мне показалось, основная проблема в том, что все сводится к типичной "молотилке" моделей. Очень тяжело оценить математически, что есть садаптированная модель.

Да, когда 10-20 скважин в модели можно еще что-то внятное сделать, но когда у тебя в модели over 100 скважин тут уже вряд ли что-то достойное получится.

ИМХО, пока не придумают первое подобие искусственного интелекта, вся это автоадаптация просто игрушка. Быстрее будет сделать руками.

 

Гоша 1199 15
Фев 12 #18

AGA пишет:

Очень тяжело оценить математически, что есть садаптированная модель.

Как раз математически все просто, построил прогнозы и сравнил с фактом.  

Тяжело - наступить на горло собственной песне и признать, что модель совсем не "садаптирована" по итогам N дней работы...

AGA 758 10
Фев 12 #19

Я не буду спорить - соль в том, что мозги соображают гибче, чем работает программа.

Авто-подход хорош для простого перебора некоторых параметров для первых приближений.

К счастью, работа инженера-гидродинамика, пока что не заменима машиной и это хорошо =D

panchik 215 11
Фев 12 #20

AGA пишет:

К счастью, работа инженера-гидродинамика, пока что не заменима машиной и это хорошо =D

"Гидродинамика" заменить машиной не проблема. С инженером по разработке месторождений все гораздо сложнее.

AGA 758 10
Фев 12 #21

Если не проблема, покажите,  где это было сделано? Cool

panchik 215 11
Фев 12 #22

AGA пишет:

Если не проблема, покажите,  где это было сделано? Cool

Нет.

И.Ф. 22 12
Апр 12 #23

oilman007 пишет:

...

Очень буду рад любым дополнениям, исправлениям, советам.

...

Собственно задача (полу)автоматической адаптации включает 3 пункта:

1) Параметризация модели - т.е. задаем, какие параметры будем менять (напр. множители проводимости, пор. объема и проч.).

Эта часть нетривиальна и требует хорошего понимания каждого конкретного м-рождения. И вообще опыта.

2) Задание целевой функции - т.е. задаем, как будет количественно отличаться хорошая модель от плохой.

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

3) Задание алгоритма оптимизации, который будет минимизировать заданную целевую функцию, меняя указанные параметры.

Опять же это нетривиальная часть, т.к. нет универсальных алгоритмов. Из наиболее применяемых можно указать 2 группы:

а) Генетические, Имитация отжига, Метод роя частиц и проч. стохастические поделки. Их плюс - возможность избегать застревания в локальных минимумах целевой функции. Также некоторые алгоритмы позволяют находить не одну садаптированную модель, а некоторое их множество (ансамбль), что полезно для учета неопределенностей модели. Еще плюс - к этим алгоритмам легко прикручивается симулятор, т.к. здесь нам требуются только значения целевой функции (никаких градиентов). Минус таких алгоритмов - небольшое число параметров, которое можно задать - в диапазоне 10 - 100 штук. К тому же для адаптации потребуется прогон нескольких тысяч вариантов модели, т.о. модель должна быть небольшой.

б) Градиентные методы (Напр. метод Ньютона с ограничением шага. Собственно, таковой метод и используется в SimOpt). Плюс - можно брать много параметров (сотни, возможно и больше). Минус - возможность застревания в лок. минимумах. Еще минус - для работы таких алгоритмов нужно вычислять градиенты (и еще желательно гессианы) целевой функции. По соображениям экономии времени делать это надо напрямую в симуляторе, т.е. на руках должны быть, к примеру коды симулятора, или симулятор, который открыто выдает пользователю градиенты. Зато сходятся градиентные методы на порядки быстрее всяких генетических и проч.

в) есть еще методы с фильтрами Кальмана, но по ним много сказать не могу.

mne70let 79 12
Июн 12 #24

И.Ф. пишет:

3) Задание алгоритма оптимизации, который будет минимизировать заданную целевую функцию, меняя указанные параметры.

Опять же это нетривиальная часть, т.к. нет универсальных алгоритмов. Из наиболее применяемых можно указать 2 группы:

а) Генетические, Имитация отжига, Метод роя частиц и проч. стохастические поделки. Их плюс - возможность избегать застревания в локальных минимумах целевой функции. Также некоторые алгоритмы позволяют находить не одну садаптированную модель, а некоторое их множество (ансамбль), что полезно для учета неопределенностей модели. Еще плюс - к этим алгоритмам легко прикручивается симулятор, т.к. здесь нам требуются только значения целевой функции (никаких градиентов). Минус таких алгоритмов - небольшое число параметров, которое можно задать - в диапазоне 10 - 100 штук. К тому же для адаптации потребуется прогон нескольких тысяч вариантов модели, т.о. модель должна быть небольшой.

б) Градиентные методы (Напр. метод Ньютона с ограничением шага. Собственно, таковой метод и используется в SimOpt). Плюс - можно брать много параметров (сотни, возможно и больше). Минус - возможность застревания в лок. минимумах. Еще минус - для работы таких алгоритмов нужно вычислять градиенты (и еще желательно гессианы) целевой функции. По соображениям экономии времени делать это надо напрямую в симуляторе, т.е. на руках должны быть, к примеру коды симулятора, или симулятор, который открыто выдает пользователю градиенты. Зато сходятся градиентные методы на порядки быстрее всяких генетических и проч.

в) есть еще методы с фильтрами Кальмана, но по ним много сказать не могу.

Имитация отжига в пункте а) заинтересовала

AlNikS 878 14
Июн 12 #25

Ну не подобрали лучше перевода для слова "annealing". ЕМНИП метод и название не в России придуманы.

karakurt2 94 12
Июн 12 #26

В Numerical Recipes есть глава про subj. Да и вообще, simulated annealing много где применяется. Я делал программу для картопостроения с его использованием. Решалась задача поиска оптимального расположения подписей для точечных и линейных элементов на карте.

Go to top