Downloads · 30 days
0
ocean2634/ozcan2634
ozcan2634 is a machine learning model from ocean2634. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
import streamlit as st import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Patch import io
Downloads · 30 days
0
Access
Public
Updated Dec 12, 2025
Repo size
—
Likes
0
Public
Click a slice to open those files.
.md4.1 KB · 73%
From the Hugging Face model README
import streamlit as st import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.patches import Patch import io
st.set_page_config(page_title="🚛 TIR Yerleştirme", layout="wide") st.title("🚛 TIR Yerleştirme ve 3D Görselleştirme")
st.sidebar.header("🚛 TIR / Konteyner Boyutları") truck_length = st.sidebar.number_input("Uzunluk (mm)", min_value=1000, value=13600) truck_width = st.sidebar.number_input("Genişlik (mm)", min_value=1000, value=2450) truck_height = st.sidebar.number_input("Yükseklik (mm)", min_value=1000, value=2700) max_weight = st.sidebar.number_input("Maks. Ağırlık (kg)", min_value=1000, value=24000)
uploaded_file = st.file_uploader("Excel Dosyasını Yükleyin", type=["xlsx"])
if uploaded_file is None: st.info("Lütfen bir Excel dosyası yükleyin.") st.stop()
try: df = pd.read_excel(uploaded_file, header=5) except Exception as e: st.error(f"Excel okunamadı: {e}") st.stop()
try: gensets = df.iloc[:, [0, 5, 8, 10, 12, 14]].copy() gensets.columns = ['Model', 'Sase', 'Length', 'Width', 'Height', 'Weight'] except: st.error("Excel formatı beklenenden farklı!") st.stop()
gensets['Weight'] = pd.to_numeric(gensets['Weight'], errors='coerce') gensets = gensets.dropna(subset=['Weight'])
for col in ['Length', 'Width', 'Height']: gensets[col] = pd.to_numeric( gensets[col].astype(str).str.replace('*', '', regex=False).str.replace(',', '.', regex=False), errors='coerce' )
gensets = gensets.dropna(subset=['Length', 'Width', 'Height']).reset_index(drop=True)
st.success(f"{len(gensets)} adet jeneratör yüklendi ✔")
def pack_boxes(truck_l, truck_w, truck_h, max_weight, df): placed = [] x_offset = 0 current_weight = 0 colors = plt.cm.tab20(np.linspace(0, 1, len(df))) df['Volume'] = df['Length'] * df['Width'] * df['Height'] df = df.sort_values('Volume', ascending=False).reset_index(drop=True)
for i, row in df.iterrows():
dims = [(row['Length'], row['Width']), (row['Width'], row['Length'])]
for L, W in dims:
if (current_weight + row['Weight'] <= max_weight and
x_offset + L <= truck_l and
W <= truck_w and
row['Height'] <= truck_h):
placed.append({
"model": row['Model'],
"x": x_offset,
"y": 0,
"z": 0,
"dx": L,
"dy": W,
"dz": row['Height'],
"weight": row['Weight'],
"color": colors[i],
"orientation": "Rotated" if L != row['Length'] else "Normal"
})
x_offset += L
current_weight += row['Weight']
break
return placed, current_weight, x_offset
placed_boxes, total_weight, used_length = pack_boxes( truck_length, truck_width, truck_height, max_weight, gensets )
st.header("📊 Yerleştirme Sonucu") col1, col2, col3 = st.columns(3) col1.metric("Adet", len(placed_boxes)) col2.metric("Ağırlık", f"{total_weight:,.0f} kg") col3.metric("Kullanım", f"%{used_length/truck_length*100:.1f}")
fig = plt.figure(figsize=(10, 5)) ax = fig.add_subplot(111, projection="3d")
for b in placed_boxes: ax.bar3d(b['x'], b['y'], b['z'], b['dx'], b['dy'], b['dz'], color=b['color'], edgecolor="k")
ax.set_xlabel("Uzunluk (mm)") ax.set_ylabel("Genişlik (mm)") ax.set_zlabel("Yükseklik (mm)") st.pyplot(fig)
result_df = pd.DataFrame([{ "Sıra": i + 1, "Model": b['model'], "Ölçüler (mm)": f"{b['dx']} x {b['dy']} x {b['dz']}", "Ağırlık": b['weight'], "Yön": b["orientation"] } for i, b in enumerate(placed_boxes)])
st.dataframe(result_df)
output = io.BytesIO() result_df.to_excel(output, index=False) output.seek(0) st.download_button("📥 Excel İndir", output, "rapor.xlsx")