سایت شخصی صادق سلمانی

ولتست، یادگیری ماشین، پایتون، فرازآوری مصنوعی

سایت شخصی صادق سلمانی

ولتست، یادگیری ماشین، پایتون، فرازآوری مصنوعی

سایت شخصی صادق سلمانی

مطالبی که در این سایت نوشته می‌شود به منزله تخصص من در آن‌ها نمی‌باشد، بلکه صرفاً آغازی است در مسیری طولانی برای یادگیری بهتر و عمیق‌تر.

آخرین نظرات
  • ۱۶ خرداد ۹۸، ۰۰:۲۳ - محمد
    عالی
  • ۱۴ آذر ۹۷، ۱۸:۰۶ - خ
    عالی
  • ۸ آذر ۹۷، ۲۰:۰۷ - محمد علی
    احسنت

۸ مطلب در آذر ۱۳۹۵ ثبت شده است

دیکانولوشن چیست؟

فرض کنیم که یک تست چند دبی (4DD+4BU) در یک مخزن نفتی که دارای مرز بدون جریان است، انجام می‌گیرد... مانند شکل زیر 👇

در تست بالا، بازه زمانی هر کدام از تست‌های DD و BU به مدت 48 ساعت است: در نتیجه کل زمان تست برابر است با 384=48*8 ساعت.

کاری که روش دیکانولوشن انجام می‌دهد آن است که تست بالا را که شامل 8 تست DD و BU است و بازه زمانی هر کدام از تست‌ها نیز 48 ساعت می‌باشد، به یک تست با دبی ثابت که بازه زمان آن 384 ساعت است تبدیل می‌کند... 

فرض کنید که شما می‌خواهید تست DD اول را آنالیز کنید... در این صورت شما فقط می‌توانید 48 ساعت از تست را آنالیز کنید... در صورتی که اگر روش دیکانولوشن را به کار ببرید، فرض می‌شود که تست شما به مدت 384 ساعت ادامه داشته است و شما قادر به دیدن بسیاری از اثرات مخزن و مرز خواهید بود...

این شکل مربوط به زمانی است که مثلا فقط تست DD اول را که 48 ساعت است آنالیز کنیم... همان طور که مشاهده می‌کنید، در اینجا به دلیل کوتاه بودن تست، اثرات مرزی دیده نشده‌اند!


در اینجا از روش دیکانولوشن استفاده کرده‌ایم و می‌توانیم تست را در بازه زمانی 384 ساعت آنالیز کنیم و همانطور که می‌بینید، اثرات مرز بدون جریان در نمودار مشتق فشار دیده شده است.


به طور کلی در روش دیکانولوشن داریم:

The deconvolution technique transforms variable rate and pressure data into an equivalent initial constant-rate pressure response (in purple in the plot) with duration equal to the duration T of the entire test.


یکی از کاربردهای مهم روش دیکانولوشن آن است که اثرات ذخیره چاه را کاهش می‌دهد و امکان آنالیز داده‌ها در تست‌های کوتاه مدت‌تر را فراهم می‌کند.

۰ نظر ۲۸ آذر ۹۵ ، ۱۳:۲۷
صادق سلمانی

چند وقت پیش با نموداری به شکل زیر روبرو شدم که نمیدونستم دلیل انحراف داده های اولیه از خط راست با شیب یک چی میتونه باشه؟!


ولی امروز که داشتم یک مطلبی رو میخوندم، به دلیل چنین اثری اشاره شده بود: اگر ما در تخمین زمان بسته شدن چاه (Shut-in Time) دچار خطا شویم، آنگاه نمودار فشار و مشتق فشار مثل شکل های موجود در تصویر خواهند شد.

نتیجه گیری: در تخمین مقادیر فشار ته چاهی نهایی (Pwf) و همچنین زمان بسته شدن چاه (to) دقت بسیار زیادی داشته باشیم؛ زیرا اگر در محاسبه آن ها اشتباه کنیم، نمودارهای فشار و مشتق فشار از شکل طبیعی خود منحرف می شوند.


یک مثال واقعی از میادین ایران:




