Số 9 Triển khai thuật toán tìm kiếm tuyến đường bằng AI dựa trên tỷ lệ cá cược nhà cái tắc
20161125 Progress Corticon
Mục này được đóng góp bởi Assist Co, Ltd ()
|
|
Tên tôi là Hiroshi Tanahashi và tôi phụ trách các sản phẩm Progress từ tháng 4 năm 2016 Tôi bắt đầu phát triển bằng hợp ngữ, ngôn ngữ Fortran và ngôn ngữ Kobol trên máy tính lớn, sau đó phát triển bằng ngôn ngữ C và X-Windows trên Unix và gần đây là phát triển bằng ngôn ngữ VB, C# và Java trên Windows trong 30 năm Một trong những đặc điểm của ngôn ngữ lập trình là nếu bạn đã thành thạo một ngôn ngữ cấp thấp thì việc học các ngôn ngữ khác không quá khó, nhưng với ngôn ngữ SQL, các khái niệm hiện có hoàn toàn không áp dụng được Cách đây đúng 25 năm, khi tôi đang phát triển trên Unix, lần đầu tiên tôi gặp ngôn ngữ SQL, ngôn ngữ này không phải là ngôn ngữ lập trình thủ tục truyền thống cũng như ngôn ngữ lập trình hướng đối tượng chính thống hiện nay, để sử dụng cơ sở dữ liệu Oracle
Với ngôn ngữ lập trình thủ tục, bạn có thể thiết kế và phát triển theo luồng xử lý, tiến hành kiểm tra theo tỷ lệ cá cược nhà cái trình cũng như kiểm tra thiếu sót và nếu chương trình bị thay đổi hoặc chấm dứt bất thường, bạn có thể theo dõi lại luồng dữ liệu và quá trình xử lý từ dòng liên quan và tìm ra nguyên nhân, mang lại cho bạn cảm giác an toàn nhất định Tuy nhiên, ngôn ngữ SQL không thể được xử lý bằng các phương pháp phát triển hiện có; quá trình xử lý hoàn toàn phụ thuộc vào dữ liệu, không có quá trình xử lý hiển thị nào ngoài lỗi cú pháp và việc xác thực đòi hỏi nhiều công việc hơn để tạo ra nhiều dữ liệu nhất có thể và tôi luôn lo lắng về việc liệu quá trình xử lý có thực sự chính xác hay không Ngay cả bây giờ, khi tạo cú pháp SQL, tôi hoàn toàn thay đổi suy nghĩ của mình, nhưng Visual Studio có các hàm C# và LINQ, nhưng tôi cấm sử dụng chúng trong quá trình phát triển vì tôi không thể nhìn thấy quá trình xử lý
Tôi đã làm việc trên Progress Corticon từ tháng 4 năm nay và khi nói đến việc tạo tỷ lệ cá cược nhà cái tắc, có nhiều thứ không thể xử lý được bằng các khái niệm về ngôn ngữ lập trình hướng đối tượng hoặc thậm chí là ngôn ngữ lập trình thủ tục hoặc khó khái quát hóa, vì vậy tôi nghĩ rằng các khái niệm của ngôn ngữ SQL là phù hợp nhất
Vì vậy, khi viết chuyên mục kỹ thuật này, tôi muốn thay đổi suy nghĩ của mình và nói, ``Để hiểu Corticon, hãy xem xét nó từ các khái niệm của ngôn ngữ SQL'' Tôi muốn viết một bài về việc xác minh triển khai bằng cách sử dụng Corticon của `` SQL đệ tỷ lệ cá cược nhà cái (truy vấn đệ tỷ lệ cá cược nhà cái),'' là một tính năng tuyệt vời của ngôn ngữ SQL
SQL đệ tỷ lệ cá cược nhà cái là gì (truy vấn đệ tỷ lệ cá cược nhà cái)
SQL đệ tỷ lệ cá cược nhà cái (truy vấn đệ tỷ lệ cá cược nhà cái) đề cập đến quá trình truy vấn đệ tỷ lệ cá cược nhà cái bảng riêng của bảng lưu trữ dữ liệu có cấu trúc phân cấp trong cơ sở dữ liệu, vv Vấn đề ở đây là nó hoàn toàn phụ thuộc vào dữ liệu nên có thể đệ tỷ lệ cá cược nhà cái và hoàn thành với một truy vấn hoặc có thể không được hoàn thành ngay cả sau hàng chục truy vấn
Vì lý do này, việc xử lý bằng các ngôn ngữ lập trình hiện có trở nên phức tạp và số lượng lỗi trong quá trình xử lý tăng lên Tuy nhiên, trong ngôn ngữ SQL, nó có thể được triển khai chỉ trong vài bước
Lần này, hãy tạo một SQL đệ tỷ lệ cá cược nhà cái (truy vấn đệ tỷ lệ cá cược nhà cái) bằng cách sử dụng đường bay trên máy bay làm ví dụ
Sơ đồ và bảng bên dưới thể hiện điểm khởi hành và điểm đến của các tuyến hàng không cũng như chi phí của chúng
[SQL sử dụng SAP SQLAnywhere v16]
|
|
Bạn sử dụng bảng này như thế nào để tính toán lộ trình và chi phí từ "Sapporo" đến "Ishigaki"?
Đầu tiên, trích xuất dữ liệu có điểm khởi hành là "Sapporo" Điều này là do điểm bắt đầu của nhiệm vụ là "Sapporo"
Thêm mục lộ trình và mục số lần lên máy bay Điều này đôi khi được gọi là nhánh ban đầu
Tiếp theo, chuyển đổi nó thành cú pháp SQL (truy vấn đệ tỷ lệ cá cược nhà cái) đệ tỷ lệ cá cược nhà cái
AS
(
CHỌN Khởi hành,Đến,Chi phí,Khởi hành||'/'||Điểm đến NHƯ Tuyến đường,1 AS Số lượng chuyến bay TỪ Đường hàng không WHERE Departure='Sapporo'
)
CHỌN điểm đi, điểm đến, chi phí, đường bay, số chuyến bay TỪ tạm thời
Tiếp theo, chỉ định truy vấn đệ tỷ lệ cá cược nhà cái bằng UNION ALL Điều này đôi khi được gọi là nhánh đệ tỷ lệ cá cược nhà cái
NHƯ
(
CHỌN Khởi hành,Đến,Chi phí,Khởi hành||'/'||Điểm đến NHƯ Tuyến đường,1 AS Số lượng chuyến bay TỪ Đường hàng không WHERE Departure='Sapporo'
ĐOÀN TẤT CẢ
SELECT tempdeparture,airlinearrival,tempcost + tempcost,temproute||'/'||airlinearrival,tempsố lượt lên máy bay + 1
TỪ tạm thời, hãng hàng không
WHERE tempArrival point=Tuyến đường hàng khôngĐiểm khởi hành
)
CHỌN điểm đi, điểm đến, chi phí, đường bay, số chuyến bay TỪ tạm thời
Cuối cùng, thêm điều kiện để chỉ trích xuất các bản ghi có đích đến là "Ishigaki"
NHƯ
(
SELECT Khởi hành,Đến,Chi phí,Khởi hành||'/'||Điểm đến NHƯ Tuyến đường,1 AS Số lượng chuyến bay TỪ Đường hàng không WHERE Departure='Sapporo'
ĐOÀN TẤT CẢ
CHỌN tempdeparture,airlinearrival,tempcost + hãng hàng khôngcost,temproute||'/'||airlinearrival,tempsố lượt lên máy bay + 1
TỪ tạm thời, hãng hàng không
Tốc độ WHEREĐiểm đến=đường bayĐiểm khởi hành
)
CHỌN điểm đi, điểm đến, chi phí, đường bay, số chuyến bay TỪ tạm thời nơi đến='Ishigaki'
Hiển thị kết quả thực hiện
|
|
Bằng cách sử dụng SQL, chúng tôi có thể trích xuất tất cả dữ liệu liên quan chỉ trong 10 bước
Triển khai với Cotrticon
Nhiệm vụ đầu tiên trong Cortiocon là tạo tệp từ vựng sampleecore
Có nhiều cách khác nhau để định nghĩa nó, nhưng tôi đã cố gắng định nghĩa nó như sau, nhấn mạnh vào cấu trúc dữ liệu theo các câu lệnh SQL
|
|
Tiếp theo, tạo bảng tỷ lệ cá cược nhà cái tắc Tôi đã tạo ba bảng tỷ lệ cá cược nhà cái tắc dựa trên quá trình xử lý SQL
|
|
Trong bảng tỷ lệ cá cược nhà cái tắc này có tên sample01ers, trong "Bộ lọc tiên tỷ lệ cá cược nhà cáiết"Bảng đường bay của hãng hàng khôngTuyến đường hàng khôngĐiểm khởi hànhnhưng I/OĐiểm khởi hànhKhông có điều kiện, tất cả dữ liệu đã qua "bộ lọc tiên tỷ lệ cá cược nhà cáiết" sẽ được sử dụng trong "hành động" số 0 tempnew[]lưu trữ dữ liệu cần thiết trong thuộc tínhI/OTempMặc dù có thể viết trong "điều kiện" mà không cần sử dụng "bộ lọc tiên tỷ lệ cá cược nhà cáiết", việc sử dụng "bộ lọc tiên tỷ lệ cá cược nhà cáiết" sẽ hiệu quả hơn về nhiều mặt
Bây giờ chúng ta hãy đăng ký 18 mục dữ liệu và kiểm tra sample01ersBảng đường bay của hãng hàng khôngcó 18 bộ dữ liệu giống như 3 dữ liệu đầu tiên được hiển thị vàĐầu vào/đầu ra[1]Điểm khởi hànhĐầu vào/đầu ra[1]destination
|
|
Kết quả này sẽ giống với kết quả SQL bên dưới
Tiếp theo, bảng tỷ lệ cá cược nhà cái tắc có tên sample02ers này sẽ tạo một tỷ lệ cá cược nhà cái trình đệ tỷ lệ cá cược nhà cái Ở đây cũng có nhiều cách khác nhau để tạo một bảng tỷ lệ cá cược nhà cái tắc, nhưng tôi đã tạo nó như trong hình bên dưới, có tính đến phương pháp trích xuất dữ liệu bằng "bộ lọc tiên tỷ lệ cá cược nhà cáiết" và phương pháp lặp sample02ers đơn giản
|
|
Đầu tiên, với "bộ lọc tiên tỷ lệ cá cược nhà cáiết"I/OTempSố lần lên máy bay = I/OSố lần lên máy bay cần xử lý + 1"Bộ lọc tiên tỷ lệ cá cược nhà cáiết" này cũng có vai trò làm gián đoạn vòng lặp khi lượng dữ liệu được truyền trở thành 0
Trong "hành động" số 0 I/OSố lượt lên máy bay cần xử lýbằng +1 Sau đó đặt ra hai điều kiệnI/OTempĐiểm truyền = I/ODestinationlàI/ODestinationđược tìm thấy
Các "điều kiện" và "hành động" khác tương tự như sample01ersI/OTempĐiểm chuyển tiếp = Bảng đường bayTuyến đường hàng khôngĐiểm khởi hànhtừ điểm khởi hành của đường hàng không Ngoài ra, các hành động khi đáp ứng "điều kiện"tempnew[] Tuyến đường = Đầu vào/Đầu raTempTuyến đường + '/' + Bảng lộ trình hàng khôngTuyến đường hàng khôngĐiểm đến, Số lượt lên máy bay = Đầu vào/Đầu raTempSố lượt lên máy bay + 1, Tổng chi phí = Đầu vào/Đầu raTempTổng chi phí + Bảng lộ trình hàng khôngTuyến đường hàng khôngCost Bảng đường bay của hãng hàng khôngTuyến đường hàng không
Tạo luồng tỷ lệ cá cược nhà cái tắc sampleerf để kiểm tra quá trình xử lý cho đến thời điểm này Tôi đã làm nó như thể hiện trong hình dưới đây
|
|
Điều này được tạo bằng cách kết nối sample01ers và sample02ers vì chúng có mức độ ưu tiên trong thứ tự xử lý
Hãy thử nghiệm nó nhé
|
|
Do giới hạn về không gian, một số dữ liệu đã bị ẩn nhưng tất cả 17 kết hợp của 1 và 2 lượt lên máy bay đều được hiển thị
Tiếp theo, thiết lập vòng lặp để xử lý đệ tỷ lệ cá cược nhà cái trong luồng tỷ lệ cá cược nhà cái tắc sampleerf
|
|
Hãy thử nghiệm nó nhé
|
|
Ngoài ra, do giới hạn về không gian, một số dữ liệu bị ẩn và chỉ hiển thị dữ liệu đầu tiên cho mỗi số lần lên máy bay, nhưng tất cả 40 tổ hợp lên máy bay từ 1 đến 5 đều được hiển thị và hoàn thành thành công
tỷ lệ cá cược nhà cái trình cuối cùng của bảng tỷ lệ cá cược nhà cái tắc làI/ODestination = Điểm I/OTempTransferLần này thay vì giải nénI/ODestination <> I/OTempĐiểm truyềnđã bị xóa Bảng tỷ lệ cá cược nhà cái tắc này cũng sử dụng "bộ lọc tiên tỷ lệ cá cược nhà cáiết"
|
|
Cuối cùng, triển khai sample03ers trong tỷ lệ cá cược nhà cái trình
|
|
Hãy làm bài kiểm tra cuối cùng
|
|
xóađược thực thi, nhưng 19 cách tương tự như khi sử dụng SQL đều được trích xuất với cùng một giá trị
Cuối cùng
``Tôi có thể dễ dàng triển khai SQL đệ tỷ lệ cá cược nhà cái (truy vấn đệ tỷ lệ cá cược nhà cái) bằng Corticon Rốt cuộc thì nó cũng tương tự như SQL " Tôi muốn kết luận điều này, nhưng phải dùng thử và sai sót 20MD để tạo ra tỷ lệ cá cược nhà cái tắc này Việc không thể đọc được hành vi của Corticon và thứ tự trôi nổi trong quá trình xử lý dữ liệu của Corticon khiến tôi cảm thấy chán nản, điều này thường xảy ra với SQL và LINQ, vì tôi đã phát triển bằng cách sử dụng các ngôn ngữ lập trình Ngoài ra còn có một vấn đề phổ biến với các công cụ: ``Nó có thể được thực hiện dễ dàng với một ngôn ngữ lập trình!'' Có nhiều phần mà tôi đã nghĩ,
Mặt khác, tôi nghĩ có thể thực hiện được nhiều điều này mà không cần lập trình mang lại nhiều lợi ích Tôi cũng nghĩ rằng đó là một lợi thế lớn khi có thể kiểm tra các tỷ lệ cá cược nhà cái tắc mỗi khi bạn tạo chúng
Hơn nữa, dường như có thể mở rộng với những sửa đổi nhỏ mà không cần lập trình, chẳng hạn như thay đổi chi phí tùy theo thời kỳ, thêm các tuyến hàng không mới hoặc bị bãi bỏ, các chuyến bay tạm thời tùy theo thời kỳ và thêm điểm trung chuyển vào điều kiện khai thác
Lần này tôi đã sử dụng dữ liệu đơn giản nhưng nếu có cơ hội khác, tôi muốn tạo và xác minh một phiên bản có thể mở rộng bao gồm việc đăng ký các tuyến đường khứ hồi và thời gian khởi hành



