Tugas 2 Final Project To Optimaze Hydrogen Storage Design
Berikut merupakan code optimasi tangki hidrogen dengan kapasitas 1 liter, dan biaya produksi maksimal Rp. 500.000 dengan material yang digunakan adalah AISI 316 austenitic stainless steel
Gambar diatas merupakan Mechanical Properties AISI 304, dari gambar diatas didapat yield strenght untuk mencari ketebalan tangki yang kita buat
import numpy as np
from scipy.optimize import minimize
def objektif(x):
# x[0] mewakili jari-jari, x[1] mewakili tinggi
jari_jari = x[0]
tinggi = x[1]
# Hitung luas permukaan struktur silinder
luas_permukaan = 2 * np.pi * jari_jari * (jari_jari + tinggi)
return luas_permukaan
def konstrain(x):
# x[0] mewakili jari-jari, x[1] mewakili tinggi
jari_jari = x[0]
tinggi = x[1]
# Hitung volume internal struktur silinder
volume = np.pi * jari_jari**2 * tinggi
# Kembalikan selisih antara volume dan nilai yang diinginkan (1000 cm^3)
return volume - 1000
# Menebak jari-jari dan tinggi
x0 = [1.0, 10.0]
# Membatasi variabel jari-jari dan tinggi
batas = [(0, None), (0, None)]
# Menentukan konstrain dalam bentuk kamus
konstrain_dict = {'type': 'eq', 'fun': konstrain}
# Menggunakan fungsi minimize dari scipy untuk optimasi
hasil = minimize(objektif, x0, method='SLSQP', bounds=batas, constraints=konstrain_dict)
# Mencetak hasil yang telah dioptimasi
print("Hasil Optimisasi:")
print("Jari-jari: {:.2f} cm".format(hasil.x[0]))
print("Tinggi: {:.2f} cm".format(hasil.x[1]))
print("Luas Permukaan: {:.2f} cm^2".format(hasil.fun))
Mencari range ketebalan yang aman untuk di proses
r = 5.51e-2 #vessel radius
p = 800000 #8 bar pressure constraint
t = 2.7e-3 #minimum thickness
while t < 11.05e-3:
hoop = (p * r)/(t)
print('Untuk ketebalan', t, 'hoop stress =', hoop, "Pa")
t += 1e-3
if hoop > 215e9: #Yield Strength of AISI 304
break
Pertama mendefinisikan fungsi objektif yang menghitung luas permukaan struktur silinder berdasarkan variabel yang diberikan yakni tinggi dan jari-jari.
Kemudian mendefinisikan fungsi konstrain yang memastikan volume internal struktur silinder memenuhi konstrain dengan selisih sebesar 1000 cm^3.
Berikutnya, menebak tebakan awal untuk jari-jari dan tinggi (x0) serta batasan untuk variabel (batas). Dalam kasus ini, mengasumsikan jari-jari dan tinggi dapat memiliki nilai positif.
Selanjutnya, gunakan fungsi minimize dari scipy.optimize untuk menyelesaikan masalah optimisasi. Bemberikan fungsi objektif , metode (SLSQP), tebakan awal, konstrain, dan batasan.
Dari code tersebut didapat hasil: Tinggi: 10.84 cm, Jari-jari: 5.42 cm Luas Permukaan: 553.58 cm^2
Berdasarkan tabel diatas, kita dapat menghitung perkiraan harga dengan spesifikasi diatas (luas silinder = 571,88). Dengan membagi Harga dengan luas pelat, maka ditemukan biaya/satuan luas pelat. Setelah dihitung, dengan memaksimalkan budget, minimum berat yang masih masuk akal, dan strength masih wajar, saya memilih ketebalan 6mm untuk tank ini.