Difference between revisions of "User:Bhamakerti.mohammad"

From ccitonlinewiki
Jump to: navigation, search
(Progress Pekan 2)
(Progress Pekan 2)
 
(8 intermediate revisions by the same user not shown)
Line 47: Line 47:
 
Adapun constraintnya adalah :
 
Adapun constraintnya adalah :
 
Tekanan 8 bar, volume 1 L, dan harga Rp.500.000
 
Tekanan 8 bar, volume 1 L, dan harga Rp.500.000
 +
 +
Prinsip utama dari optimisasi ini adalah untuk mencari kombinasi jari-jari dan tinggi tabung yang memenuhi batasan volume dan pada saat yang sama menghasilkan luas permukaan tabung yang minimal.
 +
Dengan menggunakan metode optimisasi numerik, program mencari solusi yang mendekati nilai optimal dengan mengiterasi dan memperbaiki solusi secara bertahap.
  
 
Untuk memperhitungkan optimasi dimensi, saya menggunakan pemrograman melalui kode berikut :
 
Untuk memperhitungkan optimasi dimensi, saya menggunakan pemrograman melalui kode berikut :
Line 54: Line 57:
 
from scipy.optimize import minimize
 
from scipy.optimize import minimize
  
def objective_function(x, density, price_per_unit):
+
def calculate_surface_area(x):
     radius, height, thickness = x
+
    radius, height = x
 +
    return 2 * np.pi * radius * height + 2 * np.pi * radius**2
 +
 
 +
def volume_constraint(x, target_volume):
 +
     radius, height = x
 +
    return np.pi * radius**2 * height - target_volume
 +
 
 +
# Set variabel konstan
 +
target_volume = 1000  # Volume konstan (dalam sentimeter kubik)
 +
 
 +
# Definisikan masalah optimisasi
 +
def optimization_problem(x):
 +
    return calculate_surface_area(x), volume_constraint(x, target_volume)
 +
 
 +
# Tetapkan tebakan awal untuk variabel optimisasi
 +
initial_guess = [1.0, 1.0]
  
    # Calculate the weight of the cylinder (assuming density of aluminium)
+
# Definisikan batasan dan batas variabel optimisasi
    inner_radius = radius - thickness
+
constraints = [{'type': 'eq', 'fun': lambda x: optimization_problem(x)[1]}]
    inner_volume = np.pi * inner_radius**2 * height
+
bounds = [(0, None), (0, None)]
    outer_volume = np.pi * radius**2 * height
 
    shell_volume = outer_volume - inner_volume
 
    weight = shell_volume * density
 
  
    # Calculate the cost of the cylinder (based on material price per kg)
+
# Lakukan optimisasi
    cost = weight * price_per_unit
+
result = minimize(lambda x: optimization_problem(x)[0], initial_guess, method='SLSQP', bounds=bounds, constraints=constraints)
  
    return cost
+
# Ekstrak variabel hasil yang dioptimalkan
 +
optimal_radius, optimal_height = result.x
  
def volume_constraint(x, target_volume):
+
# Hitung luas permukaan yang dioptimalkan
    radius, height, thickness = x
+
optimal_surface_area = calculate_surface_area([optimal_radius, optimal_height])
    volume = np.pi * radius**2 * height * 1000  # Convert to liters
+
 
    return volume - target_volume
+
# Tampilkan hasil
 +
print('Jari-jari Optimal: {:.2f} cm'.format(optimal_radius))
 +
print('Tinggi Optimal: {:.2f} cm'.format(optimal_height))
 +
print('Luas Permukaan Optimal: {:.2f} cm^2'.format(optimal_surface_area))
 +
</syntaxhighlight>
 +
 
 +
Sehingga didapatkan hasil
 +
 
 +
Optimization Results:
 +
 
 +
Jari-jari Optimal: 5.42 cm
 +
 
 +
Tinggi Optimal: 10.84 cm
 +
 
 +
Luas Permukaan Optimal: 553.58 cm^2
  
def pressure_constraint(x, target_pressure, allowable_stress):
+
'''2) Material & Biaya'''
    radius, height, thickness = x
 
    inner_radius = radius - thickness
 
    stress = target_pressure * inner_radius / thickness
 
    return allowable_stress - stress
 
  
# Target volume in liters
+
Pada kasus ini, saya menggunakan material alumunium 6061 dengan asumsi densitas 2,7 g/cm^3. Alumunium dipilih karena cukup kuat yaitu memiliki yield strenght 276 MPa.
target_volume = 1
 
  
# Target pressure in bar
+
Selanjutnya dihitung massa tabung dengan code berikut
target_pressure = 8
 
  
# Density of aluminium in kg/m^3
+
<syntaxhighlight lang=xml>
density_aluminium = 2700
+
import math
  
# Allowable stress for aluminium in Pa
+
def calculate_cylinder_mass(radius, height, thickness, density_aluminum):
allowable_stress = 250e6
+
    # Menghitung volume tabung internal
 +
    volume_internal = math.pi * radius**2 * height
  
