Difference between revisions of "User:Ssambega"

From ccitonlinewiki
Jump to: navigation, search
(Created page with " == PEKAN 2 == import numpy as np from scipy.optimize import minimize def objective(x): # x[0] merepresentasikan jari-jari, x[1] merepresentasikan tinggi radius = x[0...")
 
Line 1: Line 1:
  
 
+
Nama : Shadam Sambega Raditya
 +
NPM :2106637113
  
  

Revision as of 12:50, 5 June 2023

Nama : Shadam Sambega Raditya NPM :2106637113


PEKAN 2

import numpy as np from scipy.optimize import minimize

def objective(x):

 # x[0] merepresentasikan jari-jari, x[1] merepresentasikan tinggi
 radius = x[0]
 tinggi = x[1]
 
 # Menghitung luas permukaan struktur silinder
 luas_permukaan = 2 * np.pi * radius * (radius + tinggi)
 
 return luas_permukaan

def constraint(x):

 # x[0] merepresentasikan jari-jari, x[1] merepresentasikan tinggi
 radius = x[0]
 tinggi = x[1]
 
  1. Menghitung volume internal struktur silinder
 volume = np.pi * radius**2 * tinggi
   
  1. Mengembalikan selisih antara volume dan nilai yang diinginkan (1000 sentimeter kubik)
 return volume - 1000
  1. Nilai awal untuk jari-jari dan tinggi

x0 = [1.0, 10.0]

  1. Batasan variabel (jari-jari dan tinggi)

bounds = [(0, None), (0, None)]

  1. Mendefinisikan dictionary kendala

constraint_dict = {'type': 'eq', 'fun': constraint}

  1. Menggunakan fungsi minimize untuk mengoptimalkan fungsi tujuan dengan mempertahankan kendala function subject to the constraint

result = minimize(objective, x0, method='SLSQP', bounds=bounds, constraints=constraint_dict)

  1. Hasil Optimasi

print("Hasil Optimasi:") print("Radius: {:.2f} cm".format(result.x[0])) print("Tinggi: {:.2f} cm".format(result.x[1])) print("Luas Permukaan: {:.2f} cm^2".format(result.fun))

</syntaxhighlight>

Output:

Hasil Optimasi:
Radius: 5.42 cm
Tinggi: 10.84 cm
Luas Permukaan: 553.58 cm^2

Mencari ketebalan tangki dengan tekanan 8 bar serta memperhatikan Mechanical Properties AISI 304

r = 5.51e-2 # jari-jari tangki
p = 800000 # kendala tekanan 8 bar
t = 2.7e-3 # ketebalan minimum

while t < 11.05e-3:
  hoop = (p * r) / t
  print('Untuk ketebalan', t, 'tekanan lingkar =', hoop, "Pa")
  t += 1e-3
if hoop > 215e9: #Yield Strength of AISI 304
  break

Output:

Untuk ketebalan 0.0027 tekanan lingkar = 16325925.925925925 Pa
Untuk ketebalan 0.0037 tekanan lingkar = 11913513.513513513 Pa
Untuk ketebalan 0.0047 tekanan lingkar = 9378723.40425532 Pa
Untuk ketebalan 0.0057 tekanan lingkar = 7733333.333333333 Pa
Untuk ketebalan 0.0067 tekanan lingkar = 6579104.47761194 Pa
Untuk ketebalan 0.0077 tekanan lingkar = 5724675.324675324 Pa
Untuk ketebalan 0.0087 tekanan lingkar = 5066666.666666667 Pa
Untuk ketebalan 0.0097 tekanan lingkar = 4544329.896907216 Pa
Untuk ketebalan 0.010700000000000001 tekanan lingkar = 4119626.1682242984 Pa

Mencari optimasi tangki hidrogen dengan maksimal anggaran Rp500.000:

from scipy.optimize import minimize

# Harga dan kapasitas yang dibutuhkan
harga_per_unit = 500000  # Rupiah
kapasitas_per_unit = 1  # Liter

# Anggaran maksimal
anggaran_maksimal = 500000

# Fungsi Akhir
def fungsi_akhir(x):
    return -x * kapasitas_per_unit

# Kendala yang terjadi
def kendala(anggaran):
    return anggaran_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_akhir, x0, method='SLSQP', bounds=batas, constraints=[kendala_anggaran])

# Menampilkan hasil
print("Status:", solusi.success and "Biaya Optimal" or "Tidak ditemukan solusi")
print("Jumlah unit yang bisa dibeli:", solusi.x[0])
print("Total kapasitas penyimpanan yang didapat:", solusi.x[0] * kapasitas_per_unit, "liter")
print("Total anggaran:", solusi.x[0] * harga_per_unit, "Rupiah")

Output:

Status: Biaya Optimal
Jumlah unit yang bisa dibeli: 1
Total kapasitas penyimpanan yang didapat: 1.0 liter
Total anggaran: 500000.0 Rupiah

Dalam kode di atas, tujuan utama adalah memaksimalkan jumlah unit penyimpanan hidrogen yang akan dibeli. Batasan anggaran diimplementasikan menggunakan fungsi kendala untuk memastikan bahwa total biaya tidak melebihi anggaran maksimal yang telah ditentukan. Output dari kode ini akan menampilkan jumlah unit yang perlu dibeli, total kapasitas penyimpanan, dan total biaya yang diperlukan.

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize

# Harga dan kapasitas
harga_per_unit = 500000  # Harga per unit penyimpanan hidrogen
kapasitas_per_unit = 1  # Kapasitas penyimpanan hidrogen per unit

# Anggaran maksimal
budget_maksimal = 500000

# Fungsi tujuan
def fungsi_tujuan(x):
    return -x

# Kendala
def kendala(x):
    return budget_maksimal - (harga_per_unit * x[0])

kendala_anggaran = [{'type': 'ineq', 'fun': kendala}]

# Nilai awal
x0 = [0]

# Batasan
batas = [(0, None)]

# Membuat fungsi untuk menampilkan hasil
def tampilkan_hasil(solusi):
    print("Status:", "Optimal" if solusi.success else "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")

# Menyelesaikan masalah optimisasi
solusi = minimize(fungsi_tujuan, x0, method='SLSQP', bounds=batas, constraints=kendala_anggaran)

# Menampilkan hasil
tampilkan_hasil(solusi)

# Menghasilkan grafik
anggaran = np.linspace(0, 10, 100)  # Range anggaran
kapasitas = anggaran * kapasitas_per_unit  # Total kapasitas penyimpanan untuk setiap anggaran
biaya = anggaran * harga_per_unit  # Total biaya untuk setiap anggaran

plt.figure()
plt.plot(anggaran, kapasitas, label='Kapasitas Penyimpanan')
plt.plot(anggaran, biaya, label='Total Biaya')
plt.axhline(solusi.x[0] * kapasitas_per_unit, color='b', linestyle='--', label='Jumlah Unit Optimal')
plt.axvline(solusi.x[0], color='y', linestyle='--', label='Anggaran Optimal')
plt.xlabel('Anggaran')
plt.ylabel('Kapasitas/Biaya')
plt.title('Optimisasi Biaya Hidrogen')
plt.legend()
plt.grid(True)
plt.show()

Output:

Grafik imam2.png