|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 19456 (0x4c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Qualit_Epsilon_Rule_Bundle, package body Qualit_Frames, package body Qualit_Generic_Agent_3, package body Qualit_Update_Rule_Bundle, package body Qualit_Working_Memory, seg_04cb06
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with Generic_Kbs;
with Default_User_Operators;
with Display;
with Output_Stream;
with Qualit_Result_File_Maker_3;
package body Qualit_Generic_Agent_3 is
The_Output_Window : Display.Window (Display.Output_Window);
The_Output_File : Qualit_Result_File_Maker_3.Object;
-- ****************************** KBS ************************************************
type Class_Names is (Prediction, Delta_Y, Up_Value, Down_Value,
Up_Decrement, Up_Increment, Down_Decrement,
Down_Increment, Current_Position, Position_To_Reach,
Update, Epsilon, Epsilon_Variation,
Variation_Of_Epsilon_Variation, Epsilon_Near_Zero,
Plus_Delta_Y_Max, Minus_Delta_Y_Max,
Plus_Near_Delta_Y_Max, Minus_Near_Delta_Y_Max,
Delta_Y_Max_Reached_In_B, Nothing);
type Rule_Bundles is (Update_Rule_Bundle, Epsilon_Rule_Bundle);
package Kbs is new Generic_Kbs
(Max_Slots => 50,
Max_Condition_Elements_By_Rule => 15,
Max_Rules => 25,
Class_Names => Class_Names,
Null_Class_Name => Class_Names'Last,
User_Defined_Expression_Operators =>
Default_User_Operators.Expression_Operators,
User_Defined_Unary_Evaluate =>
Default_User_Operators.Unary_Evaluate,
User_Defined_Binary_Evaluate =>
Default_User_Operators.Binary_Evaluate,
User_Defined_Predicate_Operators =>
Default_User_Operators.Predicate_Operators,
User_Defined_Unary_Match =>
Default_User_Operators.Unary_Match,
User_Defined_Binary_Match =>
Default_User_Operators.Binary_Match,
Rule_Bundles => Rule_Bundles);
-- ****************************** FRAMES *********************************************
package Qualit_Frames is
use Slot;
use Kbs;
Null_Value : constant Slot.Object := Value (0);
type Prediction_Names is (Epsilon_Should_Decrease_To_Zero,
Epsilon_Should_Increase_Or_Be_Constant,
Epsilon_Variation_Should_Decrease,
Epsilon_Should_Decrease_Or_Be_Constant);
type Boolean is (True, False);
package Prediction_Name_Facilities is
new Enumeration_Facilities (Prediction_Names);
Epsilon_Should_Decrease_To_Zero_Prediction_Name : constant Object :=
Prediction_Name_Facilities.Value (Epsilon_Should_Decrease_To_Zero);
Epsilon_Should_Increase_Or_Be_Constant_Prediction_Name :
constant Object := Prediction_Name_Facilities.Value
(Epsilon_Should_Increase_Or_Be_Constant);
Epsilon_Variation_Should_Decrease_Prediction_Name : constant Object :=
Prediction_Name_Facilities.Value (Epsilon_Variation_Should_Decrease);
Epsilon_Should_Decrease_Or_Be_Constant_Prediction_Name :
constant Object := Prediction_Name_Facilities.Value
(Epsilon_Should_Decrease_Or_Be_Constant);
package Boolean_Facilities is new Enumeration_Facilities (Boolean);
True_Boolean : constant Object := Boolean_Facilities.Value (True);
False_Boolean : constant Object := Boolean_Facilities.Value (False);
type Prediction_Slots is (Quadrant_Number, Prediction_Name);
package Predictions is
new Fact_Base.Generic_Class (Class_Name => Prediction,
Class_Size => 1,
Slot_Names => Prediction_Slots);
type Epsilon_Slots is (Value);
package Epsilons is
new Fact_Base.Generic_Class (Class_Name => Epsilon,
Class_Size => 1,
Slot_Names => Epsilon_Slots);
type Epsilon_Variation_Slots is (Value);
package Epsilon_Variaions is
new Fact_Base.Generic_Class (Class_Name => Epsilon_Variation,
Class_Size => 1,
Slot_Names => Epsilon_Variation_Slots);
type Variation_Of_Epsilon_Variation_Slots is (Value);
package Variation_Of_Epsilon_Variations is
new Fact_Base.Generic_Class
(Class_Name => Variation_Of_Epsilon_Variation,
Class_Size => 1,
Slot_Names => Variation_Of_Epsilon_Variation_Slots);
type Up_Value_Slots is (Value);
package Up_Values is
new Fact_Base.Generic_Class (Class_Name => Up_Value,
Class_Size => 1,
Slot_Names => Up_Value_Slots);
type Down_Value_Slots is (Value);
package Down_Values is
new Fact_Base.Generic_Class (Class_Name => Down_Value,
Class_Size => 1,
Slot_Names => Down_Value_Slots);
type Up_Decrement_Slots is (Value);
package Up_Decrements is
new Fact_Base.Generic_Class (Class_Name => Up_Decrement,
Class_Size => 1,
Slot_Names => Up_Decrement_Slots);
type Up_Increment_Slots is (Value);
package Up_Increments is
new Fact_Base.Generic_Class (Class_Name => Up_Increment,
Class_Size => 1,
Slot_Names => Up_Increment_Slots);
type Down_Decrement_Slots is (Value);
package Down_Decrements is
new Fact_Base.Generic_Class (Class_Name => Down_Decrement,
Class_Size => 1,
Slot_Names => Down_Decrement_Slots);
type Down_Increment_Slots is (Value);
package Down_Increments is
new Fact_Base.Generic_Class (Class_Name => Down_Increment,
Class_Size => 1,
Slot_Names => Down_Increment_Slots);
type Current_Position_Slots is (Value);
package Current_Positions is
new Fact_Base.Generic_Class (Class_Name => Current_Position,
Class_Size => 1,
Slot_Names => Current_Position_Slots);
type Position_To_Reach_Slots is (Value);
package Positions_To_Reach is
new Fact_Base.Generic_Class (Class_Name => Position_To_Reach,
Class_Size => 1,
Slot_Names => Position_To_Reach_Slots);
type Update_Slots is (Valid);
package Updates is
new Fact_Base.Generic_Class (Class_Name => Update, Class_Size => 1,
Slot_Names => Update_Slots);
type Delta_Y_Slots is (Value);
package Delta_Ys is
new Fact_Base.Generic_Class (Class_Name => Delta_Y,
Class_Size => 1,
Slot_Names => Delta_Y_Slots);
type Epsilon_Near_Zero_Slots is (Value);
package Epsilon_Near_Zeros is
new Fact_Base.Generic_Class (Class_Name => Epsilon_Near_Zero,
Class_Size => 1,
Slot_Names => Epsilon_Near_Zero_Slots);
type Plus_Delta_Y_Max_Slots is (Value);
package Plus_Delta_Y_Maxs is
new Fact_Base.Generic_Class (Class_Name => Plus_Delta_Y_Max,
Class_Size => 1,
Slot_Names => Plus_Delta_Y_Max_Slots);
type Minus_Delta_Y_Max_Slots is (Value);
package Minus_Delta_Y_Maxs is
new Fact_Base.Generic_Class (Class_Name => Minus_Delta_Y_Max,
Class_Size => 1,
Slot_Names => Minus_Delta_Y_Max_Slots);
type Plus_Near_Delta_Y_Max_Slots is (Value);
package Plus_Near_Delta_Y_Maxs is
new Fact_Base.Generic_Class
(Class_Name => Plus_Near_Delta_Y_Max,
Class_Size => 1,
Slot_Names => Plus_Near_Delta_Y_Max_Slots);
type Minus_Near_Delta_Y_Max_Slots is (Value);
package Minus_Near_Delta_Y_Maxs is
new Fact_Base.Generic_Class
(Class_Name => Minus_Near_Delta_Y_Max,
Class_Size => 1,
Slot_Names => Minus_Near_Delta_Y_Max_Slots);
type Delta_Y_Max_Reached_In_B_Slots is (Value);
package Delta_Y_Max_Reached_In_Bs is
new Fact_Base.Generic_Class
(Class_Name => Delta_Y_Max_Reached_In_B,
Class_Size => 1,
Slot_Names => Delta_Y_Max_Reached_In_B_Slots);
procedure Put (The_Fact : Fact_Name; Where : Output_Stream.Object);
end Qualit_Frames;
package body Qualit_Frames is separate;
-- ************************* WORKING MEMORY ******************************************
package Qualit_Working_Memory is
procedure Put_All is
new Kbs.Fact_Base.Working_Memory.Generic_Put (Qualit_Frames.Put);
procedure Default_Put;
procedure Load_Initial (The_Position_To_Reach : Integer);
end Qualit_Working_Memory;
package body Qualit_Working_Memory is separate;
-- ************************ UPDATE RULE BUNDLE ***************************************
package Qualit_Update_Rule_Bundle is
use Kbs;
procedure Update_Do_Action (For_Rule : Rule_Id;
On_Facts : Fact_Collection);
end Qualit_Update_Rule_Bundle;
package body Qualit_Update_Rule_Bundle is separate;
-- ************************ EPSILON RULE BUNDLE **************************************
package Qualit_Epsilon_Rule_Bundle is
use Kbs;
procedure Epsilon_Rules_Do_Action
(For_Rule : Rule_Id; On_Facts : Fact_Collection);
end Qualit_Epsilon_Rule_Bundle;
package body Qualit_Epsilon_Rule_Bundle is separate;
-- ************************** PRINCIPAL **********************************************
procedure Qualit_Do_Action (For_Rule : Kbs.Rule_Id;
On_Facts : Kbs.Fact_Collection) is
begin
case Kbs.Rule_Base.Get (For_Rule) is
when Update_Rule_Bundle =>
Qualit_Update_Rule_Bundle.Update_Do_Action (For_Rule, On_Facts);
when Epsilon_Rule_Bundle =>
Qualit_Epsilon_Rule_Bundle.Epsilon_Rules_Do_Action
(For_Rule, On_Facts);
end case;
end Qualit_Do_Action;
task The_Agent is
entry Work;
entry Stop_Working;
end The_Agent;
task body The_Agent is
Inference_Succeded : Boolean := True;
Done : Boolean := False;
function Qualit_Infere is new Kbs.Rule_Base.
One_Inference_With_Conflict_Set
(Retrieve => Kbs.Retrieve,
Do_Action => Qualit_Do_Action);
begin
Qualit_Result_File_Maker_3.Create
(The_Output_File, "RESULT" & Agent_Ids'Image (Agent_Id));
while not (Done) loop
select
accept Work;
while Inference_Succeded loop
Inference_Succeded := Qualit_Infere;
-- inference has not succeded when actual_pos = pos_to_reach;
end loop;
Qualit_Result_File_Maker_3.Close (The_Output_File);
Job_Terminated (Agent_Id);
or
accept Stop_Working;
Done := True;
end select;
end loop;
end The_Agent;
procedure Go (Pos_To_Reach : Integer) is
begin
Qualit_Working_Memory.Load_Initial (Pos_To_Reach);
The_Agent.Work;
end Go;
procedure Stop is
begin
The_Agent.Stop_Working;
end Stop;
end Qualit_Generic_Agent_3;
nblk1=12
nid=11
hdr6=22
[0x00] rec0=19 rec1=00 rec2=01 rec3=068
[0x01] rec0=04 rec1=00 rec2=0e rec3=046
[0x02] rec0=10 rec1=00 rec2=0b rec3=020
[0x03] rec0=0c rec1=00 rec2=0c rec3=00a
[0x04] rec0=12 rec1=00 rec2=07 rec3=04a
[0x05] rec0=18 rec1=00 rec2=06 rec3=03a
[0x06] rec0=00 rec1=00 rec2=0a rec3=002
[0x07] rec0=15 rec1=00 rec2=05 rec3=03a
[0x08] rec0=15 rec1=00 rec2=04 rec3=03e
[0x09] rec0=15 rec1=00 rec2=03 rec3=002
[0x0a] rec0=14 rec1=00 rec2=0d rec3=000
[0x0b] rec0=16 rec1=00 rec2=09 rec3=046
[0x0c] rec0=1c rec1=00 rec2=12 rec3=036
[0x0d] rec0=23 rec1=00 rec2=08 rec3=068
[0x0e] rec0=02 rec1=00 rec2=0f rec3=002
[0x0f] rec0=1c rec1=00 rec2=02 rec3=006
[0x10] rec0=20 rec1=00 rec2=10 rec3=000
[0x11] rec0=00 rec1=00 rec2=00 rec3=000
tail 0x21753c18087166b3d531a 0x42a00088462063c03
Free Block Chain:
0x11: 0000 00 00 00 af 80 1d 20 20 20 20 20 20 20 70 72 6f ┆ pro┆