Không gian lấp đầy giữa các dòng 2D ngẫu nhiên


23

Xem xét một khu vực (2D) chứa đầy các dòng ngẫu nhiên (Hình sau). Chúng tôi quan tâm đến việc lấp đầy các khoảng trống giữa các dòng bao gồm bốn cạnh biên theo một cách:

0- tối đa hóa kích thước của bưu kiện;
1- hình dạng của bưu kiện điền là hình vuông được sắp xếp theo chiều ngang hoặc chiều dọc;
2- hình dạng của bưu kiện điền là hình vuông, nghĩa là căn chỉnh thoải mái ;
3- hình dạng của bưu kiện điền là bất kỳ tứ giác. câu hỏi ban đầu của chúng tôi

Vì vậy, bây giờ có ba kịch bản khác nhau.
Lưu ý rằng các dòng là [x1,y1,x2,y2]tập hợp điểm mẫu , số thực.

[* * *] Ý tưởng về các giải pháp / thuật toán / đoạn mã / khả thi có thể được chào đón nhiều hơn.

nhập mô tả hình ảnh ở đây


Cập nhật 1: Chúng tôi có thể quản lý giải pháp cho trường hợp đầu tiên:
nhập mô tả hình ảnh ở đây
Các bước là:
1- dòng
2- rasterizing các dòng thành bitmap
3- tìm kiếm các ô gần đó cho mỗi ô có màu mong muốn (nghĩa là cùng màu) với hàm mục tiêu để tối đa hóa diện tích tức là số lượng ô.

Nó hoạt động tốt tuy nhiên nó chỉ bao gồm kịch bản đầu tiên và nó cũng chậm.


Cập nhật 2:
Chúng tôi giả định rằng người đọc đã quen thuộc với khái niệm ốp lát không gian. Bạn có thể theo liên kết cho cảm hứng. Tuy nhiên lưu ý rằng vấn đề của chúng tôi là khác nhau. Vì chúng tôi không lấp đầy không gian trống một cách ngẫu nhiên và chúng tôi không chọn kích thước ngẫu nhiên. Các giải pháp nên được lặp đi lặp lại. Đối với tất cả các trường hợp, không có giới hạn về số lượng bưu kiện được trang bị. Thật vậy, tùy thuộc vào người dùng để giới hạn số lần lặp, bằng cách chọn một khu vực tối thiểu cho bưu kiện, ví dụ. Điều này là rõ ràng trong ví dụ được đưa ra ở trên, trong đó chúng tôi phân tách các dòng thành các pixel với kích thước được chỉ định. Đó là, thủ tục nên chạy cho đến khi toàn bộ khu vực trống được lấp đầy theo tiêu chí, ví dụ, diện tích tối đa của bưu kiện.


Cập nhật 3:
tóm tắt:
Một ứng dụng là tìm ra sự phân phối các khối 'đá' nguyên vẹn có thể trích xuất được trong một 'mỏ' bị gãy rất nhiều. Điều này có thể rất hữu ích cho nhiều khía cạnh bao gồm thiết kế khoan, đánh giá tài chính, vv
mô tả:
Đối với một mỏ đá trang trí (đá), các sản phẩm là các khối đá còn nguyên vẹn được cắt thành hình khối chữ nhật, giá cả phụ thuộc chặt chẽ vào kích thước của khối. Khai thác một khối từ một khu vực phù hợp, nghĩa là không có vết nứt lớn sẽ được mong muốn nếu số lượng các phần còn lại càng nhỏ càng tốt. Thông thường, các mảnh đá nhỏ không có giá trị kinh tế tương đối và được coi là chất thải.
Câu hỏi trong bài này điều tra các giải pháp cho loại vấn đề này.

Một quan điểm toán học cho vấn đề có thể được trình bày như sau:
2D: Tìm tất cả các hình chữ nhật có thể được trích xuất từ ​​một vùng 2D nhất định với một số dòng được tối ưu hóa cho kích thước hình chữ nhật lớn hơn có thể.
3D: Tìm tất cả các hình khối hình chữ nhật có thể được trích xuất từ ​​một vùng 3D nhất định với một số mặt phẳng phụ (tốt hơn: đa giác) được tối ưu hóa cho kích thước khối lớn hơn có thể.


Vì đây là một phần của nghiên cứu đang diễn ra, một số câu hỏi được hỏi trong các bình luận bên dưới không có câu trả lời nhất định mà chúng tôi có thể cung cấp. Chúng tôi tin rằng thông tin được cung cấp ở đây cho đến nay thực sự đủ để có được bức tranh tổng thể về vấn đề. Tuy nhiên, chúng tôi cung cấp một số chi tiết có thể vì lợi ích cộng đồng.
Bạn có thể đặt một số hạn chế cho giải pháp cho câu hỏi cuối cùng, mặc dù vậy, chúng tôi tin rằng luôn luôn có thể bổ sung thêm sau này. Ví dụ: làm theo những điều sau: {trường hợp 2D}
Kích thước tốt nhất của một khối (hình chữ nhật tối ưu về mặt kinh tế) được trích xuất theo các điều kiện được đề cập ở trên, được 1x1 mđưa ra 10x10 mcho khu vực trong ví dụ. Đây là một ràng buộc được xác định dựa trên giá trị kinh tế. Kích thước khả thi tối thiểu để cắt vv, hãy là0.15x0.15 m; Vì vậy, đây là giới hạn kích thước thứ hai.
nhập mô tả hình ảnh ở đây
Hình trên cho thấy hàm giá trị kinh tế tùy thuộc vào kích thước khối. Vì vậy, đối với trường hợp cụ thể này, mỗi mảnh đá nhỏ hơn 0.15x0.15 mchỉ là chất thải. Sẽ không có kích thước khối lớn hơn 1.7x1.7 mdo giới hạn hoạt động.


3
@RK - Tôi không đồng ý. Anh ấy đã nói rõ những gì họ đang tìm kiếm rất rõ ràng. Chắc chắn có nhiều giải pháp khả thi nhưng không có gì ngăn cản tất cả chúng đều hữu ích và được bình chọn.
GIS-Jonathan

1
Vì đây là một câu hỏi thuật toán có thể khá nặng về toán học, bạn có thể muốn thử - math.stackexchange.com
GIS-Jonathan

1
Liên quan chặt chẽ: gis.stackexchange.com/questions/27303 . Câu hỏi hiện tại, như @RK lưu ý, không có câu trả lời chắc chắn vì nó không được đặt ra đầy đủ. Có bao nhiêu hình chữ nhật được phép? "Tối đa hóa kích thước" nghĩa là gì? Cũng lưu ý rằng đây không phải là vấn đề "ốp lát ngẫu nhiên": các dòng chỉ xác định, thông qua phần bù của chúng, các khu vực có thể bị chiếm dụng; các giải pháp chắc chắn sẽ không ngẫu nhiên. Cũng lưu ý rằng một đơn giản hóa dễ dàng có sẵn ngay lập tức: vấn đề có thể được giải quyết riêng trong từng thành phần của phần bù.
whuber

1
@whuber: Chà, một ứng dụng mà chúng tôi quan tâm là tìm ra sự phân phối các khối 'đá' nguyên vẹn có thể trích xuất được trong một 'mỏ' bị gãy rất nhiều. Vâng, GIS có vẻ hứa hẹn cho vấn đề này, chúng tôi nghĩ. Chúng tôi đã thêm điều này vào câu hỏi quá. Chúng tôi đoán, cộng đồng GIS có thể được hưởng lợi từ ý tưởng cho các vấn đề cụ thể khác liên quan của họ. Dù sao, tùy thuộc vào bạn nếu bạn di chuyển nó;)
Nhà phát triển

4
Như @whuber gợi ý, đây thực sự không phải là một câu hỏi về GIS (mặc dù tôi không xúc phạm rằng nó được hỏi ở đây.) Bạn sẽ may mắn hơn nhiều khi nhận được câu trả lời trong một diễn đàn về hình học tính toán hoặc tối ưu hóa.
Llaves

Câu trả lời:


2

Tôi có một ý tưởng về cách bạn lặp đi lặp lại từ các khối lớn xuống các khối nhỏ hơn bằng FME (bởi Phần mềm an toàn.) Đối với bản ghi tôi không làm việc cho họ nhưng dường như ca ngợi công cụ của họ đủ ...

  1. Sử dụng "BoundingBoxReplacer" trên khu vực quan tâm.
  2. Tái định vị nó thành một hệ tọa độ cục bộ (để sau này khi bạn cần "xếp" theo bộ / mét.)
  3. Bộ đệm các dòng với biến áp "Bộ đệm". Bạn chỉ cần một kích thước tùy ý, giả sử .01 ft / mét. Những gì chúng tôi đang tìm kiếm ở đây là một đa giác của dòng cho bước tiếp theo.
  4. Thêm một biến áp "Tiler". Chỉ định Kích thước Ngói lớn (ước tính hoặc cách khác) tính bằng feet hoặc mét. Những gì chúng tôi đang làm ở đây là ốp lát khu vực quan tâm thành các khối vuông. Tùy thuộc vào tập dữ liệu bắt đầu lớn để thực sự có được các ngoại lệ lớn.
  5. Thêm một biến áp "Clip". Những gì chúng tôi đang làm ở đây về cơ bản là cắt các tập dữ liệu để xem gạch nào là tốt / xấu. Về đầu ra, các ô "Bên trong" quá lớn. Tuy nhiên, gạch "Bên ngoài" đủ lớn và sẵn sàng để cắt ...
  6. Đây là nơi phức tạp, nhưng không khó ... Chúng tôi sẽ lặp lại máy biến áp để chúng tôi sử dụng lại BoundingBox ban đầu, nhưng cắt bỏ các khu vực đã sẵn sàng để cắt. Vì vậy, hãy thêm một clipper và định tuyến cho Clip dưới dạng các ô "Đầu ra" trên đầu ra của clipper trước đó. Bây giờ chúng tôi có một đa giác duy nhất đã sẵn sàng để làm việc lại.
  7. Sử dụng lại phần mềm, lần này chỉ định một ô nhỏ hơn. Ví dụ: nếu bạn đã sử dụng gạch 100 mét trước đó, hãy thử 90 mét.
  8. Thêm một clipper khác, với clipper đầu vào là các dòng được đệm và clippee đầu vào là các ô nhỏ hơn làm đầu vào.

Rửa sạch và lặp lại nhiều lần nếu cần thiết bằng cách sử dụng gạch nhỏ hơn mỗi lần. Tôi đã đính kèm khi bắt đầu một bàn làm việc tôi sẽ sử dụng như một cách tiếp cận.

Dựa trên mô tả (chi tiết độc đáo) của bạn, nó sẽ chỉ hoạt động với tùy chọn 1 của bạn bây giờ. Mà không dành quá nhiều thời gian vừa rồi.

Dù sao, đây chỉ là một cách tiếp cận mà tôi sẽ bắt đầu với ít nhất là lọc lúa mì từ vỏ trấu.

Ví dụ về gạch FME

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.