Skip to content

Commit 8dd144a

Browse files
update commercial CML model
1 parent 4664096 commit 8dd144a

1 file changed

Lines changed: 24 additions & 24 deletions

File tree

ConstraintModels/ExampleCMLRuleSets/CommercialFinal.cml

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type CommercialPropertyInsurance {
1111
string Cause_Of_Loss = ["Broad", "Special", "Basic"];
1212

1313
@(closeRelation=true, propagateUp=true)
14-
relation commerciallocationclass : CommercialLocationClass[0..10] {
14+
relation commerciallocationclass : CommercialLocationClass[0..2] {
1515
locationCaStateCount = count(State == "CA");
1616
locationTxStateCount = count(State == "TX");
1717
@(defaultValue = 0)
@@ -22,24 +22,27 @@ type CommercialPropertyInsurance {
2222
locationMaxBuildingCovLimit = max(Location.commercialBuildingCovLimit);
2323
@(defaultValue = 0)
2424
locationMaxWarehouseCovLimit = max(Location.warehouseBuildingCovLimit);
25+
@(defaultValue = 0)
2526
locationSumBuildingEquipVal = sum(Location.buildingSumEquipValue);
2627
}
2728

2829
rule(Agreed_Value > 10000, "hide", "attribute", "SIC_Code");
2930

30-
@(closeRelation=true)
3131
relation generalliabilitycoverage : GeneralLiabilityCoverage[0..1];
32-
3332
int childCommBuildCovLimit = commerciallocationclass.locationMaxBuildingCovLimit;
3433
int childWarehouseBuildCovLimit = commerciallocationclass.locationMaxWarehouseCovLimit;
3534
int childLocBuildAge6Count = commerciallocationclass.commLocBuildAge6Count;
3635
int childLocBuildEquipGoodCount = commerciallocationclass.commLocBuildEquipGoodCount;
3736
int childCommercialEquipmentValueSum = commerciallocationclass.locationSumBuildingEquipVal;
37+
38+
39+
40+
require(childLocBuildAge6Count > 0 && childLocBuildEquipGoodCount > 0, generalliabilitycoverage[GeneralLiabilityCoverage], "General Liability coverage is required when Building age is 6 and Equipment condition is Good");
41+
int generalLiabilityLimit = generalliabilitycoverage[GeneralLiabilityCoverage].General_Liability_Limit;
42+
43+
require(commerciallocationclass.locationMaxWarehouseCovLimit == 50000 && commerciallocationclass.locationMaxBuildingCovLimit == 50000, generalliabilitycoverage[GeneralLiabilityCoverage] {General_Liability_Limit = 50000});
3844

39-
require(childLocBuildAge6Count > 0 && childLocBuildEquipGoodCount > 0, generalliabilitycoverage[GeneralLiabilityCoverage] {General_Liability_Limit = 50000}, "General Liability coverage is required when Building age is 6 and Equipment condition is Good");
40-
boolean glLimitCondition = commerciallocationclass.locationTxStateCount == 0 && (childWarehouseBuildCovLimit < 20000 && childCommBuildCovLimit < 50000) && childCommercialEquipmentValueSum > 100000 && generalliabilitycoverage[GeneralLiabilityCoverage] == 1;
4145

42-
int generalLiabilityLimit = [1000, 2000, 5000, 10000, 25000, 50000];
4346
}
4447

4548
type GeneralLiabilityCoverage {
@@ -60,7 +63,7 @@ type CommercialLocationClass {
6063

6164
type Location : CommercialLocationClass {
6265
@(closeRelation=true, propagateUp=true)
63-
relation commercialbuildingclass : CommercialBuildingClass[0..10] {
66+
relation commercialbuildingclass : CommercialBuildingClass[0..2] {
6467
@(defaultValue = 0)
6568
buildingAge6Count = count(Building_Age == 6);
6669
@(defaultValue = 0)
@@ -77,13 +80,12 @@ type Location : CommercialLocationClass {
7780

7881
string locationProdState = State;
7982

80-
int locBuildAge6Count = (commercialbuildingclass[CommercialBuildingClass] > 0) ? commercialbuildingclass.buildingAge6Count : 0;
81-
int locBuildEquipGoodCountInt = (commercialbuildingclass[CommercialBuildingClass] > 0) ? commercialbuildingclass.locBuildEquipGoodCount : 0;
82-
int commercialBuildingCovLimit = (commercialbuildingclass[Building] > 0) ? commercialbuildingclass.maxBuildCovLimit : 0;
83-
int warehouseBuildingCovLimit = (commercialbuildingclass[Warehouse] > 0) ? commercialbuildingclass.maxWarehouseCovLimit : 0;
84-
int buildingSumEquipValue = (commercialbuildingclass[CommercialBuildingClass] > 0) ? commercialbuildingclass.sumBuildingEquipVal : 0;
83+
int locBuildAge6Count = commercialbuildingclass.buildingAge6Count;
84+
int locBuildEquipGoodCountInt = commercialbuildingclass.locBuildEquipGoodCount;
85+
int commercialBuildingCovLimit = commercialbuildingclass.maxBuildCovLimit;
86+
int warehouseBuildingCovLimit = commercialbuildingclass.maxWarehouseCovLimit;
87+
int buildingSumEquipValue =commercialbuildingclass.sumBuildingEquipVal;
8588

86-
/* Set attribute value rule */
8789
constraint(City == "Boston" -> State == "MA", "State must be MA if City is set to Boston");
8890
constraint(City == "San Francisco" -> State == "CA", "State must be CA if City is set to San Francisco");
8991
}
@@ -101,46 +103,44 @@ type CommercialBuildingClass {
101103

102104
type Building : CommercialBuildingClass {
103105
@(closeRelation = true, propagateUp=true)
104-
relation commercialequipmentclass : CommercialEquipmentClass[0..20] {
106+
relation commercialequipmentclass : CommercialEquipmentClass[0..2] {
105107
equipMakeLawnMowerCount = count(Equipment_Make == "Lawnmower");
106108
equipMakeFridgeCount = count(Equipment_Make == "Refrigerator");
107109
equipGoodConditionCount = count(Equipment_Condition == "Good");
108110
equipValueSum = sum(Equipment_Value);
109111
}
110112

111-
@(closeRelation=true)
113+
@(closeRelation=true, propagateUp=true)
112114
relation burglarycoverage : BurglaryCoverage[0..1];
113115

114-
@(closeRelation=true)
116+
@(closeRelation=true, propagateUp=true)
115117
relation vandalismcoverage : VandalismCoverage[0..1];
116-
117-
string parentLocationProdState = parent(locationProdState);
118118
string parentLocationState = parent(State);
119119
int genLiabilityLimit = parent(genLimit);
120120

121-
int commercialBurglaryCovLimit = (burglarycoverage[BurglaryCoverage] > 0) ? burglarycoverage.Burglary_Limit : 0;
122-
int buildingEquipValSum = (commercialequipmentclass[Equipment] > 0) ? commercialequipmentclass.equipValueSum : 0;
123-
int buildEquipGoodConditionCount = (commercialequipmentclass[Equipment] > 0) ? commercialequipmentclass.equipGoodConditionCount : 0;
121+
int commercialBurglaryCovLimit = burglarycoverage.Burglary_Limit;
122+
int buildingEquipValSum = commercialequipmentclass.equipValueSum;
123+
int buildEquipGoodConditionCount = commercialequipmentclass.equipGoodConditionCount;
124124

125125
boolean equipmentGoodBuildingAgeCondition = buildEquipGoodConditionCount > 0 && Building_Age == 6;
126126
rule(buildEquipGoodConditionCount > 0 && Building_Age == 6, "hide", "attribute", "Sprinklers");
127127
}
128128

129129
type Warehouse : CommercialBuildingClass {
130130
@(closeRelation = true, propagateUp=true)
131-
relation warehousecommercialequipmentclass : CommercialEquipmentClass[0..20];
131+
relation warehousecommercialequipmentclass : CommercialEquipmentClass[0..2];
132132

133133
@(closeRelation=true, propagateUp=true)
134134
relation warehouseburglarycoverage : BurglaryCoverage[0..1];
135135

136-
@(closeRelation=true,sequence = 3)
136+
@(closeRelation=true)
137137
relation warehousevandalismcoverage : VandalismCoverage[0..1];
138138

139139
int warehouseBurglaryCovLimit = warehouseburglarycoverage.Burglary_Limit;
140140
}
141141

142142
type CommercialEquipmentClass {
143-
@(defaultValue = "Good", sequence=1)
143+
@(defaultValue = "Good")
144144
string Equipment_Condition = ["Good", "Very Good", "New"];
145145

146146
@(defaultValue = "5")

0 commit comments

Comments
 (0)