برای درک بهتر مطالب بیان شده، ویدئوی زیر را حتماً مشاهده کنید:

۰ نظر ۲۷ آذر ۹۵ ، ۱۱:۳۲
صادق سلمانی


چند سالی هست که بازار چاپ مقاله خیلی داغه. به نظرم اگر قرار بود انتشار مقاله سودی برای صنعت نفت کشورمون داشته باشه، الآن وضعیتمون این نبود! البته واضحه که منظورم مقاله‌های کاربردی و صنعتی نیست، بلکه منظورم اون دسته از مقاله‌های غیرکاربردی و چرندی هست که هر دانشجویی با چند ماه مطالعه روی یک موضوع شروع میکنه به صورت کیلویی بنویسه. اکثر مقاله‌هایی که تو ایران چاپ میشه صرفاً برای کسب نمره، اخذ پروژه کسری خدمت، عضویت در بنیاد ملی نخبگان، ترفیع، و موارد دیگه هست. در حقیقت هدف اصلی که رفع یک چالش در صنعت هست، به هیچ وجه مد نظر قرار نمیگیره.

و اما این به این منظور نیست که من از این کار شانه خالی کنم، بلکه دو برنامه متفاوت دارم:

اول: من دارم سعی می‌کنم به تدریج قسمت زیادی از مقالات حوزه تخصصی خودم را مطالعه کنم و سپس آن‌ها را دسته‌بندی کنم. ویژگی‌های میادین مختلف، مشکلات آن‌ها و روش‌های پیشنهادی را در یک دفتر بنویسم و آن‌ها را مقایسه و طبقه‌بندی کنم. 

دوم: خودم را درگیر پروژه یکی دو نفر کنم تا بتونم به داده‌های میادین مختلف ایران دسترسی پیدا کنم و مطالب جدیدتری یاد بگیرم. حتی میتونم یک سری داده گیر بیارم و خودم به تنهایی کار کنم. هدفم از این کار این هست که یک حس مهندسی نسبت به پارامترهای مخزنی پیدا کنم.

سوم: یک سری جزوات و درسنامه‌های موضوعی برای مباحثی که علاقه دارم تهیه کنم و در آن‌ها از مطالب کاربردی و منطبق بر ویژگی‌های میادین ایران استفاده کنم. مطمئناً در آینده می‌توانم از این جزوات به عنوان هندبوک استفاده کنم و حتی می‌توانم به فکر چاپ کتاب هم باشم.

در این زمانه، اطلاعات (که شامل مقاله های علمی هم میشه) خیلی زیاد و در دسترس هستند ولی نیاز شدیدی هست که اینها طبقه‌بندی و کاربردی بشوند. کافیه که مثلاً در گوگل سرچ کنید: gas condensate، خودتون متوجه میشید که چقدر مقاله تا کنون چاپ شده و خیلی از این‌ها در انبوه مقالات دیگر در حال گم شدن هستند.

۰ نظر ۲۷ آذر ۹۵ ، ۰۱:۰۴
صادق سلمانی

در ریاضیات دنباله فیبوناچی به صورت زیر تعریف می شود:

به غیر از دو عدد اول، اعداد بعدی از مجموع دو عدد قبلی خود بدست می آیند. اولین اعداد این سری عبارتند از:

۰٬ ۱٬ ۱٬ ۲٬ ۳٬ ۵٬ ۸٬ ۱۳٬ ۲۱٬ ۳۴٬ ۵۵٬ ۸۹٬ ۱۴۴٬ ۲۳۳٬ ۳۷۷٬ ۶۱۰٬ ۹۸۷٬ ۱۵۹۷٬ ۲۵۸۴٬ ۴۱۸۱٬ ۶۷۶۵٬ ۱۰۹۴۶٬ ۱۷۷۱۱

برای پیدا کردن 10 جمله اول دنباله اعداد فیبوناچی توسط پایتون از کد زیر استفاده می کنیم:

def F(n):

    if n == 0: 

        return 0

    elif n == 1: 

        return 1

    else: 

        return F(n-1)+F(n-2)

