
5ый семестр / 8. Системный анализ (complete)_1 / SA / не мое / ТС и СА_гр.447_2019 / Учебные пособия / СЕРГЕЕВ_МАКЕТ
.pdf'1.4. НачальныезначениявекторапараметровAL
ALo(1) = 11 ALo(2) = 0.22
ALo(3) = 1.6
' 1.5. ЗаданиепеременныхдляадаптацииИСИ
kr = 0.0025 'Задание значения управляющего параметра h = 1 'параметр шага в методе Гаусса–Ньютона
' Задание начальных значений параметров модели AL = ALo
AL(1) = ALo(1) AL(2) = ALo(2)
AL(3) = ALo(3)
'2. Алгоритм синтеза оптимальных оценок параметров КВД с использованием метода
'Гаусса–Ньютона
i2 = 0 '- переменная внешнего цикла
Do ' Условный оператор для уточнения вектора параметров AL(i), i = 1, 2, 3
' 2.1. Формированиематрицычастныхпроизводных– D(n,m) моделидобычинефти
For i = 1 To n
d(i, 1) = Exp(-AL(2) * i) * Exp(AL(3) * Log(i))
d(i, 2) = -AL(1) * i * Exp(-AL(2) * i) * Exp(AL(3) * Log(i))
d(i, 3) = AL(1) * AL(3) * Exp(-AL(2) * i) * Exp((AL(3) – 1) * Log(i)) Next i
' 2.2. Транспонированиематрицычастныхпроизводных– D(n,m)
For i = 1 To m For j = 1 To n
DT(i, j) = d(j, i) Next j
Next i
'2.3. ВычислениепроизведенияматрицDTD
For i = 1 To m For j = 1 To m
DTD(i, j) = 0 Next j
Next i
For i = 1 To m For j = 1 To m
For k = 1 To n
DTD(i, j) = DTD(i, j) + DT(i, k) * d(k, j) Next k
Next j Next i
181
' 2.4. Формированиевектора-строкиDs
For i = 1 To m DTs(1, i) = 0
Next i
For i = 1 To T
DTs(1, 1) = DTs(1, 1) + Exp(-AL(2) * i) * Exp(AL(3) * Log(i))
DTs(1, 2) = DTs(1, 2) + (-AL(1) * i * Exp(-AL(2) * i) * Exp(AL(3) * Log(i)))
DTs(1, 3) = DTs(1, 3) + AL(1) * AL(3) * Exp(-AL(2) * i) * Exp((AL(3) – 1) * Log(i)) Next i
'2.5. ТранспонированиевектораDs
For i = 1 To m
Ds(i, 1) = DTs(1, i) Next i
' 2.6. РасчетматрицычастныхпроизводныхDTsDs
For i = 1 To m For j = 1 To m
DTsDs(i, j) = 0 Next j
Next i
For i = 1 To m For j = 1 To m
DTsDs(i, j) = DTsDs(i, j) + Ds(i, 1) * DTs(1, j) Next j
Next i
'2.7. ФормированиематрицыпланированияИСИA = DTD+ kr*DTsDs
For i = 1 To m For j = 1 To m
A(i, j) = DTD(i, j) + kr * DTsDs(i, j) Next j
Next i
'2.8. Формированиевектора-столбцаневязокмеждуфактическимии ' модельнымизначениямидобычинефтиE
For i = 1 To n
F(i) = AL(1) * Exp(-AL(2) * i) * Exp(AL(3) * Log(i)) E(i, 1) = y(i) – F(i)
Next i
'2.9. Формированиевектора-столбцаDTE
For i = 1 To m For k = 1 To n
DTE(i, 1) = DT(i, k) * E(k, 1) Next k
Next i
182
'2.10. Вычислениеневязкимеждусреднейэкспертнойоценкойизвлекаемыхзапасов ' ифактическимиизвлекаемымизапасамиs – Es = MS_– s
s = 0
For i = 1 To T
s = s + AL(1) * Exp(-AL(2) * i) * Exp(AL(3) * Log(i)) Next i
Es = MS_ – s
'2.11. Вычислениевектора-столбцаDTsEs
For i = 1 To m
DTsEs(i, 1) = DTs(1, i) * Es Next i
'2.12. ВычислениевектораправыхчастейИСМ( B = DTE+kDTsEs)
For i = 1 To m
B(i) = kr * DTsEs(i, 1) + DTE(i, 1) Next i
' 2.13. РешениеСЛУпосхемеХолецкого(процедураELS_hol_1).
Call ELS_hol_1(B1, C, Y1, A, B, DeltaAL, m) 'Расчет функционала качества QLo на шаге L-1 i1 = 1
QLh(i1) = 0
For i = 1 To n
QLh(i1) = QLh(i1) + (y(i) – F(i)) * (y(i) – F(i)) Next i
' 2.14. ОпределениевекторапараметровAL(L) = AL(l-1)+h*Delta AL(L-1)
For i = 1 To m ALh(i) = AL(i)
Next i
' 2.15. ПроверкаусловиясходимостиметодаГаусса–Ньютона
Do
For i = 1 To m
AL(i) = ALh(i) + h * DeltaAL(i) Next i
'Расчет функционала качества QL1 на шаге L QLh(i1 + 1) = 0
For i = 1 To n
F(i) = AL(1) * Exp(-AL(2) * i) * Exp(AL(3) * Log(i)) QLh(i1 + 1) = QLh(i1 + 1) + (y(i) – F(i)) * (y(i) – F(i))
Next i
' Дробление шага i1 = i1 + 1
h = h / 2
' Проверка условия сходимости процедуры Гаусса–Ньютона
Loop While (QLh(i1 – 1) > = QLh(1)) And (i1 < = 10) i2 = i2 + 1
183
QL(i2 – 1) = QLh(1) QL(i2) = QLh(i1 – 1)
' Проверка условия точности оценки параметров AL Loop While ((QL(i2 – 1) – QL(i2)) / QL(i2) > = 0.1) And (i2 < = 3)
'3. Расчет точности оценок и вывод результатов
'3.1. РасчетоценкиизвлекаемыхзапасовприAL = AL*
SAL = 0
For i = 1 To T
SAL = SAL + AL(1) * Exp(-AL(2) * i) * Exp(AL(3) * Log(i)) Next i
'Расчетотносительнойошибкиоценкиизвлекаемыхзапасоввзависимостиотчислалетразработки
DeltaSAL = Abs((SAL – S_) / S_)
'3.2 РасчетпрогнозадобычинефтинаL лет
YL(n + L) = AL(1) * Exp(-AL(2) * (n + L)) * Exp(AL(3) * Log(n + L))
' Расчет относительной ошибки прогнозных значений добычи нефти
DeltaYL1 = ALy(1) * Exp(-ALy(2) * (n +L)) * Exp(ALy(3) * Log(n + L)) DeltaYL = Abs((YL(n + L) – DeltaYL1) /DeltaYL1)
Next n ‘ окончание цикла по числу лет истории разработки месторождения
End Sub
_______________________________________________________________________________
' Процедура решения СЛУ методом Холецкого
Private Sub ELS_hol_1(B1() As Single, C() As Single, Y1() As Single, A() As Single, B() _ As Single, DeltaAL() As Single, m As Integer)
For i = 1 To m B1(i, i) = 1
C(i, 1) = A(i, 1) Next i
For i = 2 To m
B1(1, i) = A(1, i) / A(1, 1) Next i
'Формирование треугольных матриц С и В1 For j = 2 To m
'Формирование нижней треугольной матрицы С
For i = j To m sum = 0 For k = 1 To j – 1 sum = sum + C(i, k) * B1(k, j) Next k
C(i, j) = A(i, j) – sum Next i
'Формирование верхней треугольной матрицы В1 For i = j + 1 To m
sum = 0
For k = 1 To j – 1
sum = sum + C(j, k) * B1(k, i) Next k
B1(j, i) = (A(j, i) – sum) / C(j, j) Next i
184
Next j
'Прямой ход
Y1(1) = B(1) / C(1, 1) For i = 1 To m sum = 0 For k = 1 To i – 1
sum = sum + C(i, k) * Y1(k) Next k
Y1(i) = (B(i) – sum) / C(i, i) Next i
' Обратный ход
DeltaAL(m) = Y1(m)
For i = 1 To m – 1 sum = 0 For k = m – i + 1 To m
sum = sum + B1(m – i, k) * DeltaAL(k) Next k
DeltaAL(m – i) = Y1(m – i) – sum Next i
2. Текстпрограммыстатистическогомоделированияиопределения параметровинтегрированной системымоделикривойвосстановления забойногодавления
Sub Example_2_В5a()
' Описание переменных динамических массивов данных
Dim |
n As Integer |
' Число замеров КВД (nmax = Tmax*delta_t) |
Dim |
m As Integer |
' Число параметров модели КВД |
Dim |
Tmax As Integer |
' Максимальное число замеров КВД |
Dim |
delta_t As Single |
' Интервал между замерами КВД |
Dim |
T1 As Single |
' Максимальное время снятия КВД |
Dim |
m1 As Integer |
' Число экспертных оценок пластового давления |
Dim |
m21 As Integer |
' Число экспертных оценок первого параметра AL1 КВД |
Dim |
m22 As Integer |
' Число экспертных оценок второго параметров КВД |
Dim |
m23 As Integer |
' Число экспертных оценок третьего параметров КВД |
Dim |
m3 As Integer |
' Число экспертных оценок накопленной добычи жидкости |
m = 3 |
|
|
L = 3 |
|
|
T1 = 150 |
|
|
delta_t = 1 |
|
|
Tmax = Int(T1 / delta_t) m1 = |
5 |
|
m21 = 5 |
|
|
m22 = 5 |
|
|
m23 = 5 |
|
|
m3 = 2 |
|
|
For n = 1 To 15 |
' Организация цикла по числу замеров КВД |
'_______________________________________________________________________________
185
' Описание переменных и констант
ReDim y(n) As Single |
' ИмитируемыйвекторизмеренийКВД |
ReDim ALy(m) As Single |
' ТочныезначенияпараметровмоделиКВД |
ReDim AL(m) As Single |
' ОценкипараметровмоделиКВД |
ReDim ALo(m) As Single |
' НачальныезначенияпараметровмоделиКВД |
ReDim AL_(m) As Single |
' ВекторсреднихзначенийэкспертныхоценокпараметровКВД |
ReDim AL_1(m21) As Single |
' ВекторэкспертныхоценокпервогопараметраКВД |
ReDim AL_2(m22) As Single |
' ВекторэкспертныхоценоквторогопараметраКВД |
ReDim AL_3(m22) As Single |
' ВекторэкспертныхоценоктретьегопараметраКВД |
ReDim ALpo(m) As Single |
|
ReDim ALh(m) As Single |
' ВспомогательныйвекторпараметровAL придроблениишагаh |
|
' вметодеГаусса–Ньютона |
ReDim ALp(m) As Single |
' ВспомогательныйвектордляпреобразованияпараметровКВД |
ReDim ND1(Tmax) As Single |
' ВекторслучайныхвеличиндлязаданияошибокизмеренийКВД |
ReDim ND2(m1) As Single |
' Векторслучайныхвеличинвмоделипластовогодавления |
ReDim ND21(m21) As Single |
' ВекторслучайныхвеличиндлязаданияошибокпараметраКВДAL(1) |
ReDim ND22(m22) As Single |
' ВекторслучайныхвеличиндлязаданияошибокпараметраКВДAL(2) |
ReDim ND23(m23) As Single |
' ВекторслучайныхвеличиндлязаданияошибокпараметраКВДAL(3) |
ReDim ND3(m3) As Single |
' Векторслучайныхвеличинвмоделинакопленнойжидкостивскважине |
ReDim Pw_(m1) As Single |
' Векторэкспертныхоценокпластовогодавления |
ReDim Sж_(m3) As Single |
' Векторэкспертныхоценокнакопленнойжидкостивскважине |
ReDim F(n) As Single |
' ВекторзначенийвыходамоделиКВД |
ReDim Fo(n) As Single |
' ВекторзначенийвыходамоделиКВДприAL = ALo |
ReDim dFy(Tmax) As Single |
' ПроизводнаямоделиКВДповремени |
ReDim FL(Tmax) As Single |
' Векторзначенийлогарифмавмоментывремениi*delta_t,i = 1,2... |
ReDim d(n, m) As Single |
' Матрицачастныхпроизводных(ЧП) попараметраммоделиКВД |
ReDim DT(m, n) As Single |
' ТранспонированнаяматрицаЧП |
ReDim DTD(m, m) As Single |
' МатрицапланированиядлямоделиКВД |
ReDim dp(m, 1) As Single |
' ВекторЧПпопараметрамAL вмоделипластовогодавления |
ReDim DTp(1, m) As Single |
' ТранспонированныйвекторЧПdp(m,1) |
ReDim DTp1(Tmax, m) As Single |
|
ReDim DTpDp(m, m) As Single |
' Матрицачастныхпроизводныхмоделиаприорнойинформации |
|
' опластовомдавлении |
ReDim Gamma(m) As Single ' |
Индикаторная матрица в модели экспертных оценок параметров КВД |
ReDim G(m) As Single |
' Индикаторнаяматрицавмоделиэкспертныхоценокнакопленной |
|
‘ жидкости |
ReDim DS(m, 1) As Single |
' ВекторЧПпопараметрамAL вмоделинакопленнойжидкостивскважине |
ReDim DTS(1, m) As Single |
' ТранспонированныйвекторЧПDS(m) |
ReDim DSDTS(m, m) As Single ' МатрицаЧПпопараметраммоделинакопленнойжидкости |
|
ReDim Ep(n, 1) As Single |
' ВекторстолбецневязокпозабойнымдавленияЕP = P*з-Pз |
ReDim EAL_(m) As Single |
' ВекторстолбецAL_ – AL |
ReDim DTE(m, 1) As Single |
' Векторправыхчастейсистемылинейныхуравнений(СЛУ) |
ReDim DTpEp(m, 1) As Single |
|
ReDim A(m, m) As Single |
' МатрицаСЛУдляинтегрированнойсистемымоделейКВД |
ReDim B(m) As Single |
' ВекторправыхчастейСЛУдляИСМКВД |
ReDim DeltaAL(m) As Single |
' ВекторприращенийпараметровAL(m) |
|
186 |
ReDim DeltaALy(m) As Single |
' ОтносительнаяошибкаоценокпараметровКВД |
ReDim RAL(m) As Single |
' Вспомогательныйвектордляформированияаприорнойинформации |
|
' опараметрахКВДAL(m) |
ReDim Rs(m) As Single |
' Вспомогательныйвектордляформированияаприорнойинформации |
|
' онакопленнойдобыченефтиS_ |
Dim P_ As Single |
' Среднеезначениеэкспертныхоценокпластовогодавления |
Dim S_ As Single |
' Среднеезначениеэкспертныхоценокнакопленнойдобыченефти |
Dim qo As Single |
' Дебитскважиныдоееостановки |
Dim PAL As Single |
' Оценкапластовогодавления |
Dim P_ALy As Single |
' Точноезначениепластовогодавления |
Dim P_dFy As Single |
' ЗначениепластовогодавлениячерезинтегралотпроизводнойКВД |
Dim DeltaPAL As Single |
' Относительнаяошибкаоценкипластовогодавления |
Dim kr1 As Single |
' Параметррегуляризации |
Dim kr2 As Single |
' Параметррегуляризации |
Dim h As Single |
' Параметршагаh вметодеГаусса–Ньютона |
Dim QLh(15) As Single |
' Функционалкачества(дляпроверкиусловиясходимостиметодаГН) |
Dim QL(15) As Single |
' Функционалкачества(длякритерияточностиоценкипараметров) |
Dim Ep_ As Single |
' НевязкапопластовомудавлениюEp_ = P_ – P(T,AL) |
Dim Es As Single |
' НевязкапонакопленнойжидкостиEs = S_ – S(T,AL(2)) |
Dim DM(10) As Single |
' ОценкидетерминированныхмоментовКВД |
Dim DMT(10) As Single |
' ТочныезначениядетерминированныхмоментовКВД |
Dim ND(500) As Single |
' Базовыйвекторпсевдослучайныхчисел– N(0,1) |
Dim i1 As Integer |
' Числодробленияпараметраh |
Dim i2 As Integer |
' Переменнаяномерашагавметоде Гаусса–Ньютона |
'_______________________________________________________________________________
ReDim B1(m, m) As Single ' В1,С,Y1 – массивы для решения СЛУ ReDim C(m, m) As Single ' в процедуре ELS_hol_1
ReDim Y1(m) As Single ' C – нижняя треугольная матрица, B1 – верхняя треугольная матрица
'_______________________________________________________________________________
'1. Формирование интегрированной системы моделей КВД
'1.1. Формированиевекторовпсевдослучайныхчисел
'1.1.1. Формирование базового вектора ND(500) псевдослучайных чисел – N(0,1)
Randomize (78) 'Начальные значения датчика равномерных псевдослучайных величин Rnd() Rnd (-506)
For i = 1 To 500 s = 0
For j = 1 To 6 s = s + Rnd() Next j
ND(i) = (s – 3) * 1.4 Worksheets(Лист 28).Cells(i, 32) = ND(i) Next i
'1.1.2. Формирование вектора случайных величин для имитации ошибок измерений КВД
For i = 1 To Tmax ND1(i) = ND(i) Next i
187
'1.1.3. Формирование вектора случайных величин для имитации экспертных оценок
'пластового давления
For i = 1 To m1 ND2(i) = ND(i + Tmax) Next i
'1.1.4. Формирование вектора случайных величин для имитации экспертных оценок
' параметра AL(1) модели КВД
For i = 1 To m21
ND21(i) = ND(i + Tmax + m1) Next i
'1.1.5. Формирование вектора случайных величин для имитации экспертных оценок
' параметра AL(2) модели КВД
For i = 1 To m22
ND22(i) = ND(i + Tmax + m1 + m22) Next i
'1.1.6. Формирование вектора случайных величин для имитации экспертных оценок
' параметра AL(3) модели КВД
For i = 1 To m23
ND23(i) = ND(i + Tmax + m1 + m22 + m23) Next i
'1.1.7. Формирование вектора случайных величин для имитации экспертных оценок
' накопленной добычи жидкости в скважине после ее остановки
For i = 1 To m3
ND3(i) = ND(i + Tmax + m1 + m22 + m23 + m3) Next i
'1.2. ФормированиевектораизмеренийКВДY*
' Задание точных значений параметров КВД
ALy(1) = 12
ALy(2) = 0.7
ALy(3) = 2
qo = 1 ' Задание значения дебита до остановки скважины
ALp(3) = Log(ALy(3))
Worksheets(Лист 28).Cells(13, 12) = ALy(1) Worksheets(Лист 28).Cells(13, 13) = ALy(2)
Worksheets(Лист 28).Cells(13, 14) = ALp(3)
' Расчет значений логарифма FL = Lnt в точках ti,i = 1,2,...,Tmax For i = 1 To Tmax
FL(i) = Log(i * delta_t) Next i
'Расчет вектора измерений КВД Y* yo = 180 ' Начальное значение забойного давления Рз(to)
с1 = 0.005 ' Относительный уровень ошибок измерений забойного давления
For i = 1 To n
y(i) = yo + ALy(1) * qo * (1 – Exp(-ALy(2) * i * delta_t)) * (ALp(3) + FL(i)) y(i) = y(i) + с1 * y(i) * ND(i)
Worksheets(Лист 28).Cells(i + 1, 3) = y(i) Next i
188
' 1.3. Формированиеэкспертныхоценокпластовогодавления
'1.3.1. Приближенный расчет пластового давления по модели S_dFy
P_dFy = yo ' начальное значение забойного давления
For i = 1 To Tmax
P_dFy = P_dFy + ALy(1) * ALy(2) * qo * Exp(-ALy(2) * i * delta_t) * (Log(ALy(3)) + FL(i)) _ + ALy(1) * qo * (1 – Exp(-ALy(2) * i * delta_t)) / (i * delta_t)
Next i
Worksheets(Лист 28).Cells(9, 17) = P_dFy
' 1.3.2. Точное значение пластового давления при t = Tmax (248,45 ат)
P_ALy = yo + ALy(1) * qo * (1 – Exp(-ALy(2) * Tmax)) * (ALp(3) + FL(Tmax)) Worksheets(Лист 28).Cells(11, 17) = P_ALy
' 1.3.3. Моделирование экспертных оценок пластового давления
c2 = 0.02 'Относительный уровень ошибок экспертных оценок пластового давления – 5 % P_ = 0
For i = 1 To m1
Pw_(i) = P_ALy + c2 * P_ALy * ND2(i) P_ = P_ + Pw_(i)
Worksheets(Лист 28).Cells(i + 19, 20) = Pw_(i) Next i
P_ = P_ / m1
Worksheets(Лист 28).Cells(20, 21) = P_ Worksheets(Лист 28).Cells(20, 22) = c2
'1.4. ФормированиеэкспертныхоценокопараметрахКВД
'1.4.1. Формирование экспертных оценок о параметре AL(1)
c21 = 0.2 'Относительный уровень ошибок экспертных оценок пластового давления – 5 % AL_(1) = 0
For i = 1 To m21
AL_1(i) = ALy(1) + c21 * ALy(1) * ND21(i) AL_(1) = AL_(1) + AL_1(i)
Worksheets(Лист 28).Cells(i + 42, 14) = AL_1(i) Next i
AL_(1) = AL_(1) / m21
Worksheets(Лист 28).Cells(43, 17) = AL_(1)
Worksheets(Лист 28).Cells(43, 20) = c21
'1.4.2. Формирование экспертных оценок о параметре AL(2)
c22 = 0.2 'Относительный уровень ошибок экспертных оценок пластового давления – 5 % AL_(2) = 0
For i = 1 To m22
AL_2(i) = ALy(2) + c22 * ALy(2) * ND22(i) AL_(2) = AL_(2) + AL_2(i)
Worksheets(Лист 28).Cells(i + 42, 15) = AL_2(i) Next i
AL_(2) = AL_(2) / m22
Worksheets(Лист 28).Cells(43, 18) = AL_(2)
Worksheets(Лист 28).Cells(43, 21) = c21
189
'1.4.3. Формирование экспертных оценок о параметре AL(3)
c23 = 0.2 'Относительный уровень ошибок экспертных оценок пластового давления – 5 % AL_(3) = 0
For i = 1 To m23
AL_3(i) = ALy(3) + c23 * ALy(3) * ND23(i) AL_(3) = AL_(3) + AL_3(i)
Worksheets(Лист 28).Cells(i + 42, 16) = AL_3(i) Next i
AL_(3) = AL_(3) / m23
Worksheets(Лист 28).Cells(43, 19) = AL_(3)
Worksheets(Лист 28).Cells(43, 22) = c23
'1.4.4. Формирование экспертных оценок о накопленной жидкости в скважине S_
' S0_ = qo/ALy(2) – Точное значение накопленной жидкости в скважине
S0_ = qo / ALy(2)
Worksheets(Лист 28).Cells(32, 23) = S0_
c3 = 0.2 'Относительныйуровеньошибокэкспертныхоценокнакопленнойжидкости– 20 % S_ = 0
For i = 1 To m3
Sж_(i) = S0_ + c3 * S0_ * ND3(i) S_ = S_ + Sж_(i)
Worksheets(Лист 28).Cells(i + 31, 20) = AL_3(i)
Next i
S_ = S_ / m3
Worksheets(Лист 28).Cells(32, 21) = S_
Worksheets(Лист 28).Cells(32, 22) = c3
'2. Алгоритм синтеза оценок параметров КВД с использованием метода Гаусса–Ньютона ' Начальные значения вектора параметров AL
ALo(1) = 13 ALo(2) = 0.8
ALo(3) = 2.2
ALpo(3) = Log(ALo(3)) Worksheets(Лист 28).Cells(13, 8) = ALo(1)
Worksheets(Лист 28).Cells(13, 9) = ALo(2)
Worksheets(Лист 28).Cells(13, 10) = ALpo(3)
' Расчет вектора модели КВД при AL = ALo
For i = 1 To n
Fo(i) = yo + ALo(1) * qo * (1 – Exp(-ALo(2) * i * delta_t)) * (ALpo(3) + FL(i)) Worksheets(Лист 28).Cells(i + 1, 2) = Fo(i)
Next i
' Расчет пластового давления при начальных значениях параметров AL =
ALo
P_ALo = yo + ALo(1) * qo * (1 – Exp(-ALo(2) * Tmax)) * (ALp(3) + FL(Tmax)) Worksheets(Лист 28).Cells(14, 17) = P_ALo
'Задание начальных значений параметров модели AL = ALo
AL(1) = ALo(1) AL(2) = ALo(2)
190