Produktionssystem (datavetenskap)

Ett "produktionssystem" (eller "produktionsregelsystem") är ett datorprogram som vanligtvis används för att tillhandahålla någon form av artificiell intelligens, som i första hand består av en uppsättning regler om beteende men det inkluderar också den mekanism som är nödvändig för att följa dessa regler som systemet svarar på världens stater [ citat behövs ] . Dessa regler, kallade produktioner , är en grundläggande representation som är användbar i automatiserad planering , expertsystem och åtgärdsval .

Produktioner består av två delar: en sensorisk förutsättning (eller "OM" uttalande) och en handling (eller "DÅ"). Om en produktionsförutsättning matchar världens nuvarande tillstånd , sägs produktionen utlösas . Om en produktions handling utförs sägs den ha avfyrat . Ett produktionssystem innehåller också en databas, ibland kallad arbetsminne , som upprätthåller data om aktuellt tillstånd eller kunskap, och en regeltolkare. Regeltolken måste tillhandahålla en mekanism för att prioritera produktioner när mer än en utlöses. [ citat behövs ]

Grundläggande drift

Regeltolkare utför i allmänhet en framåtkedjealgoritm för att välja produktioner att köra för att uppfylla nuvarande mål, vilket kan inkludera uppdatering av systemets data eller övertygelser . Villkorsdelen av varje regel ( vänster sida eller LHS) testas mot det aktuella tillståndet för arbetsminnet.

I idealiserade eller dataorienterade produktionssystem finns det ett antagande att alla utlösta tillstånd bör utföras: de efterföljande åtgärderna ( höger sida eller RHS) kommer att uppdatera agentens kunskap, ta bort eller lägga till data till arbetsminnet. Systemet slutar bearbeta antingen när användaren avbryter den framåtriktade kedjan; när ett givet antal cykler har utförts; när ett "stopp" RHS exekveras, eller när inga regler har LHS som är sanna.

Realtids- och expertsystem måste däremot ofta välja mellan ömsesidigt uteslutande produktioner --- eftersom åtgärder tar tid kan endast en åtgärd vidtas, eller (i fallet med ett expertsystem) rekommenderas. I sådana system går regeltolkaren, eller slutledningsmotorn , genom två steg: matchning av produktionsregler mot databasen, följt av att välja vilka av de matchade reglerna som ska tillämpas och de valda åtgärderna exekveras.

Matcha produktionsregler mot arbetsminne

Produktionssystem kan variera beroende på villkorens uttryckskraft i produktionsreglerna. Följaktligen mönstermatchningsalgoritmen som samlar in produktionsregler med matchade villkor sträcka sig från det naiva – att pröva alla regler i sekvens, att stanna vid den första matchningen – till den optimerade, där regler "kompileras" till ett nätverk av inbördes relaterade villkor .

Det senare illustreras av RETE-algoritmen , designad av Charles L. Forgy 1974, som används i en serie produktionssystem, kallade OPS och ursprungligen utvecklade vid Carnegie Mellon University som kulminerade i OPS5 i början av åttiotalet. OPS5 kan ses som ett fullfjädrat programmeringsspråk för programmering av produktionssystem.

Att välja vilka regler som ska utvärderas

Produktionssystem kan också skilja sig åt i det slutliga urvalet av produktionsregler som ska utföras, eller brand . Samlingen av regler som härrör från den tidigare matchningsalgoritmen kallas konfliktuppsättningen, och urvalsprocessen kallas också en konfliktlösningsstrategi .

Även här kan sådana strategier skilja sig från de enkla – använd den ordning i vilken produktionsreglerna skrevs; tilldela vikter eller prioriteringar till produktionsregler och sortera konfliktuppsättningen i enlighet med det - till komplexet - sortera konfliktuppsättningen efter tidpunkterna då produktionsregler tidigare avfyrades; eller i enlighet med omfattningen av de ändringar som induceras av deras RHS. Vilken konfliktlösningsstrategi som än implementeras är metoden verkligen avgörande för effektiviteten och korrektheten i produktionssystemet. Vissa system aktiverar helt enkelt alla matchande produktioner.

Använda produktionssystem

Användningen av produktionssystem varierar från enkla regler för omskrivning av strängar till modellering av mänskliga kognitiva processer, från termomskrivning och reduktionssystem till expertsystem .

Ett enkelt exempel på produktionssystem för omskrivning av strängar

Det här exemplet visar en uppsättning produktionsregler för att vända en sträng från ett alfabet som inte innehåller symbolerna "$" och "*" (som används som markörsymboler).

P1: $$ -> * P2: *$ -> * P3: *x -> x* P4: * -> null & halt P5: $xy -> y$x P6: null -> $