for i in range(0,10):

    print (F(i))


جواب:

0

1

1

2

3

5

8

13

21

34

تدکر: اگر در دستور بالا n را تغییر دهیم، می توانیم به هر تعداد جمله از دنباله فیبوناچی دسترسی داشته باشیم.

۲ نظر ۱۶ آذر ۹۵ ، ۰۳:۱۸
صادق سلمانی

برای پیدا کردن اعداد اول در یک بازه مشخص از کد زیر استفاده می کنیم:

from sympy import*

list1=[]

for i in primerange(7, 18):

    list1.append(i)

print(list1)

[7, 11, 13, 17] :جواب

برای اینکه تشخیص دهیم که یک عدد اول هست یا نه از کد زیر استفاده می کنیم:

>>> from sympy import*

>>> isprime(13)

 True


تجزیه یک عدد به عوامل اول:

from sympy import*

print(S(45).factors())

{3: 2, 5: 1} :جواب

۰ نظر ۱۰ آذر ۹۵ ، ۲۰:۳۳
صادق سلمانی

برای محاسبه فاکتوریل یک عدد (مثلاً !5) از دو روش زیر استفاده می کنیم:

روش اول:

x=1

num=int(input("enter a positive number:"))

for i in range(1,num+1):

    x=x*i

print("the factorial of",num,"is",x)

جواب: the factorial of 5 is 120

روش دوم:
from math import factorial
print (factorial(10))
جواب: 120
۳ نظر ۱۰ آذر ۹۵ ، ۲۰:۰۴
صادق سلمانی

در این بخش قصد داریم که یک دستگاه معادلات غیر خطی جبری را با استفاده از کتابخانه sympy حل کنیم. به مثال زیر دقت کنید:

from sympy import*

f1=x**2+y**2-3

f2=x*y-1

ans=solvers.solve((f1,f2),(x,y))

print(ans)

جواب: 

[(-(-3 + (-1/2 + sqrt(5)/2)**2)*(-1/2 + sqrt(5)/2), -1/2 + sqrt(5)/2), (-(-3 + (1/2 + sqrt(5)/2)**2)*(1/2 + sqrt(5)/2), 1/2 + sqrt(5)/2), (-(-3 + (-sqrt(5)/2 - 1/2)**2)*(-sqrt(5)/2 - 1/2), -sqrt(5)/2 - 1/2), (-(-3 + (-sqrt(5)/2 + 1/2)**2)*(-sqrt(5)/2 + 1/2), -sqrt(5)/2 + 1/2)]

یا:


sympy: symbolic mthematics in python
۰ نظر ۱۰ آذر ۹۵ ، ۱۴:۴۵
صادق سلمانی

ما دو نوع معادلات را تا به حال یاد گرفته ایم: 1- معادلات جبری 2- معادلات دیفرانسیلی

در معادلات جبری، جواب ها به صورت نقاط و اعداد هستند اما در معادلات دیفرانسیلی، مجهول به صورت یک تابع است.

تذکر: یک معادله جبری به صورت زیر نمایش داده می شود:

f(x,y,z,...)=0

در اینجا قصد داریم که یک دستگاه معادلات جبری خطی را با استفاده از زبان برنامه نویسی پایتون حل کنیم. به مثال زیر دقت کنید:

روش اول:

from numpy import*

A=array([[1,-2,-1],[2,2,-1],[-1,-1,2]])   ماتریس ضرایب

b=array([6,1,1])   ماتریس معلومات

M=linalg.solve(A,b)    ماتریس مجهولات

print("M=",M)

جواب: M=[3 , -2 , 1]

روش دوم:

from sympy import*

var('z')

ans=solve((x-2*y-z-6,2*x+2*y-z-1,-x-y+2*z-1),(x,y,z))

print(ans)

{z: 1, y: -2, x: 3}


linalg.solve(A,b) :  Solve a linear matrix equation, or system of linear scalar equations (Linear algebra)
۰ نظر ۱۰ آذر ۹۵ ، ۰۴:۲۲
صادق سلمانی