# Initial guess for radius, height, and thickness
+
    # Menghitung volume dinding
x0 = [10.0, 50.0, 1.0]
+
    radius_external = radius + thickness
 +
    volume_external = math.pi * radius_external**2 * height
  
# Define the bounds for radius, height, and thickness
+
    # Menghitung volume tabung dengan dinding
bounds = [(0.1, None), (0.1, None), (0.01, None)]
+
    volume_total = volume_external - volume_internal
  
# Define the constraint functions
+
    # Menghitung massa tabung dengan dinding menggunakan kepadatan alumunium
volume_constraint_func = lambda x: volume_constraint(x, target_volume)
+
    mass = volume_total * density_aluminum
pressure_constraint_func = lambda x: pressure_constraint(x, target_pressure, allowable_stress)
 
  
# Define the optimization problem
+
     return mass
problem = {
 
     'fun': objective_function,
 
    'x0': x0,
 
    'bounds': bounds,
 
    'constraints': [{'type': 'eq', 'fun': volume_constraint_func}, {'type': 'ineq', 'fun': pressure_constraint_func}],
 
    'args': (density_aluminium, price_per_unit),
 
    'method': 'SLSQP'
 
}
 
  
# Solve the optimization problem
+
# Input
result = minimize(**problem)
+
radius = 5.42  # cm
 +
height = 10.84  # cm
 +
thickness = 2  # mm
 +
density_aluminum = 2.7  # g/cm^3
  
# Extract the optimized dimensions
+
# Konversi ke satuan yang sesuai
optimal_radius, optimal_height, optimal_thickness = result.x
+
thickness = thickness / 10  # Konversi ketebalan dinding menjadi cm
 +
density_aluminum = density_aluminum / 1000  # Konversi kepadatan menjadi kg/cm^3
  
# Convert dimensions to mm
+
# Menghitung massa tabung kosong dengan dinding
optimal_radius_mm = optimal_radius * 10
+
mass = calculate_cylinder_mass(radius, height, thickness, density_aluminum)
optimal_height_mm = optimal_height * 10
 
optimal_thickness_mm = optimal_thickness * 10
 
  
# Calculate the weight of the cylinder
+
# Menampilkan hasil
inner_volume = np.pi * (optimal_radius - optimal_thickness)**2 * optimal_height / 1000
+
print("Massa tabung kosong dengan dinding alumunium:", mass, "kg")
outer_volume = np.pi * optimal_radius**2 * optimal_height / 1000
 
weight = (outer_volume - inner_volume) * density_aluminium
 
  
# Print the optimized results
 
print("Optimization Results:")
 
print("Optimal Radius: {:.2f} mm".format(optimal_radius_mm))
 
print("Optimal Height: {:.2f} mm".format(optimal_height_mm)) }
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Sehingga didapatkan hasil
+
didapatkan massa dari tabung adalah 0,2 kg atau 200gram. biaya alumunium sendiri adalah Rp 37.000/kg,
  
Optimization Results:
 
  
Optimal Radius: 100.00 mm
+
3)'''Kesimpulan'''
  
Optimal Height: 500.00 mm
+
pada tugas besar metode numerik ini, didapatkan desain optimal melalui perhitungan numerik dengan dimensi radius = 5.42  cm,
 +
height = 10.84 cm,thickness = 2 mm. Pemilihan material alumunium sudah cukup baik karena kuat dan harganya tidak terlalu mahal.

Latest revision as of 12:24, 5 June 2023

Introduction

Bhamakerti Mohammad Aydan.jpg

ٱلسَّلَامُ عَلَيْكُمْ وَرَحْمَةُ ٱللَّٰهِ وَبَرَكَاتُهُ

Perkenalkan saya Bhamakerti Mohammad Aydan biasa dipanggil Bhama dengan NPM 2106728023.

Saat ini saya sedang menjalani kelas Metode Numerik 01. Saya berharap bisa terus belajar dengan consciousness yang tinggi.

Progress Pekan 1

Tugas : Optimasi tangki hidrogen dengan kapasitas 1 liter, pressure 8 bar, dan biaya produksi maksimal Rp. 500.000

Pada pekan 1, saya membaca sebuah paper dari Jiai Chen, dkk(2018) dengan judul "Design And Optimization of High-Pressure Hydrogen Cylinders For Intermodal Container Transportation".

Pada paper tersebut, ada beberapa parameter yang mejadi fokus untuk melakukan optimisasi pada desain tabung hydrogen

1. Geometri dari tabung Pada bagian geometri, akan didapatkan nilai outer diameter (2r), length of cylinder (l), dan thickness of cylinder(t)

2. Tekanan Optimal hidrogen Parameter ini dicari untuk menentukan geometri dan ukuran dari tabung

3. Packing Problem Paper ini juga memperhatikan bagaimana mentransport hydrogen seefisien mungkin

