A Python application that optimizes cutting of profile raw materials (steel, aluminum, etc.) to minimize waste.
- Best Fit Decreasing (BFD) algorithm with local swap optimization
- Support for miter cuts (Gehrung) with angle tracking
- Excel output with 3 sheets (Cutting Plan, Unfulfilled Demands, Summary)
- Print-ready formatting for direct use on the shop floor
- Simple GUI interface for easy operation
# Navigate to project directory
cd c:\Projects\ProfileCutOptim
# Create virtual environment (optional but recommended)
python -m venv venv
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txtpython -m src.mainpython -m pytest tests/ -v| Column | Description |
|---|---|
part_number |
Profile part number |
lot_batch |
Lot/batch identifier |
length |
Length of stock piece |
length_limit |
Max piece length (optional) |
storage_location |
Storage location |
uom |
Unit of measurement |
| Column | Description |
|---|---|
order_no |
Order number |
line_no |
Line number |
component_part_number |
Required part number |
part_description |
Description |
lot_size |
Assemblies in order |
required_qty |
Pieces per assembly |
length |
Length per piece |
demand_date |
Required date (YYYY-MM-DD) |
cut_type |
straight or miter |
angle_left |
Left angle (degrees) |
angle_right |
Right angle (degrees) |
cutting_code |
Cutting code reference |
uom |
Unit of measurement |
| Parameter | Default | Description |
|---|---|---|
| Cut Thickness | 3.0 mm | Material lost per cut (kerf) |
| Timespan | 30 days | Days to include in optimization |
| Min Remnant Length | 100 mm | Minimum to save as remnant |
| Good Enough | 5% | Waste threshold to stop optimization |
The application generates an Excel file with:
- Cutting Plan - Hierarchical view of cuts per stock piece
- Unfulfilled Demands - Orders that couldn't be fulfilled
- Summary - Waste statistics per part number
MIT License