Prolog開(kāi)發(fā)專家系統(tǒng)-解釋.doc_第1頁(yè)
Prolog開(kāi)發(fā)專家系統(tǒng)-解釋.doc_第2頁(yè)
Prolog開(kāi)發(fā)專家系統(tǒng)-解釋.doc_第3頁(yè)
Prolog開(kāi)發(fā)專家系統(tǒng)-解釋.doc_第4頁(yè)
Prolog開(kāi)發(fā)專家系統(tǒng)-解釋.doc_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Prolog開(kāi)發(fā)專家系統(tǒng)-解釋專家系統(tǒng)的一個(gè)重要的功能就是要能夠解釋它自己的行為。用Prolog開(kāi)放具體解釋能力的專家系統(tǒng)。解釋專家系統(tǒng)的一個(gè)重要的功能就是要能夠解釋它自己的行為。這意味著用戶可以在任何時(shí)候詢問(wèn)系統(tǒng)為什么得出某個(gè)結(jié)論,或者為什么提出某個(gè)問(wèn)題。這對(duì)于用戶來(lái)說(shuō)是一項(xiàng)重要的功能,有時(shí)候用戶只要求知道答案,可是有時(shí)候用戶需要知道解釋,而通常的專家系統(tǒng)無(wú)法對(duì)它的行為做出有說(shuō)服力的解釋,而只能夠告訴用戶它使用了哪些規(guī)則得出的結(jié)論,至于為什么這些規(guī)則能夠得出這樣的結(jié)論,系統(tǒng)是無(wú)法解釋的。例如下面這個(gè)例子:汽車能夠啟動(dòng)么? 不行引擎發(fā)動(dòng)了么? 是的你問(wèn)到汽油味道了么?是的建議:等待5秒鐘,然后再試。為什么?因?yàn)槲沂褂昧诉@樣的規(guī)則:如果不能夠啟動(dòng)而且引擎發(fā)動(dòng)了而且問(wèn)到汽油味,那么就推薦的等待5秒再試。 很顯然這個(gè)專家系統(tǒng)無(wú)法解釋其選擇某個(gè)規(guī)則的原因,而只能告訴用戶它使用了某種規(guī)則。如果用戶硬要刨根問(wèn)底的話這個(gè)系統(tǒng)就無(wú)能為力了。為了讓系統(tǒng)具有真正的解釋功能,我們需要比規(guī)則更多的知識(shí)。對(duì)每個(gè)規(guī)則進(jìn)行注釋是一個(gè)比較好的方法,這種方法將在以后的章節(jié)介紹。還有一種方法就是把更多的知識(shí)進(jìn)行編碼,推理引擎和解釋引擎都同時(shí)使用這個(gè)知識(shí)庫(kù)。還有些專家系統(tǒng)的知識(shí)庫(kù)是屬于經(jīng)驗(yàn)知識(shí),在這種情況下系統(tǒng)的解釋可以直接使用規(guī)則。像識(shí)別鳥(niǎo)類的分類系統(tǒng)就屬于這種情況。鳥(niǎo)類識(shí)別系統(tǒng)就能夠使用它的規(guī)則直接進(jìn)行解釋,例如為什么某種鳥(niǎo)是野鴨,就是因?yàn)樗哂幸傍喌囊恍┨匦裕@些特性就是規(guī)則所定義的。識(shí)別鳥(niǎo)類并不存在什么高深的理論,而只是根據(jù)某些特點(diǎn)進(jìn)行分類的。也許對(duì)于用戶來(lái)說(shuō)某些解釋是多余的,不過(guò)對(duì)于開(kāi)發(fā)人員來(lái)說(shuō)這是十分重要的。這和通常的語(yǔ)言中的跟蹤調(diào)試有些類似。當(dāng)系統(tǒng)沒(méi)有按照預(yù)期的效果執(zhí)行的時(shí)候,開(kāi)發(fā)人員可以根據(jù)解釋研究錯(cuò)誤的產(chǎn)生原因。知識(shí)工程師也可以根據(jù)解釋從而設(shè)計(jì)出更加貼近用戶的知識(shí)庫(kù)。解釋的種類在一般的專家系統(tǒng)中常用的有4種解釋。1. 報(bào)告當(dāng)前的會(huì)話進(jìn)程。2. 解釋系統(tǒng)是如何得出某個(gè)結(jié)論的。3. 解釋為怎么系統(tǒng)向用戶詢問(wèn)某個(gè)問(wèn)題。4. 解釋為什么某個(gè)結(jié)論不成立。在我們上一章介紹的Clam外殼程序中,推理引擎是自己編寫(xiě)的,所以這些解釋特性并不難加入系統(tǒng)當(dāng)中。在第一章的原始外殼中沒(méi)有推理引擎,而是使用prolog的內(nèi)部引擎,這樣就無(wú)法加入新的解釋特性,為了達(dá)到這個(gè)目的,我們需要編寫(xiě)自己的推理引擎,而這個(gè)引擎的運(yùn)作方式和prolog相同,也就是說(shuō)需要使用prolog編寫(xiě)一個(gè)prolog,好在這項(xiàng)工作并不難完成。在Clam中使用解釋首先讓我們看看在Clam中加入了解釋的一個(gè)例子,這里沿用了上一章汽車診斷系統(tǒng)。 首先用戶打開(kāi)對(duì)話跟蹤功能,跟蹤的信息使用粗體字表示,跟蹤信息顯示了系統(tǒng)是如何調(diào)用規(guī)則的。注意系統(tǒng)正確的表示出了規(guī)則的嵌套調(diào)用。報(bào)告當(dāng)前的會(huì)話進(jìn)程的解釋:consult, restart, load, list, trace, how, exit:trace onconsult, restart, load, list, trace, how, exit:consultcall rule 1 Does the engine turn over?: nocall rule 2 Are the lights weak?: yesexit rule 2 call rule 3 Is the radio weak?: yesexit rule 3 exit rule 1 call rule 4 fail rule 4call rule 5 fail rule 5call rule 6 fail rule 6problem-battery-cf-75done with problem下面來(lái)看看如何解釋為什么要向系統(tǒng)提問(wèn)。用戶可以在任何時(shí)候向推理引擎詢問(wèn)why,請(qǐng)看這個(gè)例子:.Is the radio weak?: whyrule 3 If radio_weak Then battery_bad 50 rule 1 If not turn_over battery_bad Then problem is battery 100 goal problem .這里可以看出來(lái)當(dāng)用戶向系統(tǒng)詢問(wèn)為什么問(wèn)is the radio weak這個(gè)問(wèn)題的時(shí)候,系統(tǒng)把有關(guān)這個(gè)問(wèn)題的幾個(gè)規(guī)則列出來(lái)了。再來(lái)看看how提問(wèn),當(dāng)系統(tǒng)給出了某個(gè)結(jié)論的時(shí)候,用戶可能想知道是如何得到這個(gè)結(jié)論的,這個(gè)時(shí)候向系統(tǒng)詢問(wèn)blem-battery-cf-75done with problemconsult, restart, load, list, trace, how, exit:howGoal? problem is batteryproblem is battery was derived from rules: 1 rule 1 If not turn_over battery_bad Then problem is battery 100 在這里列出了能夠直接得到結(jié)論的規(guī)則。如果用戶需要繼續(xù)知道為什么battery_bad的話,就進(jìn)行下面的詢問(wèn):consult, restart, load, list, trace, how, exit:howGoal? battery_badbattery_bad was derived from rules: 3 2 rule 3 If radio_weak Then battery_bad 50 rule 2 If lights_weak Then battery_bad 50 在這里有兩個(gè)規(guī)則可以得到battery_bad的結(jié)論,系統(tǒng)把它們都列舉出來(lái)了??赐炅耸痉?,該是研究程序的時(shí)候了。 跟蹤首先我們來(lái)看看如何制作跟蹤功能。這個(gè)跟蹤功能可以向用戶報(bào)告某個(gè)規(guī)則的調(diào)用、退出以及失敗幾個(gè)事件。 這里使用謂詞bugdisp來(lái)向用戶顯示跟蹤信息,它的參數(shù)是一個(gè)要顯示出來(lái)的列表。為了讓用戶可以選擇是否打開(kāi)跟蹤功能,bugdisp首先檢查ruletrace是否為真。因此在我們的外殼程序中就又多了一個(gè)打開(kāi)或者關(guān)閉跟蹤功能的命令。然后我們就可以把bugdisp放在任何想要顯示跟蹤信息的地方了。bugdisp(L) :- ruletrace,write_line(L),!.bugdisp(_).write_line() :- nl.write_line(H|T) :-write(H),tab(1),write_line(T).然后我們?cè)谕鈿こ绦蛑屑尤雝race(on)和trace(off)兩個(gè)命令。do( trace(X) ) :- set_trace(X), !.set_trace(off) :- ruletrace,retract( ruletrace ).set_trace(on) :-not ruletrace,asserta( ruletrace ). set_trace(_). 現(xiàn)在我們已經(jīng)編寫(xiě)好了可以顯示跟蹤信息的謂詞了。下面我們就需要把bugdisp放入到適當(dāng)?shù)胤?,讓它顯示出跟蹤信息。在上一章介紹的謂詞fg中很容易找到規(guī)則被調(diào)用和規(guī)則成功的地方。下面就是增加了跟蹤功能的fg謂詞。fg(Goal, CurCF) :- rule(N, lhs(IfList), rhs(Goal, CF),bugdisp(call rule, N),prove(N, IfList, Tally),bugdisp(exit rule, N),adjust(CF, Tally, NewCF),update(Goal, NewCF, CurCF, N),CurCF = 100, !. fg(Goal, CF) :- fact(Goal, CF). 當(dāng)某個(gè)規(guī)則的目標(biāo)滿足fg的目標(biāo)的時(shí)候,這個(gè)規(guī)則就被調(diào)用,所以在rule后面加入call rule。當(dāng)這個(gè)規(guī)則的前提都得到證實(shí)的時(shí)候這個(gè)規(guī)則就成功了,因此在prove后面加入exit rule。那么規(guī)則在什么時(shí)候失敗呢?在prove失敗的時(shí)候,規(guī)則就失敗了,因此我們加入一個(gè)處理prove失敗的子句:prove(N, IfList, Tally) :- prov(IfList, 100, Tally), !. prove(N, _, _) :-bugdisp(fail rule, N),fail.注意上面的第二個(gè)子句就是新加入的,當(dāng)?shù)谝粋€(gè)子句失敗的時(shí)候,就調(diào)用這個(gè)子句,它首先顯示失敗信息,然后再失敗?;卮餳ow問(wèn)題當(dāng)用戶想知道系統(tǒng)是如何得出某個(gè)結(jié)論的時(shí)候,可以向系統(tǒng)提問(wèn)how。實(shí)現(xiàn)這種方法有兩個(gè)途徑,一種當(dāng)用戶詢問(wèn)how的時(shí)候重新跟蹤系統(tǒng)的調(diào)用過(guò)程,另外一種則是把推理過(guò)程直接保存在工作空間中。我們使用后面這種方法。在我們的工作空間中原來(lái)的儲(chǔ)存信息格式如下:fact(AV,CF).它只保存了屬性信息和確信度信息,由于現(xiàn)在我們要回答用戶是如何得到某個(gè)結(jié)論的,因此我們要加入第三個(gè)參數(shù)RuleList,改進(jìn)后的fact格式如下:fact(AV,CF,RuleList).RuleList用來(lái)保存推理出這個(gè)fact所使用的規(guī)則列表。這里的RuleList不是整個(gè)求解樹(shù),而是是直接推導(dǎo)出這個(gè)fact的規(guī)則。fact是使用update謂詞更新的,因此需要改寫(xiě)update。我們給update新加入一個(gè)參數(shù)用來(lái)告訴update是哪個(gè)規(guī)則引起的update,也就是說(shuō)是哪個(gè)規(guī)則支持的需要更新的這個(gè)fact。update(Goal, NewCF, CF, RuleN) :- fact(Goal, OldCF, _), %如果已經(jīng)存在這個(gè)fact,combine(NewCF, OldCF, CF),retract( fact(Goal, OldCF, OldRules) ), %就取得原來(lái)的rulelist,asserta( fact(Goal, CF, RuleN | OldRules) ), !. %并且添加新的Rule進(jìn)去。update(Goal, CF, CF, RuleN) :- %否則就是系統(tǒng)中不存在這個(gè)fact,asserta( fact(Goal, CF, RuleN) ). %就直接添加入工作空間。調(diào)用update的謂詞fg也要相應(yīng)的有所改動(dòng):fg(Goal, CurCF) :- rule(N, lhs(IfList), rhs(Goal, CF),. update(Goal, NewCF, CurCF, N), %把規(guī)則名傳遞給update。. 下面再來(lái)編寫(xiě)處理用戶的how命令,最簡(jiǎn)單的辦法就是把用戶詢問(wèn)的Goal對(duì)應(yīng)的rulelist給列出來(lái),不過(guò)如果我們能夠把規(guī)則的內(nèi)容也顯示出來(lái)的話,這樣就更加方便了。how(Goal) :-fact(Goal, CF, Rules),CF 20,pretty(Goal, PG),write_line(PG, was, derived, from, rules: |Rules),nl, list_rules(Rules),fail.how(_). how(not Goal) :- fact(Goal, CF, Rules),CF -20,pretty(not Goal, PG), write_line(PG, was, derived, from, rules: |Rules),nl, list_rules(Rules), fail. pretty謂詞用來(lái)把屬性值結(jié)構(gòu)轉(zhuǎn)化為更容易的閱讀的列表。pretty(av(A, yes), A) :- !. pretty(not av(A, yes), not, A) :- !.pretty(av(A, no), not, A) :- !.pretty(not av(A, V), not, A, is, V). pretty(av(A, V), A, is, V). list_rules用來(lái)顯示出規(guī)則的內(nèi)容。list_rules(). list_rules(R|X) :-list_rule(R), list_rules(X).list_rule(N) :-rule(N, lhs(Iflist), rhs(Goal, CF), write_line(rule , N),write_line(If),write_ifs(Iflist),write_line(Then),pretty(Goal, PG),write_line( , PG, CF), nl.write_ifs().write_ifs(H|T) :- pretty(H, HP), tab(5), write_line(HP),write_ifs(T). 我們還可以反過(guò)來(lái)使用pretty,也就是說(shuō)把用戶輸入的列表,轉(zhuǎn)換為屬性值的結(jié)構(gòu),這樣的話,用戶就不需要知道系統(tǒng)內(nèi)部是如何表達(dá)知識(shí)的了。how :-write(Goal? ),read_line(X), nl,pretty(Goal, X),how(Goal).最后把how命令加入外殼程序的命令列表:do(how) :- how, !. 上面就是完整的how的編寫(xiě)過(guò)程了。不過(guò)它只顯示出直接推導(dǎo)出某個(gè)規(guī)則,而這些規(guī)則又是基于其他的規(guī)則或者事實(shí)的,如何進(jìn)一步的推理信息呢?有兩種方法:讓用戶使用how繼續(xù)詢問(wèn),讓how命令自動(dòng)的顯示完整的證明樹(shù)。第一項(xiàng)功能已經(jīng)實(shí)現(xiàn),如何實(shí)現(xiàn)第二個(gè)功能呢?我們使用how_lhs把rulelist中的每個(gè)規(guī)則作為目標(biāo),遞歸的調(diào)用how。當(dāng)某個(gè)目標(biāo)的rulelist為空的時(shí)候,表示這個(gè)目標(biāo)不是由規(guī)則得出的,而是用戶輸入的已知事實(shí),這就是說(shuō)完成了整個(gè)證明樹(shù)的搜索過(guò)程。list_rules().list_rules(R|X) :-list_rule(R),how_lhs(R), list_rules(X).how_lhs(N) :-rule(N, lhs(Iflist), _),!, how_ifs(Iflist). how_ifs().how_ifs(Goal|X) :- how(Goal), how_ifs(X). 在這里我們回答how提問(wèn)有3種選擇:只顯示規(guī)則名,顯示規(guī)則的內(nèi)容,顯示完整的搜索樹(shù)?;卮饂hy提問(wèn)當(dāng)系統(tǒng)得出某個(gè)結(jié)論之后,用戶可以使用how向它詢問(wèn)是如何得出這個(gè)結(jié)論的。而在系統(tǒng)的用戶的對(duì)話過(guò)程中,系統(tǒng)為了收集資料會(huì)向用戶詢問(wèn),這個(gè)時(shí)候如果用戶感到困惑的時(shí)候,可以詢問(wèn)系統(tǒng)為什么問(wèn)這個(gè)問(wèn)題。為了回答why問(wèn)題,我們需要跟蹤推理過(guò)程,也就是說(shuō)要記錄下以前推理一些信息。在推理謂詞中增加一個(gè)保存這種信息的參數(shù),就可以很好的解決這個(gè)問(wèn)題。在findgoal和prove中我們?cè)黾恿艘粋€(gè)Hist參數(shù)。findgoal(Goal, CurCF, Hist) :- fg(Goal, CurCF, Hist). fg(Goal, CurCF, Hist) :-.prove(N, IfList, Tally, Hist),.在prove謂詞中,在遞歸調(diào)用findgoal去尋找進(jìn)一步的解的前面,先把現(xiàn)在所使用的規(guī)則記錄下來(lái)。prove(N, IfList, Tally, Hist) :- prov(IfList, 100, Tally, N|Hist), !.prove(N, _, _) :-bugdisp(fail rule, N), v(, Tally, Tally, Hist).prov(H|T, CurTal, Tally, Hist) :-findgoal(H, CF, Hist),min(CurTal, CF, Tal), Tal = 20, prov(T, Tal, Tally, Hist). 我們舉個(gè)例子說(shuō)明一下,當(dāng)系統(tǒng)需要證明a的時(shí)候,它發(fā)現(xiàn)要使用b,c。當(dāng)它開(kāi)始著手證明b之前,先把a(bǔ)記錄下來(lái),這樣當(dāng)用戶詢問(wèn)系統(tǒng)你為什么要證明b的時(shí)候,它就可以告訴用戶:我是要證明a才來(lái)證明b的。假如證明b又需要d和e,在在證明d和e之前,先把b記錄下來(lái),而d和e是需要向用戶收集的信息,用戶可能會(huì)詢問(wèn)為什么要問(wèn)我d和e這樣的問(wèn)題,這時(shí)系統(tǒng)中的歷史列表應(yīng)該是b,a,系統(tǒng)查詢這個(gè)列表就會(huì)告訴用戶,我需要證明b,因此詢問(wèn)d和e,而用戶問(wèn)為什么要證明b呢,系統(tǒng)就會(huì)回答是要證明a。顯然有了這個(gè)歷史列表,系統(tǒng)就知道自己為什么要獲得某個(gè)屬性的值了。 由于why命令是用戶在和系統(tǒng)的對(duì)話的中間詢問(wèn)的,和原來(lái)how命令有些不同。原來(lái)的外殼命令help、exit、how等等,都不能在對(duì)話中間使用,下面我們就修改原來(lái)的程序,讓用戶可以打斷和系統(tǒng)的對(duì)話,來(lái)做其他的事情。用下面的get_user謂詞替代以前的向用戶詢問(wèn)的謂詞,這個(gè)get_user謂詞允許在對(duì)話中間運(yùn)行why,trace,help命令,當(dāng)然加入其他的命令也是不困難的。 get_user(X, Hist) :-repeat, write(: ),read_line(X),process_ans(X, Hist).process_ans(why, Hist) :- nl, write_hist(Hist), !, cess_ans(trace, X, _) :- set_trace(X), !, cess_ans(help, _) :- help, !, cess_ans(X, _). % just return users answerwrite_hist() :- nl.write_hist(goal(X)|T) :- write_line(goal, X), !, write_hist(T).write_hist(N|T) :- list_rule(N), !,write_hist(T). 在回答why的時(shí)候,不僅僅顯示規(guī)則名,還可以顯示規(guī)則的內(nèi)容。在原始的推理引擎中加入解釋還記得第一章介紹的那個(gè)識(shí)別鳥(niǎo)類的專家系統(tǒng)么,由于這個(gè)專家系統(tǒng)使用的是prolog的推理引擎,所以無(wú)法加入解釋功能,為了加入解釋,我們必須使用prolog編寫(xiě)一個(gè)prolog解釋器,這項(xiàng)工作很容易完成。當(dāng)編寫(xiě)完成了自己的推理引擎之后,就可以很方便的處理解釋了。推理引擎首先要能夠讀取規(guī)則,在prolog中,子句本身就是prolog的項(xiàng)。內(nèi)部謂詞clause可以讓我們存取規(guī)則。它的兩個(gè)參數(shù)分別與子句的頭和內(nèi)容匹配。事實(shí)的內(nèi)容就只有目標(biāo)ture一個(gè)。在prolog的語(yǔ)法中,使用“,”隔開(kāi)規(guī)則的每個(gè)子目標(biāo),其實(shí)在prolog中,規(guī)則的儲(chǔ)存方法和我們看上去的有很大的不同。下面我們舉個(gè)例子。對(duì)于規(guī)則a:-b,c,d.在prolog中的實(shí)際結(jié)構(gòu)是:-(a,&(b,&(c,d).可以看出,這和我們自己定義的數(shù)據(jù)結(jié)構(gòu)信息是相同的。例如我們可能會(huì)定義:father(a,b).在這里father就是謂詞,a和b就是參數(shù)。而在規(guī)則中,:-是謂詞,&也是謂詞。這一點(diǎn)在前面的prolog語(yǔ)言介紹中過(guò)。有了上面的知識(shí),我們就很容易編寫(xiě)出遞歸處理每個(gè)子目標(biāo)的程序了。recurse(FirstGoal & RemainingGoals) :- process(FirstGoal),recurse(RemainingGoals).recurse(SingleGoal) :-process(SingleGoal). 這里使用&是為了讀者不把prolog中的兩種逗號(hào)搞混淆,一種逗號(hào)是用來(lái)把謂詞的參數(shù)分開(kāi)的例如:father(a,b). 另外一種則是用來(lái)連接規(guī)則中的兩個(gè)子目標(biāo)的, 表示并且的意思,這種逗號(hào)實(shí)際上是謂詞。有了可以存取prolog的事實(shí)和規(guī)則的方法以后,我們就可以很容易的編寫(xiě)出處理這些事實(shí)和規(guī)則的謂詞了。prove(true) :- !. prove(Goal, Rest) :-clause(Goal, Body), %找到和目標(biāo)匹配的子句prove(Body), %證明Body部分。prove(Rest). %證明上一層目標(biāo)的剩余部分。prove(Goal) :-clause(Goal, Body), %找到和目標(biāo)匹配的子句。prove(Body). %證明這個(gè)子句的Body部分。注意,prove謂詞正好模擬了prolog的解題過(guò)程。首先他找到頭部和第一個(gè)目標(biāo)匹配某個(gè)子句。然后試圖證明這個(gè)子句的目標(biāo)列表。上面的這個(gè)解釋器只能夠處理純prolog子句。對(duì)于prolog的內(nèi)部謂詞無(wú)能為力。因此最后我們加上一條:prove(X):-call(X).用來(lái)調(diào)用內(nèi)部謂詞。在我們的這個(gè)外殼程序中并不打算使用prolog的內(nèi)部謂詞,不過(guò)因?yàn)樾枰{(diào)用ask和menuask這樣的謂詞來(lái)和用戶對(duì)話,這些謂詞對(duì)于上面的解釋器就可以被認(rèn)為是內(nèi)部謂詞了。和前面的Clam一樣,我們加入?yún)?shù)Hist來(lái)回答用戶的why提問(wèn)。prove(true, _) :- !.prove(Goal, Rest), Hist) :-prov(Goal, (Goal, Rest),prove(Rest, Hist).prov(true, _) :- !.prov(menuask(X, Y, Z), Hist) :- menuask(X, Y, Z, Hist), !.prov(ask(X, Y), Hist) :- ask(X, Y, Hist), !. prov(Goal, Hist) :- clause(Goal, List), prove(List, Goal|Hist). 注意這里的歷史記錄保存的是目標(biāo)列表,而不是規(guī)則名。下面來(lái)修改頂層的謂詞。solve :-abolish(known, 3), define(known, 3),prove(top_goal(X), ),write(The answer is ), write(X), nl.solve :- write(No answer found), nl.處理why提問(wèn)的程序和clam類似。 get_user(X, Hist) :-repeat,read(X),process_ans(X, Hist), !.p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論