Home of the original IBM PC emulator for browsers.
[PCjs Machine "ibm5170"]
Waiting for machine "ibm5170" to load....
Put some smarts in your personal computer and turn it into your very own assistant. ESIE, the Expert System Inference Engine, is an artificial intelligence shell that lets you build a custom knowledge base, or expert system, to help you make decisions. Simple but effective, ESIE operates by loading in a knowledge base and building inferences out of the rules contained therein. You define the rules that the system uses. This is especially good as an introduction to expert systems as well as having excellent on-disk documentation to get you started in AI. For the advanced student, ESIE can handle the normal gamut of expert systems building. To see how ESIE works without building your own knowledge base, load ESIE and one of the three supplied knowledge bases (ANIMAL, DOCTOR, or GLASS) and try it!
ESIE The Expert System Inference Engine Manual For the ABOARD Knowledge Base Lightwave July 1986 P.O. Box 16858 Tampa, FL 33617 Copyright 1986 All Rights Reserved. This manual may only be distributed as one file on the ESIE distribution diskette. Such duplication and distribution is authorized without compensation as long as the diskette is a duplicate of the ESIE distribution diskette. This manual may also be distributed in printed form as long as a copy of the distribution diskette is attached. All other distribution is strictly prohibited. .L:55 .W:70 .N:1 .I:Page $$$ .H:...Page $$$ The following documentation was written by one our users. This documentation is intended to accompany the ABOARD knowledge base. All names and addresses have been removed to protect the innocent. Lightwave takes no responsibility for the accuracy of the contents, but we offer our sincere thanks to the user who submitted this material. He is receiving a complimentary upgrade to ESIE 2.0 for his troubles. To Get Abaord An Expert System Shell and Knowledge Base Introduction. This project was done in fulfillment of the requirements for Decision Support Systems, Naval Postgraduate School, Monterey. Part 1. Application. The military application that this expert system is designed to meet is the circumstance where a Coast Guard cutter arrives alongside another vessel at sea and wishes to conduct a boarding. The legal grounds on which to base a boarding are scattered through several laws and treaties. Knowledge of this material is an expert application. Coast Guard commanding officers, operations officers and boarding officers are usually familiar with this material, but other people assisting us frequently are not. This system is designed to provide some assistance. For instance, Coast Guard boarding teams are now riding Navy ships. Navy personnel are generally unfamiliar with the law enforcement mission details, yet a Navy CO is required to support that boarding party. This system can function as a training aid or intelligent checklist for him. A little mare nostrum. The law is made up of a few generalizations and thousands of exceptions. The two generalizations considered here are: 1) Vessels of a flag state on the high seas are subject to the jurisdiction of that state and no other. 2) Vessels within the jurisdictional waters of a state are subject to that state's jurisdiction. The exceptions are coded into the knowledge base. These exceptions are found in a number of places: The Constitution, particularly the Bill of Rights, Treaties and conventions with other countries, US laws (found in the US Code -- USC), Coast Guard and State Department policies, Presidential orders. For the operator. Scenario. You are a Commanding Officer, or Operations Officer of a vessel carrying a Coast Guard boarding officer (not necessarily a Coast Guard cutter -- the boarding authority goes with the people, not the cutter). You have just driven up alongside a vessel 'out there'. You want to get the boarding officer aboard that vessel and need a legal basis. This knowledge base asks pertinent questions directed at gaining that basis. To run. From the MSDOS prompt: >esie <cr> filename for knowledge base: aboard <cr> ==>go <cr> answer questions yes or no followed by <cr> Things are error trapped, so typing mistakes are no problem. If the scenario changes, rerun the program from the top. WARNING. This knowledge base assumes that the user is a Coast Guard boarding officer (or his supervisor). No one else anywhere has the same combination of law enforcement jurisdiction, so any other user could easily be overstepping his authority. For instance, if a vessel is inside the US Fishery Conservation Zone and is a fishing vessel, Coast Guard boarding officers and National Marine Fisheries agents both have jurisdiction. But Customs officers do not. Similarly, if a vessel is operating in the Contiguous Zone, and not fishing, then the jurisdiction falls to Coast Guard boarding officers and Customs officers -- but not to NMFS agents. Other military agencies are prohibited from direct exercise of law enforcement authority by the Posse Comatatus Act and do not have any of this authority. Part 2. The shell. This knowledge base was built to run on ESIE, an Expert System Inference Engine. ESIE, in turn, runs under MSDOS and is available from Lightwave. ESIE is a 'shareware' variant of public domain. As explained in the documentation, the program is released to the public domain. For $145, full support including the source code is furnished. For definitions, see the MANUAL file on the ESIE disk. The single GOAL allowed is 'board.reason'. When the knowledge base is able to reach a conclusion, the 'board.reason' goal has been satisfied. The ANSWER clause at the end of the file acts to print it out. The second line in the file (after the GOAL) is LEGALANSWERS. For this knowledge base, the only legal answers are 'yes' and 'no'. (Answers are case insensitive and illegal answers are all harmlessly trapped.) Following the LEGALANSWERS clause are a series of IF...THEN rules. Order is of note. The first IF...THEN clause is attempted to be satisfied. All the questions within the clause are tracked in a backward chain fashion (which may be directly through the question clauses or indirectly through other IF...THEN clauses). If the GOAL remains unsatisfied at this point, then ESIE falls through and considers the next IF...THEN statement. For this reason, the statement about requesting the master's permission and being denied is last. You want to exhaust the other alternatives first and you don't want the system to give up in disgust until you have tried everything else. In a few cases (like government vessels) a quick conclusion can be reached. In that case, board.reason is satisfied and the session terminates. The system is designed to be persistent -- unless a definite reason not to board is arrived at, the system will grasp at virtually any reason to get aboard (which is how seizures are made...) Following the IF...THEN clauses are the QUESTION statements. These inqure of data from the operator in order to satisfy the IF...THEN clauses. QUESTIONS are only asked as the result of IF...THEN clauses needing data. The final statement is the aforementioned ANSWER clause. Limitations. ESIE has no capability for handling uncertainty. That is not required for this application. Systems involving more judgement than boarding legalities would be found short. ESIE is implemented under MSDOS; the Coast Guard is buying a 'standard terminal' that runs CTOS which is not compatible (despite the same 8088/8086 under the hood). To implement the system for Coast Guard use, the source code would have to be recompiled under the CTOS Pascal compiler. However, once that is done, the knowledge base itself should run without changes. This application does not need it, but ESIE provides no alternative to keyboarding input. If the database changes, the program must be rerun to reflect those changes. Part 3. Implementation. [Code is attached.] Part 4. Diary. The initial work was done in February 1986. After printing out the ESIE documentation and idly chewing on it for a couple weeks, I spent about 4 hours assembling an initial working program. I functioned as the expert as well as the knowledge engineer. The knowledge base then worked using my knowledge which is about two years rusty. A day or so later, another person worked through the program and suggested several cosmetic and a few substantive changes, again on his memory knowledge. This update took an hour, including his time. Second stage, late Feb 86. Obtained a copy of the Coast Guard's Maritime Law Enforcement Manual. This allowed me to make some minor corrections to some existing rules, and to add several rules that pertain to the more obscure exceptions (try getting aboard a Japanese salmon boat outside the US FCZ -- it can be done.) The diminishing marginal returns are very obvious -- lots of rules gain minimal production. But the detailed exceptions are frequently where the big cases are made. 3 more hours. Final work. Early in March, I had mulled over what I had and wanted to get in some improvements. Particularly, I wanted to avoid asking the user about Pacific specific conventions if he was operating in the Atlantic. So those area-specific convention rules were updated. Part 5. Benchmarking. Since input is keyboarded rather than drawn from a database on disc, it is not practical to benchmark in the traditional sense (stopwatch). The processing appears prompt to the user, even on a slow 8088. Consequently, there is no real incentive to recode the program more conventionally. Indeed, that would limit its maintainability. Loading and compilation of the knowledge base takes about 30 seconds from the > operating system prompt using a 4.77mHz CPU. Intuition to the contrary, a considerable evolutionary change has occurred over the body of law that this application covers. Examples include the case of US vs Piner which limited boarding authority in the 9th Circuit for about 4 years, until a related case was heard by the Supreme Court and resolved. Similarly, the Fisheries Conservation and Management Act, and its special jurisdiction, is now ten years old. Since the Coast Guard is chronically too tight-fisted to hire a programmer to maintain an application like this, leaving the system in a higher level, maintainable, construction makes sense. Part 6. Lessons. The first lesson is that I was lucky. The application and the shell were very well matched to each other. Most of the things this shell lacks are features that the application doesn't need. Probably the one desired feature is the ability to chain to another file and display it. The surprise to me was the small number of rules (about 30) necessary to manage a complex problem. I expected a lot more rules to be required when I started. The existing system runs in 128K of memory, which appears minimal to handle an exhaustive set of rules for this application. If the reference material were on disc, the shortcoming could be in disc space, not RAM. Since the author will provide the source code for $145, it would be quite practical to recompile the code for a larger memory space which would enlarge the stack space and push back the limitations. The system can be expected to run as fast as an operator can type in data. The only shortcoming here is that data cannot be edited once it is entered (e.g. as circumstances change).
You can test your copy of the distribution diskette, to make sure the copy is accurate, by entering the command CHECK *.* at the DOS prompt. The output should look like this: CRCK ver 4.2B (MS DOS VERSION ) CTL-S pauses, CTL-C aborts --> FILE: READ .ME CRC = 89 EB --> FILE: ESIE .COM CRC = 70 F3 --> FILE: CONFIG .COM CRC = 71 16 --> FILE: MANUAL . CRC = 56 1A --> FILE: TUTOR . CRC = B1 C9 --> FILE: NOVICE . CRC = 63 D7 --> FILE: HISTORY . CRC = DD 31 --> FILE: FINAL .USE CRC = B7 3F --> FILE: ANIMAL . CRC = 6B A8 --> FILE: DOCTOR . CRC = 4C 3E --> FILE: GLASS . CRC = A0 08 --> FILE: ABOARD . CRC = 9B FC --> FILE: ABOARD .DOC CRC = AE 02 --> FILE: GETAWAY . CRC = 7C 82 --> FILE: HEIGHT . CRC = FC C9 --> FILE: HAIR . CRC = 99 4A --> FILE: SUPPORT . CRC = 06 72 --> FILE: CHECK .COM CRC = BD 22 --> FILE: CHECK .TXT CRC = 00 00 ---------------------> SUM OF CRCS = E4 33 DONE Note: the CRC for CHECK.TXT will be incorrect as will be the total, because you cannot write a file's CRC to the file without altering the CRC of the file.
Volume in drive A has no label Directory of A:\ ABOARD 8783 7-02-86 12:20a ABOARD DOC 13810 7-06-86 6:42a ANIMAL 9872 7-05-86 10:12a CHECK COM 1536 10-21-82 5:50p CHECK TXT 1432 7-06-86 8:02a CONFIG COM 14363 7-06-86 12:05a DOCTOR 6403 8-22-85 1:51a ESIE COM 24028 7-04-86 10:23a FINAL USE 11159 7-06-86 7:50a GETAWAY 1519 7-05-86 10:03a GLASS 5748 7-14-85 12:55a HAIR 402 7-02-86 2:54a HEIGHT 719 7-05-86 10:00a HISTORY 26033 7-06-86 7:50a MANUAL 61626 7-06-86 7:37a NOVICE 13665 7-06-86 7:50a READ ME 1816 7-05-86 9:10a SUPPORT 2082 7-05-86 8:57a TUTOR 60767 7-06-86 7:42a 19 file(s) 265763 bytes 46080 bytes free