Giải bài toán về sắp xếp tối ưu các hình chữ nhật

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Tôi đang tập tành về VBA, nhờ các bạn hướng dẩn cho code đễ điểu khiển việc quay tự động AutoShape theo thời gian... Trong file này, muốn quay thì phải bấm vào Button... Các bạn giúp tôi 1 code sao cho khi tôi bấm vào nút QUAY thì AutoShape sẽ quay... đúng 1 vòng thì dừng hoặc sau khoảng thời gian định trước thì dừng..
ANH TUẤN
 

File đính kèm

ongtrungducmx25 đã viết:
ctrl+break là phím nào zậy mình tìm hoài mà không thấy
Nhìn 3 phím trên mấy phím số đó: Phím bên phải là Pause/Break... chính là nó đó
ctrl+break là bấm phím Ctrl cộng với phím Break
 
Upvote 0
mình gõ vào ctrl+6 thì nó ẩn luôn sau kì zậy anh tuấn giải thích sau nhỉ
 
Upvote 0
Gì có vụ Ctrl + 6 ở đây nữa ta... tôi có thấy nó ẩn gì đâu!
 
Upvote 0
Có đó bác, ctrl+6 dùng để ẩn hiện 3 options: hide/unhide objects và hide/unhide placeholder
 
Upvote 0
ùh mình thấy nó như zậy cách này có hại gì không nế ẩn các objects thì có ai mà biết nhé không ai biết đâu mà rờ
 
Upvote 0
cong đã viết:
Hi anhtuan1066, SoiBien
Thật ra chương trình anhtuan1066 đề cập đến tui chưa gặp lần nào, ngoài thực tế tui đã gặp trường hợp như vậy nè: hình dạng cần cắt rất nhiều (tam giác, chữ nhật, đa giác, ...) tất cả hình dạng này đều được sắp xếp lên 1 tấm tôn bằng tay sao cho tối ưu nhất (ở đây tui thấy người ta sắp xếp bằng Autocad), sau đó xuất hình đó sang máy cắt tôn CNC (cắt bằng Oxy-Acetylen). Ý tưởng của tui ban đầu là làm cho hình chữ nhật thôi, sau đó có thể phát triển thêm cho hình dạng khác. Tui đang bí vấn đề sau:
- Add được nhiều autoshape và các autoshape đó không bị lấp bởi autoshape đại diện cho tấm tôn.
- lập trình cho nút Up, Down, Right, Left để điều chỉnh autoshape vừa mới add.
Mong các bạn giúp đỡ! thanks

Tìm được cái này cho bạn dùng thử trong 30 ngày.
http://astrokettle.com/y2dlp.zip

cho ý kiến xem nhé bạn.
Bác AnhTuan cho ý kiến luôn nhé.
 
Upvote 0
Hi SoiBien,
Ý tưởng làm chương trình sắp xếp Box rất hay, áp dụng vô Excel thì quá tuyệt!! Hiện giờ tui đang lập trình cho ý tưởng của mình. Khi hoàn thành mình sẽ post lên cho các bạn tham khảo!
 
Upvote 0
Mã:
Obtain Stock Sheet Dimensions
Obtain List of n Rectangles
Rotate each Rectangle so that Width >= Height
Sort Rectangle List by Decreasing Width (resolving equal widths by decreasing heights)
Initialize Skyline Array of n Elements
for Each Placement Policy (Leftmost, Tallest Neighbour, Smallest Neighbour) do
    while Rectangles [color=darkblue]Not[/color] Packed do
        Find Lowest Gap
        if (Find Best-Fitting Rectangle == true) then
            Place Best-Fitting Rectangle Using Placement Policy
            Raise Array to Appropriately Reflect Skyline
        Else
            Raise Gap to Lowest Neighbour
        [color=darkblue]End[/color] If
    end while
    
    while Optimisation [color=darkblue]Not[/color] Finished do
        Find Highest Shape
        if (Shape Width >= Shape Height) then
            Optimisation Finished
        [color=darkblue]End[/color] If
        
        Remove Highest Shape
        Reduce Array to Reflect Skyline
        Rotate Shape by 90 Degrees
        
        if (Shape Fits) then
            Place Best-Fitting Rectangle Using Placement Policy
            Raise Array to Appropriately Reflect Skyline
        Else
            Raise Gap to Lowest Neighbour
        [color=darkblue]End[/color] If
        if (Packing Better == [color=darkblue]False[/color]) then
            Optimisation Finished
        [color=darkblue]End[/color] If
    end while
end for
Return Best Solution

Thế thì Hay quá, đọc được cái giải thuật này của Glenn Whitwell.

BÁc tham khảo thêm nhé.
 
Upvote 0
À, nếu vậy thì bác muốn cái file excel kia làm nền cho giải thuật của bác phải không? Vậy mình "xung phong" làm mấy cái nền đó cho, bác làm giải thuật nhé. Hi hi!!!


Nhớ là trong GPE có bài nào của bác Learn Excel có làm một bài mẫu dùng Solver để giải bài toán sắp xếp hình vuông, chắc phải nhờ bác LE ới một phát.

@Admin: Cám ơn bác Admin nhé!
 
Lần chỉnh sửa cuối:
Upvote 0
Hi,
Tui đã làm xong file di chuyển autoshape rồi, mọi người tham khảo nha!
 

File đính kèm

Upvote 0
Oh... lạ nhỉ? Topic tôi lập ra đâu phải có tiêu đề "Giãi bài toán sắp xếp tối ưu..." gì gì đó đâu nhỉ? Bạn nào đó tự xen vào hỏi vấn đề này thôi mà... Lý ra nên dời bài viết bạn ấy ra thành 1 topic khác... Sau lại sửa tiêu đề của tôi...
Câu hỏi của tôi chả liên quan gì đến vụ tối ưu cả...
Hèn gì tìm hoài bài viết của mình mà ko thấy... Thật khó khăn cho những người post bài như tôi quá (tôi đâu có vi phạm nội quy)
 
Upvote 0
Các bác chuyển sang đây nhé :
http://www.giaiphapexcel.com/forum/showthread.php?t=961

Thực ra cái việc xếp tối ưu này đã có từ lâu rồi, giải thật thực tế thì chưa có. Tuy nhiên nó là một phần nhỏ trong phần mềm này thôi (Tối ưu trong không gian 2 chiều). Còn phần mềm này sẽ tối ưu trên không gian 3 chiều.
Khi ta chi chiều cao của thùng và Container là = nhau và bằng 0,01m chẳng hạn, thì nó sẽ ra ngay bài toán của bạn.

NewBib.jpg


[FONT=Verdana, Arial, Helvetica, sans-serif]Cargo Optimizer handles regularly shaped containers such as ocean containers, trucks and refrigerated units. Plus it offers several advanced options such as:[/FONT] [FONT=Verdana, Arial, Helvetica, sans-serif]- loading by sequence
- loading by FILO (First In Last Out)
- multiple container sizes per shipment (no limit)
- multiple package sizes per shipment (no limit)
- manual optimization over-ride
- calculate costings and cost per package being shipped
[/FONT]






Load_Options.jpg






Color-BW.gif





4Views.gif





Selected.gif






ManualLoad.gif



http://www.cargooptimizer.com/OSC/index.php?currency=USD&language=en
http://www.cargooptimizer.com/OSC/feature.php?language=en&currency=USD

Thân!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom