2010-06-05 34 views
8

Đã thử thực hiện một số nghiên cứu về những điều sau đây mà không có may mắn. Tôi nghĩ tôi sẽ hỏi ở đây trong trường hợp ai đó đã gặp nó trước đây.Tôi đang tìm kiếm một thuật toán lập kế hoạch quảng cáo vô tuyến/ví dụ/kinh nghiệm

Tôi giúp một đài phát thanh tình nguyện chạy với nhu cầu công nghệ của họ. Một trong những điều chính đã xuất hiện là họ muốn lên lịch quảng cáo của họ theo chương trình.

Có rất nhiều công cụ quy tắc gọn gàng và phức tạp ngoài quảng cáo, nhưng tất cả những gì chúng tôi cần là một thứ khá đơn giản (cùng với bất kỳ trải nghiệm nào đáng để suy nghĩ).

Tôi muốn viết một cái gì đó trong SQL nếu có thể để đối phó với các thực thể này. Lý tưởng nhất là nếu ai đó đã viết một cái gì đó như thế này cho các phương tiện quảng cáo khác (web, vv,) nó sẽ thực sự hữu ích.

Đối tượng:

  • Quảng cáo
  • rao Thể loại (bao gồm một thể loại, # của lượt mỗi ngày, ngày tháng, ngày kết thúc hoặc chơi vĩnh viễn bắt đầu) (Nhà hàng, Y tế, cửa hàng thực phẩm, vv)

Để đơn giản hóa quá trình này, đây sẽ là câu lệnh sql thanh lịch. Bắt đó ... :)

Tôi muốn để có thể tạo ra một danh sách nhạc mỗi ngày bằng cách sử dụng hai thực thể ở trên đó:

  • Không có hai quảng cáo trong cùng thể loại được chơi trong vòng x số lượng quảng cáo của nhau.
  • (tốt đẹp để có) quảng cáo khuyến mãi cao có thể được đẩy

Tại thời điểm này, không có "thời điểm quảng cáo" để điền vào. Không có cân nhắc "thời gian trong ngày".

Chúng tôi xếp hàng quảng cáo cho ban ngày và đi qua chúng giữa các bài hát/show, vv Chúng tôi biết có bao nhiêu mỗi giờ chúng ta phải điền vv

Bất kỳ suy nghĩ/ý tưởng/links/ví dụ? Tôi sẽ tiếp tục tìm kiếm và hy vọng đi qua một cái gì đó thay vì học nó một chặng đường dài.

+1

Tôi đang bỏ phiếu để đóng vì, trong khi được cho là thú vị, có vẻ như không có vấn đề * lập trình * ở đây. –

+4

chắc chắn có, ông nói rằng ông muốn làm điều đó trong SQL. âm thanh như một vấn đề lập trình với tôi. –

+0

Tôi đang tìm cách giải quyết điều này trong SQL, thủ tục lưu trữ, vv, nếu có thể. –

Trả lời

1

Câu hỏi rất thú vị, SMO. Ngay bây giờ nó trông giống như một vấn đề lập trình ràng buộc bởi vì bạn không tìm kiếm một giải pháp tối ưu, chỉ là một giải pháp đáp ứng tất cả các ràng buộc mà bạn đã chỉ định. Để đáp lại những ai muốn đóng câu hỏi, tôi muốn nói rằng họ cần kiểm tra lập trình ràng buộc một chút. Nó gần gũi hơn với stackoverflow mà bất kỳ trang web nghiên cứu hoạt động nào.

Nhìn vào lập trình và lập lịch ràng buộc - Tôi sẽ đặt cược bạn sẽ tìm thấy một vấn đề tương tự thổi còi ngọt ngào!

Hãy để chúng tôi đăng sự tiến bộ của bạn.

+0

Cảm ơn, hạn chế âm thanh lập trình giống như điều tôi có thể đọc được để chắc chắn .. http://www.google.ca/search?hl=vi&safe=off&client=safari&rls=en&q=constraint+programming+for+scheduling&aq=f&aqi=&aql= & oq = & gs_rfai = Tôi không phải là người hâm mộ viết lại mọi thứ khi tôi nhận ra. Cảm kích điều đó! –

+0

Bạn nhận được nó SMO - điều này xuất hiện thường xuyên. Hãy ủng hộ chúng tôi và thêm một thẻ lập trình ràng buộc vào câu hỏi của bạn. – Grembo

+0

Chúc mừng, tôi nghĩ đây có thể là một con đường tốt để đi xuống ... có một chút công việc trước khi làm quen với các khái niệm và tôi nghĩ rằng tôi đã tìm thấy một thư viện Java tốt, có vẻ như đủ về phía trước. Tôi đang xem xét cố gắng thất bại và viết nó với sql lần đầu tiên để tìm hiểu những điểm đau ... bạn nghĩ sao? Cảm ơn! –

0

Bỏ qua yêu cầu T-SQL cho thời điểm này vì đó là khó có thể là ngôn ngữ tốt nhất để viết những dòng này trong ...

Một trong những yêu thích của tôi cách tiếp cận vấn đề khó khăn 'bố trí' như thế này là Simulated Annealing. Đó là cách tiếp cận tốt vì bạn không cần phải suy nghĩ CÁCH để giải quyết vấn đề thực tế: tất cả những gì bạn xác định là thước đo bố cục hiện tại tốt như thế nào (điểm số nếu bạn muốn) và sau đó bạn cho phép thay đổi ngẫu nhiên tăng hoặc giảm điểm đó.Qua nhiều lần lặp, bạn dần dần giảm xác suất di chuyển đến một điểm số tồi tệ hơn. Cách tiếp cận 'ủ mô phỏng' này làm giảm khả năng bị kẹt ở mức tối thiểu địa phương.

Vì vậy, trong trường hợp của bạn, chức năng chấm điểm cho một bố trí cụ thể có thể dựa trên khoảng cách đến quảng cáo tiếp theo trong cùng một danh mục và khoảng cách đến một quảng cáo khác của cùng một chuỗi. Nếu sau này bạn có cân nhắc về thời gian trong ngày, bạn có thể dễ dàng thêm chúng vào hàm số điểm.

Ban đầu bạn phân bổ quảng cáo tuần tự, đồng đều hoặc ngẫu nhiên trong cửa sổ thời gian của chúng (không thực sự quan trọng). Bây giờ bạn chọn hai khe và xem xét điều gì sẽ xảy ra với điểm số khi bạn chuyển nội dung của hai vị trí đó. Nếu một trong hai quảng cáo di chuyển ra khỏi phạm vi cho phép của nó, bạn có thể từ chối thay đổi ngay lập tức. Nếu cả hai vẫn còn trong phạm vi, liệu nó có đưa bạn đến một điểm tổng thể tốt hơn? Ban đầu bạn thay đổi ngẫu nhiên ngay cả khi họ làm cho nó tồi tệ hơn nhưng theo thời gian bạn giảm xác suất xảy ra để cuối cùng bạn đang di chuyển đơn điệu hướng tới một điểm số tốt hơn.

dễ dàng để thực hiện, dễ dàng để thêm mới 'quy tắc' có ảnh hưởng đến điểm số, có thể dễ dàng điều chỉnh thời gian chạy để chấp nhận một 'đủ tốt' câu trả lời, ...

cách tiếp cận khác sẽ được sử dụng một thuật toán di truyền , hãy xem câu hỏi tương tự này: Best Fit Scheduling Algorithm điều này có thể khó lập trình hơn nhưng có thể sẽ hội tụ nhanh hơn trên một câu trả lời hay.

+0

-1 để đóng đinh bằng nĩa nâng –

+0

Đó là búa tạ về việc sử dụng CPU, nhưng một cái búa nhỏ về số lượng mã nó cần để tạo ra một câu trả lời 'đủ tốt'. Đó cũng là giải pháp * rất linh hoạt về quy tắc kinh doanh mới (chắc chắn sẽ đến, ví dụ: nhà quảng cáo Y thích buổi sáng, ...). Nó cũng có khả năng tìm một giải pháp đủ tốt ngay cả khi không có giải pháp hoàn hảo nào tồn tại (ví dụ: quá nhiều nhà quảng cáo trong một danh mục cụ thể ngày hôm nay). –

+0

Điều này trông giống như một ý tưởng hay. Đối với thời gian và nguồn lực tình nguyện mà tôi có, tôi muốn sử dụng sql vì nó không đòi hỏi phải liên kết hoặc tìm ra bất kỳ công nghệ mới nào.Có bất kỳ gói phần mềm/thư viện nguồn mở nào có thể giúp trừu tượng hóa một số sự tái tạo của bánh xe không? –

Các vấn đề liên quan