Adapun workflow yang digunakan adalah sebagai berikut First, for a single cylinder with the external diameter (2𝑟) and the length of the cylinder body (𝑙), we will search for the optimal hydrogen pressure (Section 3). Second, with a given external diameter (2𝑟) of the cylinders, we will find the optimal body length (𝑙 ) (Section 4). Third, in the cross-section, circle packing problem in a square will be studied and optimal external diameter (2𝑟 ) will be found (Section 5). Finally, combining Sections 3-5, the optimal strategy can be attained.


Progress Pekan 2

Final Report

1) Dimensi optimal Dalam melakukan desain optimasi dari tabung hidrogen, parameter yang pertama diperhitungkan adalah dimensi dari tabung,

Adapun constraintnya adalah : Tekanan 8 bar, volume 1 L, dan harga Rp.500.000

Prinsip utama dari optimisasi ini adalah untuk mencari kombinasi jari-jari dan tinggi tabung yang memenuhi batasan volume dan pada saat yang sama menghasilkan luas permukaan tabung yang minimal. Dengan menggunakan metode optimisasi numerik, program mencari solusi yang mendekati nilai optimal dengan mengiterasi dan memperbaiki solusi secara bertahap.

Untuk memperhitungkan optimasi dimensi, saya menggunakan pemrograman melalui kode berikut :

import numpy as np
from scipy.optimize import minimize

def calculate_surface_area(x):
    radius, height = x
    return 2 * np.pi * radius * height + 2 * np.pi * radius**2

def volume_constraint(x, target_volume):
    radius, height = x
    return np.pi * radius**2 * height - target_volume

# Set variabel konstan
target_volume = 1000  # Volume konstan (dalam sentimeter kubik)

# Definisikan masalah optimisasi
def optimization_problem(x):
    return calculate_surface_area(x), volume_constraint(x, target_volume)

# Tetapkan tebakan awal untuk variabel optimisasi
initial_guess = [1.0, 1.0]

# Definisikan batasan dan batas variabel optimisasi
constraints = [{'type': 'eq', 'fun': lambda x: optimization_problem(x)[1]}]
bounds = [(0, None), (0, None)]

# Lakukan optimisasi
result = minimize(lambda x: optimization_problem(x)[0], initial_guess, method='SLSQP', bounds=bounds, constraints=constraints)

# Ekstrak variabel hasil yang dioptimalkan
optimal_radius, optimal_height = result.x

# Hitung luas permukaan yang dioptimalkan
optimal_surface_area = calculate_surface_area([optimal_radius, optimal_height])

# Tampilkan hasil
print('Jari-jari Optimal: {:.2f} cm'.format(optimal_radius))
print('Tinggi Optimal: {:.2f} cm'.format(optimal_height))
print('Luas Permukaan Optimal: {:.2f} cm^2'.format(optimal_surface_area))

Sehingga didapatkan hasil

Optimization Results:

Jari-jari Optimal: 5.42 cm

Tinggi Optimal: 10.84 cm

Luas Permukaan Optimal: 553.58 cm^2

2) Material & Biaya

Pada kasus ini, saya menggunakan material alumunium 6061 dengan asumsi densitas 2,7 g/cm^3. Alumunium dipilih karena cukup kuat yaitu memiliki yield strenght 276 MPa.

Selanjutnya dihitung massa tabung dengan code berikut

import math

def calculate_cylinder_mass(radius, height, thickness, density_aluminum):
    # Menghitung volume tabung internal
    volume_internal = math.pi * radius**2 * height

    # Menghitung volume dinding
    radius_external = radius + thickness
    volume_external = math.pi * radius_external**2 * height

    # Menghitung volume tabung dengan dinding
    volume_total = volume_external - volume_internal

    # Menghitung massa tabung dengan dinding menggunakan kepadatan alumunium
    mass = volume_total * density_aluminum

    return mass

# Input
radius = 5.42  # cm
height = 10.84  # cm
thickness = 2  # mm
density_aluminum = 2.7  # g/cm^3

# Konversi ke satuan yang sesuai
thickness = thickness / 10  # Konversi ketebalan dinding menjadi cm
density_aluminum = density_aluminum / 1000  # Konversi kepadatan menjadi kg/cm^3

# Menghitung massa tabung kosong dengan dinding
mass = calculate_cylinder_mass(radius, height, thickness, density_aluminum)

# Menampilkan hasil
print("Massa tabung kosong dengan dinding alumunium:", mass, "kg")

didapatkan massa dari tabung adalah 0,2 kg atau 200gram. biaya alumunium sendiri adalah Rp 37.000/kg,


3)Kesimpulan

pada tugas besar metode numerik ini, didapatkan desain optimal melalui perhitungan numerik dengan dimensi radius = 5.42 cm, height = 10.84 cm,thickness = 2 mm. Pemilihan material alumunium sudah cukup baik karena kuat dan harganya tidak terlalu mahal.