Difference between revisions of "Geometry Analysis"
Line 1: | Line 1: | ||
− | Berikut | + | Berikut merupakan code optimasi tangki hidrogen dengan kapasitas 1 liter, pressure 8 bar, dan biaya produksi maksimal Rp. 500.000 |
− | + | <syntaxhighlight lang=xml> | |
import numpy as np | import numpy as np | ||
from scipy.optimize import minimize | from scipy.optimize import minimize | ||
− | def | + | 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 | |
− | |||
− | return | ||
− | def | + | 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 | |
− | |||
− | + | # Tebakan awal untuk jari-jari dan tinggi | |
− | + | x0 = [1.0, 10.0] | |
− | + | # Tentukan batasan untuk variabel (jari-jari dan tinggi) | |
− | + | batas = [(0, None), (0, None)] | |
− | |||
− | + | # Tentukan konstrain dalam bentuk kamus | |
− | + | konstrain_dict = {'type': 'eq', 'fun': konstrain} | |
− | + | # Gunakan fungsi minimize untuk mengoptimalkan fungsi objektif dengan memenuhi konstrain | |
+ | hasil = minimize(objektif, x0, method='SLSQP', bounds=batas, constraints=konstrain_dict) | ||
+ | |||
+ | # Cetak hasil yang dioptimalkan | ||
print("Hasil Optimisasi:") | print("Hasil Optimisasi:") | ||
− | print(" | + | print("Jari-jari: {:.2f} cm".format(hasil.x[0])) |
− | print(" | + | print("Tinggi: {:.2f} cm".format(hasil.x[1])) |
− | print(" | + | print("Luas Permukaan: {:.2f} cm^2".format(hasil.fun)) |
− | + | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Didapatkan hasil sebagai berikut: | ||
+ | Jari-jari : 5.42 cm | ||
+ | |||
+ | Tinggi : 10.84 cm | ||
− | + | Luas Permukaan: 553.58 cm^2 | |
− | |||
− | + | from scipy.optimize import minimize | |
+ | # Harga dan kapasitas | ||
+ | harga_per_unit = 100000 # Harga per unit penyimpanan hidrogen = 1 | ||
+ | # Kapasitas penyimpanan hidrogen per unit | ||
+ | # Anggaran maksimal | ||
+ | budget_maksimal = 500000 | ||
+ | # Fungsi tujuan | ||
+ | def fungsi_tujuan(x): | ||
+ | return -x | ||
+ | # Kendala | ||
+ | def kendala(anggaran): | ||
+ | return budget_maksimal - (harga_per_unit * anggaran) | ||
+ | kendala_anggaran = {'type': 'ineq', 'fun': kendala} | ||
+ | # Nilai awal | ||
+ | x0 = 0 | ||
+ | # Batasan | ||
+ | batas = [(0, None)] | ||
+ | # Menyelesaikan masalah optimisasi | ||
+ | solusi = minimize(fungsi_tujuan, x0, method='SLSQP', bounds=batas, constraints=[kendala_anggaran]) | ||
+ | # Menampilkan hasil | ||
+ | print("Status:", solusi.success and "Optimal" or "Tidak ditemukan solusi") | ||
+ | print("Jumlah unit penyimpanan hidrogen yang akan dibeli:", solusi.x[0]) | ||
+ | print("Total kapasitas penyimpanan:", solusi.x[0] * kapasitas_per_unit, "liter") | ||
+ | print("Total biaya:", solusi.x[0] * harga_per_unit, "Rupiah") |
Revision as of 02:30, 12 June 2023
Berikut merupakan code optimasi tangki hidrogen dengan kapasitas 1 liter, pressure 8 bar, dan biaya produksi maksimal Rp. 500.000
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
# Tebakan awal untuk jari-jari dan tinggi
x0 = [1.0, 10.0]
# Tentukan batasan untuk variabel (jari-jari dan tinggi)
batas = [(0, None), (0, None)]
# Tentukan konstrain dalam bentuk kamus
konstrain_dict = {'type': 'eq', 'fun': konstrain}
# Gunakan fungsi minimize untuk mengoptimalkan fungsi objektif dengan memenuhi konstrain
hasil = minimize(objektif, x0, method='SLSQP', bounds=batas, constraints=konstrain_dict)
# Cetak hasil yang dioptimalkan
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))
Didapatkan hasil sebagai berikut: Jari-jari : 5.42 cm
Tinggi : 10.84 cm
Luas Permukaan: 553.58 cm^2
from scipy.optimize import minimize # Harga dan kapasitas harga_per_unit = 100000 # Harga per unit penyimpanan hidrogen = 1 # Kapasitas penyimpanan hidrogen per unit # Anggaran maksimal budget_maksimal = 500000 # Fungsi tujuan def fungsi_tujuan(x): return -x # Kendala def kendala(anggaran): return budget_maksimal - (harga_per_unit * anggaran) kendala_anggaran = {'type': 'ineq', 'fun': kendala} # Nilai awal x0 = 0 # Batasan batas = [(0, None)] # Menyelesaikan masalah optimisasi solusi = minimize(fungsi_tujuan, x0, method='SLSQP', bounds=batas, constraints=[kendala_anggaran]) # Menampilkan hasil print("Status:", solusi.success and "Optimal" or "Tidak ditemukan solusi") print("Jumlah unit penyimpanan hidrogen yang akan dibeli:", solusi.x[0]) print("Total kapasitas penyimpanan:", solusi.x[0] * kapasitas_per_unit, "liter") print("Total biaya:", solusi.x[0] * harga_per_unit, "Rupiah")