슬롯 블로그 | 슬롯 철저한 활용 내비게이션No.9 온라인 슬롯 기반 AI를 사용하여 경로 검색 알고리즘을 구현하십시오.

온라인 슬롯 철저한 사용 블로그

No.9 온라인 슬롯 기반 AI를 사용하여 경로 검색 알고리즘을 구현하십시오.

2016.11.25 Progress Corticon

이 항목은 Assist Co., Ltd. (https : //www.ashisuto.co.jp/product/category/brms/progress_corticon/column/detail/brmstech09.html)의 재 인쇄입니다.

No.9 온라인 온라인 슬롯 기반 AI를 온라인 온라인 슬롯 경로 검색 알고리즘을 구현하십시오.

이것은 2016 년 4 월부터 진행 제품을 담당 한 Tanahashi Hiroshi입니다. 저는 주로 어셈블러 언어, Fortran 언어 및 Kobor 언어, C 언어 및 X- 윈도우를 사용하여 UNIX를 사용하여 주 프레임에서 개발하고 있으며 VB, C# 및 Java 언어를 사용하여 Windows에서 개발했습니다. 프로그래밍 언어의 특징 인 하위 수준의 언어를 획득 한 경우 다른 언어를 획득하는 것은 그리 어렵지 않았지만 SQL 언어의 기존 개념은 전혀 적용되지 않았습니다. 정확히 25 년 전에 UNIX에서 개발할 때 Oracle 데이터베이스를 사용하기 위해 절차 프로그래밍 언어 나 현재 주류 객체 지향 프로그래밍 언어가 아닌 SQL 언어를 처음 발견했습니다.
절차 적 프로그래밍 언어의 경우 프로세스 흐름을 염두에두고 프로세스 흐름을 염두에두고 디자인하고 개발했으며, 프로세스에 따라 테스트하고 누락 된 경우 테스트했으며, 프로그램이 비정상적으로 점차 또는 종료되면 관련 라인에서 데이터 및 처리 흐름으로 거꾸로 이동하여 원인을 찾을 수있었습니다. 그것은 우리에게 안전감을 주었다. 그러나 기존 개발 방법으로 SQL 언어를 처리 할 수 ​​없으며 구문 오류를 제외하고 처리는 완전히 데이터 의존적이며 검증에는 가능한 많은 데이터 생성이 필요하며 프로세싱이 실제로 올바른지 항상 걱정하고 있습니다. 지금도 SQL 구문을 만들 때 생각을 완전히 전환하고 생각에 대해 생각하지만 VisualStudio에는 C# 및 LINQ라는 기능이 있지만 개발은 볼 수 없기 때문에이를 금지합니다.
그리고 4 월부터 진행 코르티콘과 협력 해 왔지만 온라인 슬롯 제작에는 객체 지향 프로그래밍 언어의 개념을 해결할 수없는 경우가 많으며 절차 프로그래밍 언어의 개념을 해결하기가 어려워서 SQL 언어의 개념이 가장 적합하다고 생각했습니다.
그래서이 기술 칼럼을 썼을 때, "코르티콘은 SQL 언어의 개념을 온라인 슬롯 이해할 수 있고" "재귀 SQL (재귀 쿼리)을 구현하는 것에 관한 기사를 작성하여 사고 방식을 바꾸고 싶습니다. 이는 훌륭한 SQL 언어입니다.

재귀 SQL이란 무엇입니까 (재귀 쿼리)

Recursive SQL (재귀 쿼리)은 데이터베이스에 계층 적 구조가있는 데이터를 저장하는 테이블에 대한 자체 테이블을 재귀 적으로 쿼리하는 프로세스를 나타냅니다.이 시점의 핵심 사항은 데이터에 의존하여 한 번의 문의에서 재귀 적으로 완료 될 수 있습니다.
이로 인해 기존 프로그래밍 언어에서 처리가 복잡해지고 처리와 관련된 버그 수가 증가합니다. 그러나 SQL 언어에서는 몇 단계만으로 구현할 수 있습니다.

이번에는 비행기의 경로를 온라인 슬롯 재귀 SQL (재귀 쿼리)을 만들어 봅시다.
아래 다이어그램과 표는 항공사의 출발 및 도착 위치와 그 비용을 보여줍니다.
[SQL 사용 SAP SQLANYWHERE v16]

재귀 SQL이란 무엇입니까 (재귀 쿼리)

Sapporo에서 Ishigaki까지 경로와 비용을 계산하기 위해이 테이블을 사용하려면 어떻게 하시겠습니까?

먼저, Sapporo의 출발 위치에서 데이터를 추출하십시오. 작업의 시작점은 Sapporo이기 때문입니다.

출발, 도착 위치, 출발 위치에서 항공 경로에서 비용을 선택하십시오.

탑승 항목의 경로 및 수를 추가하십시오. 이것은 때때로 초기 지점이라고합니다.

출발, 도착, 비용,출발 || '/'|| 경로로 도착 위치, 1 비행 수로 1 출발 한 항공사 노선에서 = 'Sapporo'*빨간색은 추가 부분입니다 (아래 동일)

재귀 SQL (재귀 쿼리) 구문으로 변환.

재귀 온도 (출발, 목적지, 비용, 노선, 탑승 수)
as
(
출발, 목적지, 비용, 출발점을 선택하십시오 || '/'|| 경로로 도착 지점 1, 1 출발 지점에서 항공 경로에서 비행 수 = 'Sapporo'
)
출발 위치, 도착 위치, 비용, 노선, 온도에서 탑승 수

옆에 Union All과 함께 재귀 쿼리를 지정합니다. 이것은 때때로 재귀 지점이라고합니다.

재귀 온도 (출발, 목적지, 비용, 노선, 탑승 수)
as
(
출발, 목적지, 비용, 출발점을 선택하십시오 || '/'|| 경로로 도착 지점, 1 출발 지점에서 항공 경로에서 비행 수 = 'Sapporo'
Union All
Temp.Departure, Air Route.arriver, Temp.Cost + Temp.Cost, Temp.Route를 선택하십시오 || '/'|| Air Route.Arver.ARVER, TEMP.NUMBER of Boarding + 1
Temp, Air Route
여기서 temp.arrivement = Airline Route.Departure

)
출발 위치, 도착 위치, 비용, 노선, 온도에서 탑승 수

마지막으로, "Ishigaki"와 마무리 대상과 함께 레코드 만 추출하는 조건을 추가하십시오.

재귀 온도 (출발, 목적지, 비용, 노선, 탑승 수)
as
(
출발, 목적지, 비용, 출발점을 선택하십시오 || '/'|| 경로로 도착 지점, 1 출발 지점에서 항공 도로에서 비행 수 = 'Sapporo'
Union All
Temp.Departure, Air Route.arriver.Arriver, Temp.Cost + Air Route.Cost, Temp.Route || '/'|| Air Route.arriver, Temp.Number of Boarding + 1
Temp, Air Route
여기서 temp.arrivement = Airline Route.Departure
)
출발 위치, 도착 위치, 비용, 노선, 온도에서 탑승 수 도착 위치 = 'Ishigaki'

실행 결과를 표시합니다.

실행 결과 표시

SQL을 온라인 슬롯면 모든 관련 데이터를 10 단계로 추출 할 수 있습니다.

Cotrticon과 함께 구현

Cortiocon의 첫 번째 작업은 어휘 파일 샘플을 만드는 것입니다.
이를 정의하는 다양한 방법이 있지만 SQL 문에 따라 데이터 구조에 중점을 둔 다음과 같이 정의했습니다.

3_cotrticon으로 온라인 온라인 슬롯

다음, 온라인 슬롯을 만듭니다. SQL의 처리에 따라 3 개의 온라인 슬롯 시트가 생성되었습니다.

4_cotrticon과 함께 온라인 온라인 슬롯

sample01.ers라는이 온라인 슬롯에서 "전제 조건 필터"가 사용됩니다.Air Route Table.Air Route.departure 위치 i/output.departure와 동일한 데이터 만 추출하십시오. 조건없이 "전제 조건 필터"를 통과 한 모든 데이터는 "action"번호 0 temp.new []속성에 필요한 데이터 저장I/O.TEMP에 추가되었습니다. "전제 조건 필터"를 온라인 슬롯지 않고 "조건"에 쓸 수도 있지만 "전제 조건 필터"를 온라인 슬롯는 것이 여러면에서 더 효율적입니다.

지금, 18 개의 데이터를 등록하고 샘플 01.ers를 테스트합시다.항공 경로 테이블로 설정되었습니다. 그리고i/출력 [1] .DepartureSapporoi/출력 [1] .destination에 "Ishigaki"를 설정하여 테스트 결과가 결과를 보여줍니다.

5

이 결과는 아래 SQL과 동일합니다.

출발, 목적지, 비용, 출발점을 선택하십시오 || '/'|| 경로로 도착 지점, 1 출발 지점에서 항공 경로에서 비행 수 = 'Sapporo'

이 온라인 슬롯 시트는 Sample02.ers로 명명되며 재귀 프로세스를 만듭니다. 여기에는 온라인 슬롯 시트를 만드는 다양한 방법이 있지만 "전제 조건 필터"를 사용하여 데이터를 추출하는 방법과 단순히이 샘플을 루핑하는 방법을 고려하여 아래 다이어그램과 같이이를 만들었습니다.

6

먼저 "전제 조건 필터"를 온라인 슬롯십시오i/o.temp.number of Boding = I/O. 탑승의 대상 + 1추출됩니다. 이 "전제 조건 필터"는 투명한 데이터가 없을 때 루프를 방해하는 역할을합니다.
행동 번호 0 I/O. 처리 할 탑승+1로 계산됩니다. 그런 다음 두 가지 조건을 설정하십시오.i/o.temp.transportation = i/o.destinationisi/output.destination검색되어 처리를 중단하도록 설정하십시오.
기타 "조건"및 "작업"은 Sample01.ers와 유사합니다.i/o.temp.transportation location = Airline Route Table.Airline Route.DEPARTURE 위치에 의해 처리중인 임시 목적지 인 전송 위치를 검색하십시오. 또한 "조건"이 충족 될 때의 행동temp.new [] Route = I/O.Temp.route + '/' + Air Route Table.Air Route.Air Route.Air Route.ARVER, 탑승 수 = I/O.TEMP.ROUTE + 1, 총 비용 = I/O.TEMP.TOTAL COST + AIR ROUTE TABLE.Air ROUTE.COST 10585_10608 |항공 루트 테이블. Air Route에 대한 데이터 추가됩니다.

이 시점까지 처리를 확인하려면 RuleFlow Sample.erf를 만듭니다. 아래 다이어그램에 표시된 것과 같습니다.

7

처리 순서에 우선 순위가 있기 때문에 Sample01.ers 및 Sample02.ers를 연결하여 생성되었습니다.
지금 테스트합시다.

8

페이퍼 백 문제로 인해 일부 데이터가 숨겨져 있지만 17 및 2 개의 비행 시간의 17 가지 조합이 표시되었습니다.

룰 플로우 샘플에서 재발하도록 루프를 설정합니다.

9

테스트하자.

10

페이퍼 백으로 인해 일부 데이터가 숨겨져 있으며 각 탑승 시간에 대한 첫 번째 데이터 만 표시되지만 1 ~ 5 개의 탑승 시간의 40 가지 조합이 모두 표시되었으며 결과는 정상적으로 완료되었습니다.

규칙 시트의 마지막 처리는i/output.destination = i/o.temp.transportation에 대한 데이터 만 추출하는 샘플을 만듭니다. 이번에는 추출 대신i/output.destination < i/o.temp.transportation에 대한 데이터 삭제되었습니다. 이 온라인 슬롯 시트는 또한 "전제 조건 필터"를 사용합니다.

11

마지막으로 sample03.ers를 ruleflow에서 구현합니다.

12

마지막으로 최종 테스트를하겠습니다.

13

remod실행 중이면 숫자가 누락되지만 SQL에서와 동일한 19 가지 방법이 동일한 값으로 추출되었습니다.

마지막

````재귀 SQL (재귀 쿼리)도 Corticon에서 쉽게 구현할 수 있습니다. SQL과 같습니다. 나는 "이 온라인 슬롯을 2.0 MD로 시도하고 오류 시도하고 오류를 시도하고 오류를 시도하고 오류를 시도하고 오류를 시도하고 오류를 시도하고 오류를 시도하고 오류를 시도하고 프로그래밍 언어를 개발했을 때, 나는 Corticon의 행동에 대해 말하지 않은 SQL과 LINQ에 공통적 인 좌절감을 느꼈습니다. Corticon의 데이터가 처리되는 플로팅 순서는"공통 도구가 쉽게 만들 수 있다고 생각할 수 있습니다! " ``나는 그것을하지 않을 것입니다. ''

반면에, 나는 프로그래밍없이 이것을 많이 구현할 수 있다는 장점이 훌륭하다고 생각합니다. 온라인 슬롯을 만들면서 매번 확인할 수있는 큰 이점도 있다고 생각합니다.
또한, 비용은 기간에 따라 달라질 수 있으며, 새로운 항공사 노선, 기간으로 인한 임시 항공편 및 경로가 추출 조건에 추가 될 수 있으며 프로그래밍이없는 사소한 리노베이션이 가능할 수 있습니다.

이번에는 간단한 데이터를 사용했지만 기회가 있으면 왕복 경로와 출발 시간이 포함 된 확장 가능한 버전을 작성하고 확인하고 싶습니다.

다운로드 닫기

닫기

[Thu, 2 월 16 일]

"Progress Corticon"실무 세미나

진행을 시각화하고 자동화를 촉진하는