2020-09-27

                                          專家系統(tǒng)
什么叫專家系統(tǒng)

專家系統(tǒng)(Expert System,簡(jiǎn)稱ES):專家系統(tǒng)被定義為一種交互式可靠的基于計(jì)算機(jī)的決策系統(tǒng),它使用事實(shí)和啟發(fā)式方法來(lái)解決復(fù)雜的決策問(wèn)題。它被認(rèn)為是人類智慧和專業(yè)知識(shí)的最高水平。它是一個(gè)計(jì)算機(jī)應(yīng)用程序,可以解決特定域中最復(fù)雜的問(wèn)題。
??專家系統(tǒng)可以解決通常需要人類專家的許多問(wèn)題。它基于從專家那里獲得的知識(shí)。它還能夠表達(dá)和推理某些知識(shí)領(lǐng)域。專家系統(tǒng)是當(dāng)今人工智能,深度學(xué)習(xí)和機(jī)器學(xué)習(xí)系統(tǒng)的前身。

專家系統(tǒng)的組成

專家系統(tǒng)通常由人機(jī)交互界面、知識(shí)庫(kù)、推理機(jī)、解釋器、綜合數(shù)據(jù)庫(kù)、知識(shí)獲取等6個(gè)部分構(gòu)成。其中尤以知識(shí)庫(kù)與推理機(jī)相互分離而別具特色。專家系統(tǒng)的體系結(jié)構(gòu)隨專家系統(tǒng)的類型、功能和規(guī)模的不同,而有所差異。
1.用戶界面
??用戶界面是專家系統(tǒng)中最重要的部分。此組件以可讀形式獲取用戶的查詢,并將其傳遞給推理引擎。之后,它會(huì)向用戶顯示結(jié)果。換句話說(shuō),它是一個(gè)幫助用戶與專家系統(tǒng)通信的界面。
??用戶界面是專家系統(tǒng)中最關(guān)鍵的部分。該組件以可讀的形式獲取用戶的查詢,并將其傳遞給推理機(jī)。之后,它向用戶顯示結(jié)果。換句話說(shuō),它是一個(gè)幫助用戶與專家系統(tǒng)進(jìn)行通信的界面。

2.推理機(jī)
??推理機(jī)是專家系統(tǒng)的大腦。推理機(jī)包含解決特定問(wèn)題的規(guī)則。它是指從知識(shí)庫(kù)中獲取的知識(shí)。當(dāng)試圖回答用戶的查詢時(shí),它選擇要應(yīng)用的事實(shí)和規(guī)則。它為知識(shí)庫(kù)中的信息提供了推理。它也有助于解決問(wèn)題。這一組成部分也有助于制定結(jié)論。