I detta exempel väljs produktionsregler för testning enligt deras ordning i denna produktionslista. För varje regel undersöks inmatningssträngen från vänster till höger med ett rörligt fönster för att hitta en matchning med produktionsregelns LHS. När en matchning hittas ersätts den matchade delsträngen i inmatningssträngen med produktionsregelns RHS. I detta produktionssystem är x och y variabler som matchar alla tecken i inmatningssträngalfabetet. Matchningen återupptas med P1 när ersättningen har gjorts.

Strängen "ABC", till exempel, genomgår följande sekvens av transformationer under dessa produktionsregler:

$ABC (P6) B$AC (P5) BC$A (P5) $BC$A (P6) C$B$A (P5) $C$B$A (P6) $$C$B$A (P6) ) *C$B$A (P1) C*$B$A (P3) C*B$A (P2) CB*$A (P3) CB*A (P2) CBA* (P3) CBA (P4)

I ett så enkelt system är ordningen av produktionsreglerna avgörande. Ofta gör bristen på kontrollstruktur produktionssystem svåra att designa. Det är naturligtvis möjligt att lägga till styrstruktur till produktionssystemmodellen, nämligen i inferensmotorn eller i arbetsminnet.

Ett exempel på produktionsregel för OPS5

I en leksakssimuleringsvärld där en apa i ett rum kan ta tag i olika föremål och klättra på andra, skulle en exempelproduktionsregel för att ta tag i ett föremål som hänger i taket se ut så här:

(p Holds::Object-Ceiling {(mål ^status aktiv ^typ håller ^objid ) } {(fysiskt objekt ^id ^vikt lätt ^at ^i taket) } {(fysiskt objekt ^id stege ^at ^på golvet) } {(apa ^på stege ^håller NIL) } -(fysiskt-objekt ^på ) --> (skriv (crlf) Ta tag (crlf)) (ändra ^på NIL) (ändra ^håller ) (ändra ^status nöjd) )

I det här exemplet är data i arbetsminnet strukturerad och variabler visas mellan vinkelparenteser. Namnet på datastrukturen, såsom "mål" och "fysiskt objekt", är den första bokstavliga i förhållanden; fälten i en struktur har prefixet "^". "-" indikerar ett negativt tillstånd.

Produktionsregler i OPS5 gäller för alla instanser av datastrukturer som matchar villkor och överensstämmer med variabla bindningar. I det här exemplet, om flera objekt skulle hängas upp i taket, var och en med en annan stege i närheten som stödjer en tomhänt apa, skulle konfliktuppsättningen innehålla lika många produktionsregelinstanser härledda från samma produktion "Holds::Object-Ceiling". Konfliktlösningssteget skulle senare välja vilka produktionsinstanser som skulle avfyras.

Bindningen av variabler som härrör från mönstermatchningen i LHS används i RHS för att referera till data som ska modifieras. Arbetsminnet innehåller explicita styrstrukturdata i form av "mål"-datastrukturinstanser. I exemplet, när en apa väl håller i det suspenderade objektet, är statusen för målet satt till "nöjd" och samma produktionsregel kan inte längre tillämpas eftersom dess första villkor misslyckas.

Förhållande till logik

Både Russell och Norvigs Introduction to Artificial Intelligence och John Sowas Knowledge Representation: Logical, Philosophical, and Computational Foundations karakteriserar produktionssystem som logiska system som utför resonemang med hjälp av framåtkedja. Stuart Shapiro, som recenserar Sowas bok, hävdar dock att detta är en felaktig framställning. [ citat behövs ] På liknande sätt hävdar Kowalski och Sadri att, eftersom handlingar i produktionssystem förstås som imperativ, har produktionssystem inte en logisk semantik. Deras logik och datorspråk Logic Production System (LPS) kombinerar logikprogram, tolkade som en agents övertygelse, med reaktiva regler, tolkade som en agents mål. De hävdar att reaktiva regler i LPS ger en logisk semantik till produktionsregler, som de annars saknar. I följande exempel är raderna 1-3 typdeklarationer, 4 beskriver initialtillståndet, 5 är en reaktiv regel, 6-7 är logiska programsatser och 8 är en kausal lag:

1. flytande eld. 2. åtgärder eliminera, fly. 3. händelser deal_with_fire. 4. inledningsvis brand. 5. om brand då deal_with_fire. 6. deal_with_fire om eliminera. 7. deal_with_fire om flykt. 8. eliminera avslutar brand.

Lägg märke till i detta exempel att den reaktiva regeln på rad 5 utlöses, precis som en produktionsregel, men den här gången blir dess slutsats deal_with_fire ett mål som ska reduceras till delmål med hjälp av logikprogrammen på rad 6-7. Dessa delmål är åtgärder (rad 2), av vilka minst ett måste utföras för att uppfylla målet.

Relaterade system

Se även