3.知識(shí)庫(kù)
??知識(shí)庫(kù)是事實(shí)的儲(chǔ)存庫(kù)。專家系統(tǒng)的[問(wèn)題求解過(guò)程是通過(guò)知識(shí)庫(kù)中的知識(shí)來(lái)模擬專家的思維方式的,因此,知識(shí)庫(kù)是專家系統(tǒng)質(zhì)量是否優(yōu)越的關(guān)鍵所在,即知識(shí)庫(kù)中知識(shí)的質(zhì)量和數(shù)量決定著專家系統(tǒng)的質(zhì)量水平。

專家系統(tǒng)工作結(jié)構(gòu)圖:


image.png
專家系統(tǒng)特點(diǎn)

1.一般采用啟發(fā)式的解題方法
2.知識(shí)庫(kù)與推理機(jī)分離
3.能對(duì)自身的工作過(guò)程進(jìn)行推理
4.解題過(guò)程中除了用演繹方法外,有時(shí)采用歸納方法和抽象方法

專家系統(tǒng)的分類

1.按知識(shí)表示技術(shù)可分為:基于邏輯的專家系統(tǒng)、基于規(guī)則的專家系統(tǒng)、基于語(yǔ)義網(wǎng)絡(luò)的專家系統(tǒng)和基于框架的專家系統(tǒng)。
2.按任務(wù)類型可分為:
解釋型:可用于分析符號(hào)數(shù)據(jù),進(jìn)行闡述這些數(shù)據(jù)的實(shí)際意義。
預(yù)測(cè)型:根據(jù)對(duì)象的過(guò)去和現(xiàn)在情況來(lái)推斷對(duì)象的未來(lái)演變結(jié)果。
診斷型:根據(jù)輸入信息來(lái)找到對(duì)象的故障和缺陷。
調(diào)試型:給出自己確定的故障的排除方案。
維修型:指定并實(shí)施糾正某類故障的規(guī)劃。
規(guī)劃型:根據(jù)給定目標(biāo)擬定行動(dòng)計(jì)劃。
設(shè)計(jì)型:根據(jù)給定要求形成所需方案和圖樣。
監(jiān)護(hù)型:完成實(shí)時(shí)監(jiān)測(cè)任務(wù)。
控制型:完成實(shí)施控制任務(wù)。

demo:一個(gè)基于動(dòng)物識(shí)別的專家系統(tǒng):

1.構(gòu)建知識(shí)庫(kù):

char *animal[]={"企鵝","海燕","鴕鳥(niǎo)","斑馬","長(zhǎng)頸鹿","虎","金錢豹"};
char *feature[]={"有毛","產(chǎn)奶","有羽毛","會(huì)飛","會(huì)下蛋","吃肉","有犬齒","有爪","眼睛盯前方","有蹄","反芻","黃褐色","有斑點(diǎn)",
 //0 1 2 3 4 5 67 8 9 10 11 12
 "有黑色條紋","長(zhǎng)脖","長(zhǎng)腿","不會(huì)飛","會(huì)游泳","黑白兩色","善飛","哺乳類","鳥(niǎo)類","肉食類","蹄類",
 //13 14 15 16 17 18 1920 21 22 23
 "企鵝","海燕","鴕鳥(niǎo)","斑馬","長(zhǎng)頸鹿","虎","金錢豹"};
 //24 25 26 27 28 29 30

typedef struct //存放規(guī)則的結(jié)構(gòu)體
{
    int relation[5];
    int name;
}Rule;

Rule rule[15]={
    {{0,-1},20},{{1,-1},20},{{2,-1},21},{{3,4,-1},21},{{20,5,-1},22},
    {{6,7,8,-1},22} ,{{20,8,-1},23} ,{{20,9,-1},23},{{22,11,12,-1},30},
    {{22,11,13,-1},29},{{23,14,15,12,-1},28},{{23,13,-1},27},
    {{21,14,15,16,-1},26},{{21,19,-1},25},{{21,17,18,16,-1},24}
};

2.推理算法:

int inference(){//正向推理
    int ti;
    int i,j;
    int tres;
    cout<<endl;
    for(i=0;i<15;i++){
        j=0;
        ti=rule[i].relation[j];
        while(ti!=-1){ //-1 作為結(jié)束
            if(flag[ti]==0)
                break;
            j++;
            ti=rule[i].relation[j];
        }
        if(ti==-1){//ti==-1 代表規(guī)則滿足
            tres=rule[i].name;
            flag[tres]=1;
            printf("運(yùn)用了規(guī)則%d : ",i);
            j=0;
            while(rule[i].relation[j]!=-1){
                cout<<feature[rule[i].relation[j]]<<" ";
                j++;
            }
            cout<<"====> "<<feature[tres]<<endl;
            if(IsAnimal(tres)){
                return 1;
            }
        }
    } if(i==15) {
        cout<<"沒(méi)有這種動(dòng)物";
    }
    return -1; 
}

3.其他函數(shù):

int flag[23]={0};//標(biāo)記各個(gè)特征是否選擇
int IsAnimal(int a);
int inference();
void input();
void menu();

void menu(){
    int i=0;
    for(i=0;i<24;i++){
        if(i%4==0&&i!=0){
            cout<<endl;
        }
        printf("%-3d.%-15s",i,feature[i]);
    }
}

void input(){
    int ti=0;
    for(int i=0;i<24;i++){
        flag[i]=0;
    }
    while(ti!=-1){
        cout<<"\n 輸入選擇(-1 結(jié)束):";
        cin>> ti;
        if(ti>=0&&ti<=23)
            flag[ti]=1;
        else if(ti!=-1){
            cout<<"輸入錯(cuò)誤!請(qǐng)輸入 0~23 之間的數(shù)字!"<< endl; //notanimal=25
            cin.clear();//清除流錯(cuò)誤錯(cuò)誤標(biāo)
            cin.sync(); ////////////清空輸入緩沖區(qū)
        }
    }
}

int IsAnimal(int a){
    if(a>=24&&a<=30)
        return 1;
    else
         return 0;
}

//主函數(shù)
void main(){
    char q;
    while(q!='n'){
        menu();
        input();
        inference();
        cout<<"\n 繼續(xù)?(Y/N)"<<endl;
        cin>>q;
        system("cls");
    }
    system("pause");
}

4.運(yùn)行測(cè)試:


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是專家系統(tǒng)? ??專家系統(tǒng)被定義為一種交互式可靠的基于計(jì)算機(jī)的決策系統(tǒng),它使用事實(shí)和啟發(fā)式方法來(lái)解決復(fù)雜的決策...
    人工智能Study閱讀 20,496評(píng)論 0 8
  • 本體、知識(shí)庫(kù)、知識(shí)圖譜、知識(shí)圖譜識(shí)別之間的關(guān)系? 本體:領(lǐng)域術(shù)語(yǔ)集合。 知識(shí)庫(kù):知識(shí)集合。 知識(shí)圖譜:圖狀具有關(guān)聯(lián)...
    方弟閱讀 29,183評(píng)論 6 49
  • 人工智能 人工智能(Artificial Intelligence) ,英文縮寫(xiě)為AI。它是研究、開(kāi)發(fā)用于模擬、延...
    嘿嘿海海閱讀 27,726評(píng)論 0 0
  • 1 什么是知識(shí)圖譜 知識(shí)圖譜概念:一種圖模型來(lái)描述知識(shí)和建模世界萬(wàn)物之間的關(guān)聯(lián)關(guān)系的技術(shù)方法組成:節(jié)點(diǎn):實(shí)體:一個(gè)...
    武漂的小丙閱讀 1,050評(píng)論 0 0
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,875評(píng)論 16 22

友情鏈接更多精彩內(nèi)容