@frontlinesystems/rason-mcp-server 2026.5.1 → 2026.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/LICENSE +35 -35
  2. package/examples/EXAMPLES_REFERENCE.md +128 -128
  3. package/examples/{optimization → Optimization}/Conic/AirlineHubConic.json +111 -111
  4. package/examples/{optimization → Optimization}/Conic/AirlineHubConic2.json +108 -108
  5. package/examples/{optimization → Optimization}/Conic/AirlineHubConic3.json +111 -111
  6. package/examples/{optimization → Optimization}/Conic/AirlineHubConic4.json +99 -99
  7. package/examples/{optimization → Optimization}/Conic/AirlineHubConic5.json +101 -101
  8. package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv.json +81 -81
  9. package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv4.json +96 -96
  10. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel.json +73 -73
  11. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel1.json +86 -86
  12. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel11.json +108 -108
  13. package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel2.json +77 -77
  14. package/examples/{optimization → Optimization}/DataBinding/ProductMixTab.json +89 -89
  15. package/examples/{optimization → Optimization}/DataBinding/ProductMixTab1.json +73 -73
  16. package/examples/{optimization → Optimization}/DataBinding/ProductMixTab2.json +77 -77
  17. package/examples/{optimization → Optimization}/Linear/Inventory.json +199 -199
  18. package/examples/{optimization → Optimization}/Linear/Matop.json +119 -119
  19. package/examples/{optimization → Optimization}/Linear/ProductMix.json +97 -97
  20. package/examples/{optimization → Optimization}/Linear/ProductMix2.json +72 -72
  21. package/examples/{optimization → Optimization}/Linear/ProductMix3.json +49 -49
  22. package/examples/{optimization → Optimization}/Linear/ProductMix4.json +56 -56
  23. package/examples/{optimization → Optimization}/Linear/ProductMixCsv1.json +106 -106
  24. package/examples/{optimization → Optimization}/Linear/ProductMixCsv2.json +106 -106
  25. package/examples/{optimization → Optimization}/Linear/ProductMixSQL11.json +82 -82
  26. package/examples/{optimization → Optimization}/Linear/Rowop.json +126 -126
  27. package/examples/{optimization → Optimization}/NonLinear/AirlineHub.json +63 -63
  28. package/examples/{optimization → Optimization}/NonLinear/AirlineHub2.json +47 -47
  29. package/examples/{optimization → Optimization}/NonLinear/AirlineHub3.json +47 -47
  30. package/examples/{optimization → Optimization}/NonSmooth/Inventory2.json +159 -159
  31. package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt.json +55 -55
  32. package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt2.json +65 -65
  33. package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyChance.json +78 -78
  34. package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
  35. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect.json +77 -77
  36. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect2.json +81 -81
  37. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect3.json +84 -84
  38. package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect4.json +74 -74
  39. package/examples/{simulation → Simulation}/CandyStoreSalesUsingSIP.json +147 -147
  40. package/examples/{simulation → Simulation}/CollegeFundGrowth1.json +423 -423
  41. package/examples/{simulation → Simulation}/CollegeFundGrowth1SIPModel.json +27 -27
  42. package/examples/{simulation → Simulation}/CollegeFundGrowth2.json +415 -415
  43. package/examples/{simulation → Simulation}/CollegeFundGrowthSIP.json +401 -401
  44. package/examples/{simulation → Simulation}/GBMSimulationModel.json +236 -236
  45. package/examples/{simulation → Simulation}/YieldManagement(Sim).json +69 -69
  46. package/examples/{simulation → Simulation}/YieldManagement2(Sim).json +72 -72
  47. package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
  48. package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
  49. package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
  50. package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
  51. package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
  52. package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
  53. package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
  54. package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
  55. package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
  56. package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
  57. package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
  58. package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
  59. package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
  60. package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
  61. package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
  62. package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
  63. package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
  64. package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
  65. package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
  66. package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
  67. package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
  68. package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
  69. package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
  70. package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
  71. package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
  72. package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
  73. package/examples/datamining/Classification/DecisionTree.json +90 -90
  74. package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
  75. package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
  76. package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
  77. package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
  78. package/examples/datamining/Classification/FindBestModel.json +86 -86
  79. package/examples/datamining/Classification/LogisticRegression.json +82 -82
  80. package/examples/datamining/Classification/NaiveBayes.json +78 -78
  81. package/examples/datamining/Classification/NearestNeighbors.json +84 -84
  82. package/examples/datamining/Classification/NeuralNetwork.json +92 -92
  83. package/examples/datamining/Clustering/Hierarchical.json +54 -54
  84. package/examples/datamining/Clustering/KMeans.json +71 -71
  85. package/examples/datamining/DataSources/DelimitedFile.json +49 -49
  86. package/examples/datamining/DataSources/JSONFile.json +49 -49
  87. package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
  88. package/examples/datamining/DataSources/MSExcelTable.json +50 -50
  89. package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
  90. package/examples/datamining/DataSources/ODATATable.json +49 -49
  91. package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
  92. package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
  93. package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
  94. package/examples/datamining/FeatureSelection/Univariate.json +78 -78
  95. package/examples/datamining/Regression/DecisionTree.json +82 -82
  96. package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
  97. package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
  98. package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
  99. package/examples/datamining/Regression/FindBestModel.json +86 -86
  100. package/examples/datamining/Regression/LinearRegression.json +124 -124
  101. package/examples/datamining/Regression/NearestNeighbors.json +77 -77
  102. package/examples/datamining/Regression/NeuralNetwork.json +82 -82
  103. package/examples/datamining/Scoring/JSONClassifier.json +62 -62
  104. package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
  105. package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
  106. package/examples/datamining/Scoring/JSONForecaster.json +49 -49
  107. package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
  108. package/examples/datamining/Scoring/JSONPCA.json +41 -41
  109. package/examples/datamining/Scoring/JSONRegressor.json +56 -56
  110. package/examples/datamining/Scoring/JSONTransformer.json +38 -38
  111. package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
  112. package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
  113. package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
  114. package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
  115. package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
  116. package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
  117. package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
  118. package/examples/datamining/Summarizer/Summarization.json +54 -54
  119. package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
  120. package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
  121. package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
  122. package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
  123. package/examples/datamining/TimeSeries/Arima.json +74 -74
  124. package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
  125. package/examples/datamining/TimeSeries/Exponential.json +64 -64
  126. package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
  127. package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
  128. package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
  129. package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
  130. package/examples/datamining/Transformation/Binning.json +69 -69
  131. package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
  132. package/examples/datamining/Transformation/CategoryReduction.json +51 -51
  133. package/examples/datamining/Transformation/Factorization.json +50 -50
  134. package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
  135. package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
  136. package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
  137. package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
  138. package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
  139. package/examples/datamining/Transformation/Partitioning.json +46 -46
  140. package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
  141. package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
  142. package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
  143. package/examples/datamining/Transformation/Rescaling.json +67 -67
  144. package/examples/datamining/Transformation/Sampling.json +43 -43
  145. package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
  146. package/examples/flow/SQLServerTransform.json +260 -260
  147. package/examples/flow/dm-calc-pipeline.json +277 -277
  148. package/examples/flow/dm-pipeline-simulation.json +113 -113
  149. package/examples/flow/opt-sim-pipeline.json +159 -159
  150. package/examples/flow/sim-dm-pipeline.json +106 -106
  151. package/examples/flow/sim-sim-pipeline.json +136 -136
  152. package/examples/index.json +4678 -4678
  153. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
  154. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
  155. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
  156. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
  157. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
  158. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
  159. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
  160. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
  161. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
  162. package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
  163. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
  164. package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
  165. package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
  166. package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
  167. package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
  168. package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
  169. package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
  170. package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
  171. package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
  172. package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
  173. package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
  174. package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
  175. package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
  176. package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
  177. package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
  178. package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
  179. package/examples/rason-features/UserGuide/UGForecast.json +50 -50
  180. package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
  181. package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
  182. package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
  183. package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
  184. package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
  185. package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
  186. package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
  187. package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
  188. package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
  189. package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
  190. package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
  191. package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
  192. package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
  193. package/out/index.cjs +1 -1
  194. package/package.json +3 -2
@@ -1,278 +1,278 @@
1
- {
2
- "flowName": "ds-calc-workflow",
3
- "flowDescription": "This decision flow contains three stages. In the first stage, mlr-sim-stage, a dataset is imported and partitioned, then a Linear Regression model is fit to the training partition.. The second stage, scoringStage, uses the fitted model from stage 1 to score a new dataset. The third stage, decisionStage, accepts the newly scored data as an input to a decision table. The two imported datasets are loan_applicants_training.txt and loan_applicant_new.txt. Both can be downloaded by clicking the download icon on the Editor ribbon. To attach both datasets to this model, click Choose Files from the Properties pane, then browse to the location of the downloaded files and click Open. Then POST the model to the RASON server using the Post icon and to solve, click the down arrow next to the play icon and select Solve.",
4
- "modelType": "flow",
5
- "mlrStage": {
6
- "comment": "This is the first stage of the decision flow. In this stage, the data is first imported into the RASON Model, then assigned to the training partition. Afterwards, the model is fit to the data using linear regression.",
7
- "modelName": "mlrModel",
8
- "datasources": {
9
- "comment": "Use this section to import/export data.",
10
- "myTrainSrc": {
11
- "comment": "Imports data from the file, loan_applicants_training.txt.",
12
- "type": "csv",
13
- "connection": "loan_applicants_training.txt",
14
- "direction": "import"
15
- }
16
- },
17
- "datasets": {
18
- "comment": "Use this section to bind a datasource to a dataset.",
19
- "myTrainData": {
20
- "comment": "Binds the datasource, myTrainSrc, to the myTrainData dataset. Score is selected as the output column.",
21
- "binding": "myTrainSrc",
22
- "targetCol": "Score"
23
- }
24
- },
25
- "estimator": {
26
- "comment": "Use this section to dine a estimator(s), including the type, algorithm and parameters, that will be used to fit a model(s).",
27
- "mlrEstimator": {
28
- "comment": "Binds the datasource, myTrainSrc, to the myTrainData dataset. Score is selected as the output column. The option fitIntercept is set to True. To find a full list of options for all supported estimators, see the RASON Reference Guide, downloadable from the Help tab.",
29
- "type": "regression",
30
- "algorithm": "linearRegression",
31
- "parameters": {
32
- "fitIntercept": true
33
- }
34
- }
35
- },
36
- "actions": {
37
- "comment": "Use this section to define the actions, evaluations, and data to be used by the estimator defined above",
38
- "mlrModel": {
39
- "comment": "In this example, the mlrEstimator estimator will be used to fit a model to the data within myTrainData. The fitted model will be saved as fittedModelJSON.",
40
- "trainData": "myTrainData",
41
- "estimator": "mlrEstimator",
42
- "action": "fit",
43
- "evaluations": [ "fittedModelJson" ]
44
- }
45
- }
46
- },
47
- "scoringStage": {
48
- "comment": "The second stage accepts the fitted model, fittedModelJSON, from the 1st stage and uses this model to score new data imported from loan_applicant_new.txt",
49
- "modelName": "scoringModel",
50
- "inputParameters": {
51
- "comment": "The input for this stage is the fitted model from stage 1, fittedModelJSON",
52
- "mlrModel": {
53
- "value": "mlrStage.mlrModel.fittedModelJson"
54
- }
55
- },
56
- "datasources": {
57
- "comment": "The input for this stage is the fitted model from stage 1, fittedModelJSON",
58
- "unlabeledDataSrc": {
59
- "comment": "Imports data from the loan_applicant_new.txt file",
60
- "type": "csv",
61
- "connection": "loan_applicant_new.txt",
62
- "direction": "import"
63
- }
64
- },
65
- "datasets": {
66
- "comment": "Binds data from unlabeledDataSrc datasource to the unlabeledData datasets.",
67
- "unlabeledData": {
68
- "binding": "unlabeledDataSrc"
69
- }
70
- },
71
- "actions": {
72
- "appScore": {
73
- "comment": "Scores the unlabeledData dataset using the mlrModel from stage 1",
74
- "data": "unlabeledData",
75
- "fittedModel": "mlrModel",
76
- "action": "predict",
77
- "evaluations": [ "prediction" ]
78
- }
79
- }
80
- },
81
- "decisionStage": {
82
- "comment": "The third stage accepts the newly scored record from stage 2 and uses this value as an input to a decision table.",
83
- "modelName": "decisionModel",
84
- "inputParameters": {
85
- "appScorePrediction": {
86
- "comment": "This stage accepts the predicted values from the scored data in stage 2.",
87
- "value": "scoringStage.appScore.prediction"
88
- }
89
- },
90
- "decisionTables": {
91
- "tblAppRiskScore": {
92
- "comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student.",
93
- "inputs": [ "cust age", "marital status", "employment status" ],
94
- "outputs": [ "partial score" ],
95
- "refTypes": [ "", "", "", "" ],
96
- "inputValues": [
97
- [ "[18..120]", "s", "unemployed" ],
98
- [ "", "m", "employed" ],
99
- [ "", "", "selfemployed" ],
100
- [ "", "", "student" ]
101
- ],
102
- "rules": [
103
- [ "[18..21]", "-", "-", 32 ],
104
- [ "(21..25]", "-", "-", 35 ],
105
- [ "(25..35]", "-", "-", 40 ],
106
- [ "(35..49]", "-", "-", 43 ],
107
- [ ">49", "-", "-", 48 ],
108
- [ "-", "s", "-", 25 ],
109
- [ "-", "m", "-", 45 ],
110
- [ "-", "-", "unemployed", 15 ],
111
- [ "-", "-", "student", 18 ],
112
- [ "-", "-", "employed", 45 ],
113
- [ "-", "-", "selfemployed", 36 ]
114
- ],
115
- "hitPolicy": "C+"
116
- },
117
- "tblBureauRiskCat": {
118
- "comment": "This decision table accepts 2 inputs, cust Exist (true if customer already has at least 1 more loans) and app Risk Score (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned.",
119
- "inputs": [ "cust exist", "app risk score" ],
120
- "outputs": [ "bureau risk cat" ],
121
- "refTypes": [ "", "", "" ],
122
- "rules": [
123
- [ false, "<100", "high" ],
124
- [ false, "[100..120]", "medium" ],
125
- [ false, "[120..130]", "low" ],
126
- [ false, ">130", "veryLow" ],
127
- [ true, "<80", "decline" ],
128
- [ true, "[80..90]", "high" ],
129
- [ true, "[90..110]", "medium" ],
130
- [ true, ">110", "low" ]
131
- ],
132
- "hitPolicy": "U"
133
- },
134
- "tblBureauCallType": {
135
- "comment": "This decision table accepts 1 input, bureau Risk Cat, which is the output of the tblBureauRiskCat decision table.",
136
- "inputs": [ "bureau risk cat" ],
137
- "outputs": [ "bureau call type" ],
138
- "rules": [
139
- [ "high, medium", "full" ],
140
- [ "low", "mini" ],
141
- [ "veryLow, decline", "none" ]
142
- ],
143
- "hitPolicy": "U"
144
- },
145
- "tblEligibility": {
146
- "comment": "This decision table accepts 3 inputs, bureau Risk Cat (which is the output of the tblAppriskScore decision table), bureau afford (calculated within formulas) and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
147
- "inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
148
- "outputs": [ "eligibility" ],
149
- "refTypes": [ "", "", "", "" ],
150
- "outputValues": [ "ineligible", "eligible" ],
151
- "rules": [
152
- [ "decline", "-", "-", "ineligible" ],
153
- [ "-", false, "-", "ineligible" ],
154
- [ "-", "-", "<18", "ineligible" ],
155
- [ "-", "-", "-", "eligible" ]
156
- ],
157
- "hitPolicy": "P"
158
- },
159
- "tblStrategy": {
160
- "comment": "This decision table accepts 2 inputs, eligibility and bureau Call Type. The strategy will be returned in the result.",
161
- "inputs": [ "eligibility", "bureau call type" ],
162
- "outputs": [ "strategy" ],
163
- "rules": [
164
- [ "ineligible", "-", "decline" ],
165
- [ "eligible", "full, mini", "bureau" ],
166
- [ "eligible", "none", "through" ]
167
- ],
168
- "hitPolicy": "U"
169
- },
170
- "tblCreditContFactor": {
171
- "comment": "This decision table accepts 1 input, bureau Risk Cat, and returns the creditContFactor.",
172
- "inputs": [ "bureau risk cat" ],
173
- "outputs": [ "credit cont factor" ],
174
- "rules": [
175
- [ "high, decline", 0.6 ],
176
- [ "medium", 0.7 ],
177
- [ "low, veryLow", 0.8 ]
178
- ],
179
- "hitPolicy": "U"
180
- }
181
- },
182
- "data": {
183
- "comment": "Use this section to organize your constant model data.",
184
- "customerAge": {
185
- "comment": "customer's age",
186
- "value": 40
187
- },
188
- "maritalStatus": {
189
- "comment": "customer's marital status",
190
- "value": "s"
191
- },
192
- "employmentStatus": {
193
- "comment": "customer's age",
194
- "value": "s"
195
- },
196
- "customerExists": {
197
- "comment": "True if the customer has already taken a loan with the bank, false otherwise.",
198
- "value": false
199
- },
200
- "monthlyIncome": {
201
- "comment": "applicant's monthly income",
202
- "value": 2500
203
- },
204
- "loanRate": {
205
- "comment": "prospective loan interest rate",
206
- "value": 5
207
- },
208
- "loanTerm": {
209
- "comment": "prospective loan term, in months",
210
- "value": 30
211
- },
212
- "loanAmount": {
213
- "comment": "prospective loan amount",
214
- "value": 100000
215
- },
216
- "monthlyExpenses": {
217
- "comment": "applicant's monthly expenses",
218
- "value": 1000
219
- },
220
- "loanType": {
221
- "comment": "prospective loan type",
222
- "value": "standard"
223
- }
224
- },
225
- "formulas": {
226
- "appRiskScore": {
227
- "comment": "Calls the tblAppRiskScore decision table",
228
- "formula": "MIN(appScorePrediction, tblAppRiskScore(, , customerAge, maritalStatus, EmploymentStatus))",
229
- "finalValue": []
230
- },
231
- "bureauRiskCat": {
232
- "comment": "Calls the tblBureauRiskCat decision table",
233
- "formula": "tblBureauRiskCat(, , customerExists, appRiskScore)",
234
- "finalValue": []
235
- },
236
- "bureauCallType": {
237
- "comment": "Calls the tblBureauCallType decision table",
238
- "formula": "tblBureauCallType(, , bureauRiskCat)",
239
- "finalValue": []
240
- },
241
- "monthlyRepay": {
242
- "comment": "Calculates the monthly payment",
243
- "formula": "-PMT(loanRate%/12, loanTerm*12, loanAmount)"
244
- },
245
- "disposableIncome": {
246
- "comment": "Calculates the applicant's disposable income",
247
- "formula": "monthlyIncome - (monthlyRepay + monthlyExpenses)"
248
- },
249
- "monthlyFee": {
250
- "comment": "Calculates a fee that will be applied to the loan payment depending on the loan type.",
251
- "formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))"
252
- },
253
- "monthlyInstall": {
254
- "comment": "Calculates the total monthly payment.",
255
- "formula": "monthlyRepay + monthlyFee"
256
- },
257
- "bureauAfford": {
258
- "comment": "Calls the tblCreditContFactor decision table",
259
- "formula": "IF(disposableIncome * tblCreditContFactor(,,bureauRiskCat) > monthlyInstall, true, false)"
260
- },
261
- "eligibility": {
262
- "comment": "Calls the tblEligibility decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
263
- "formula": "tblEligibility(, , bureauRiskCat, bureauAfford, customerAge)",
264
- "finalValue": []
265
- },
266
- "strategy": {
267
- "comment": "Calls the tblStrategy decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
268
- "formula": "tblStrategy(, , eligibility, bureauCallType)",
269
- "finalValue": []
270
- },
271
- "creditContFactor": {
272
- "comment": "Calls the tblCreditContFactor decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
273
- "formula": "tblCreditContFactor(, , bureauRiskCat)",
274
- "finalValue": []
275
- }
276
- }
277
- }
1
+ {
2
+ "flowName": "ds-calc-workflow",
3
+ "flowDescription": "This decision flow contains three stages. In the first stage, mlr-sim-stage, a dataset is imported and partitioned, then a Linear Regression model is fit to the training partition.. The second stage, scoringStage, uses the fitted model from stage 1 to score a new dataset. The third stage, decisionStage, accepts the newly scored data as an input to a decision table. The two imported datasets are loan_applicants_training.txt and loan_applicant_new.txt. Both can be downloaded by clicking the download icon on the Editor ribbon. To attach both datasets to this model, click Choose Files from the Properties pane, then browse to the location of the downloaded files and click Open. Then POST the model to the RASON server using the Post icon and to solve, click the down arrow next to the play icon and select Solve.",
4
+ "modelType": "flow",
5
+ "mlrStage": {
6
+ "comment": "This is the first stage of the decision flow. In this stage, the data is first imported into the RASON Model, then assigned to the training partition. Afterwards, the model is fit to the data using linear regression.",
7
+ "modelName": "mlrModel",
8
+ "datasources": {
9
+ "comment": "Use this section to import/export data.",
10
+ "myTrainSrc": {
11
+ "comment": "Imports data from the file, loan_applicants_training.txt.",
12
+ "type": "csv",
13
+ "connection": "loan_applicants_training.txt",
14
+ "direction": "import"
15
+ }
16
+ },
17
+ "datasets": {
18
+ "comment": "Use this section to bind a datasource to a dataset.",
19
+ "myTrainData": {
20
+ "comment": "Binds the datasource, myTrainSrc, to the myTrainData dataset. Score is selected as the output column.",
21
+ "binding": "myTrainSrc",
22
+ "targetCol": "Score"
23
+ }
24
+ },
25
+ "estimator": {
26
+ "comment": "Use this section to dine a estimator(s), including the type, algorithm and parameters, that will be used to fit a model(s).",
27
+ "mlrEstimator": {
28
+ "comment": "Binds the datasource, myTrainSrc, to the myTrainData dataset. Score is selected as the output column. The option fitIntercept is set to True. To find a full list of options for all supported estimators, see the RASON Reference Guide, downloadable from the Help tab.",
29
+ "type": "regression",
30
+ "algorithm": "linearRegression",
31
+ "parameters": {
32
+ "fitIntercept": true
33
+ }
34
+ }
35
+ },
36
+ "actions": {
37
+ "comment": "Use this section to define the actions, evaluations, and data to be used by the estimator defined above",
38
+ "mlrModel": {
39
+ "comment": "In this example, the mlrEstimator estimator will be used to fit a model to the data within myTrainData. The fitted model will be saved as fittedModelJSON.",
40
+ "trainData": "myTrainData",
41
+ "estimator": "mlrEstimator",
42
+ "action": "fit",
43
+ "evaluations": [ "fittedModelJson" ]
44
+ }
45
+ }
46
+ },
47
+ "scoringStage": {
48
+ "comment": "The second stage accepts the fitted model, fittedModelJSON, from the 1st stage and uses this model to score new data imported from loan_applicant_new.txt",
49
+ "modelName": "scoringModel",
50
+ "inputParameters": {
51
+ "comment": "The input for this stage is the fitted model from stage 1, fittedModelJSON",
52
+ "mlrModel": {
53
+ "value": "mlrStage.mlrModel.fittedModelJson"
54
+ }
55
+ },
56
+ "datasources": {
57
+ "comment": "The input for this stage is the fitted model from stage 1, fittedModelJSON",
58
+ "unlabeledDataSrc": {
59
+ "comment": "Imports data from the loan_applicant_new.txt file",
60
+ "type": "csv",
61
+ "connection": "loan_applicant_new.txt",
62
+ "direction": "import"
63
+ }
64
+ },
65
+ "datasets": {
66
+ "comment": "Binds data from unlabeledDataSrc datasource to the unlabeledData datasets.",
67
+ "unlabeledData": {
68
+ "binding": "unlabeledDataSrc"
69
+ }
70
+ },
71
+ "actions": {
72
+ "appScore": {
73
+ "comment": "Scores the unlabeledData dataset using the mlrModel from stage 1",
74
+ "data": "unlabeledData",
75
+ "fittedModel": "mlrModel",
76
+ "action": "predict",
77
+ "evaluations": [ "prediction" ]
78
+ }
79
+ }
80
+ },
81
+ "decisionStage": {
82
+ "comment": "The third stage accepts the newly scored record from stage 2 and uses this value as an input to a decision table.",
83
+ "modelName": "decisionModel",
84
+ "inputParameters": {
85
+ "appScorePrediction": {
86
+ "comment": "This stage accepts the predicted values from the scored data in stage 2.",
87
+ "value": "scoringStage.appScore.prediction"
88
+ }
89
+ },
90
+ "decisionTables": {
91
+ "tblAppRiskScore": {
92
+ "comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student.",
93
+ "inputs": [ "cust age", "marital status", "employment status" ],
94
+ "outputs": [ "partial score" ],
95
+ "refTypes": [ "", "", "", "" ],
96
+ "inputValues": [
97
+ [ "[18..120]", "s", "unemployed" ],
98
+ [ "", "m", "employed" ],
99
+ [ "", "", "selfemployed" ],
100
+ [ "", "", "student" ]
101
+ ],
102
+ "rules": [
103
+ [ "[18..21]", "-", "-", 32 ],
104
+ [ "(21..25]", "-", "-", 35 ],
105
+ [ "(25..35]", "-", "-", 40 ],
106
+ [ "(35..49]", "-", "-", 43 ],
107
+ [ ">49", "-", "-", 48 ],
108
+ [ "-", "s", "-", 25 ],
109
+ [ "-", "m", "-", 45 ],
110
+ [ "-", "-", "unemployed", 15 ],
111
+ [ "-", "-", "student", 18 ],
112
+ [ "-", "-", "employed", 45 ],
113
+ [ "-", "-", "selfemployed", 36 ]
114
+ ],
115
+ "hitPolicy": "C+"
116
+ },
117
+ "tblBureauRiskCat": {
118
+ "comment": "This decision table accepts 2 inputs, cust Exist (true if customer already has at least 1 more loans) and app Risk Score (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned.",
119
+ "inputs": [ "cust exist", "app risk score" ],
120
+ "outputs": [ "bureau risk cat" ],
121
+ "refTypes": [ "", "", "" ],
122
+ "rules": [
123
+ [ false, "<100", "high" ],
124
+ [ false, "[100..120]", "medium" ],
125
+ [ false, "[120..130]", "low" ],
126
+ [ false, ">130", "veryLow" ],
127
+ [ true, "<80", "decline" ],
128
+ [ true, "[80..90]", "high" ],
129
+ [ true, "[90..110]", "medium" ],
130
+ [ true, ">110", "low" ]
131
+ ],
132
+ "hitPolicy": "U"
133
+ },
134
+ "tblBureauCallType": {
135
+ "comment": "This decision table accepts 1 input, bureau Risk Cat, which is the output of the tblBureauRiskCat decision table.",
136
+ "inputs": [ "bureau risk cat" ],
137
+ "outputs": [ "bureau call type" ],
138
+ "rules": [
139
+ [ "high, medium", "full" ],
140
+ [ "low", "mini" ],
141
+ [ "veryLow, decline", "none" ]
142
+ ],
143
+ "hitPolicy": "U"
144
+ },
145
+ "tblEligibility": {
146
+ "comment": "This decision table accepts 3 inputs, bureau Risk Cat (which is the output of the tblAppriskScore decision table), bureau afford (calculated within formulas) and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
147
+ "inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
148
+ "outputs": [ "eligibility" ],
149
+ "refTypes": [ "", "", "", "" ],
150
+ "outputValues": [ "ineligible", "eligible" ],
151
+ "rules": [
152
+ [ "decline", "-", "-", "ineligible" ],
153
+ [ "-", false, "-", "ineligible" ],
154
+ [ "-", "-", "<18", "ineligible" ],
155
+ [ "-", "-", "-", "eligible" ]
156
+ ],
157
+ "hitPolicy": "P"
158
+ },
159
+ "tblStrategy": {
160
+ "comment": "This decision table accepts 2 inputs, eligibility and bureau Call Type. The strategy will be returned in the result.",
161
+ "inputs": [ "eligibility", "bureau call type" ],
162
+ "outputs": [ "strategy" ],
163
+ "rules": [
164
+ [ "ineligible", "-", "decline" ],
165
+ [ "eligible", "full, mini", "bureau" ],
166
+ [ "eligible", "none", "through" ]
167
+ ],
168
+ "hitPolicy": "U"
169
+ },
170
+ "tblCreditContFactor": {
171
+ "comment": "This decision table accepts 1 input, bureau Risk Cat, and returns the creditContFactor.",
172
+ "inputs": [ "bureau risk cat" ],
173
+ "outputs": [ "credit cont factor" ],
174
+ "rules": [
175
+ [ "high, decline", 0.6 ],
176
+ [ "medium", 0.7 ],
177
+ [ "low, veryLow", 0.8 ]
178
+ ],
179
+ "hitPolicy": "U"
180
+ }
181
+ },
182
+ "data": {
183
+ "comment": "Use this section to organize your constant model data.",
184
+ "customerAge": {
185
+ "comment": "customer's age",
186
+ "value": 40
187
+ },
188
+ "maritalStatus": {
189
+ "comment": "customer's marital status",
190
+ "value": "s"
191
+ },
192
+ "employmentStatus": {
193
+ "comment": "customer's age",
194
+ "value": "s"
195
+ },
196
+ "customerExists": {
197
+ "comment": "True if the customer has already taken a loan with the bank, false otherwise.",
198
+ "value": false
199
+ },
200
+ "monthlyIncome": {
201
+ "comment": "applicant's monthly income",
202
+ "value": 2500
203
+ },
204
+ "loanRate": {
205
+ "comment": "prospective loan interest rate",
206
+ "value": 5
207
+ },
208
+ "loanTerm": {
209
+ "comment": "prospective loan term, in months",
210
+ "value": 30
211
+ },
212
+ "loanAmount": {
213
+ "comment": "prospective loan amount",
214
+ "value": 100000
215
+ },
216
+ "monthlyExpenses": {
217
+ "comment": "applicant's monthly expenses",
218
+ "value": 1000
219
+ },
220
+ "loanType": {
221
+ "comment": "prospective loan type",
222
+ "value": "standard"
223
+ }
224
+ },
225
+ "formulas": {
226
+ "appRiskScore": {
227
+ "comment": "Calls the tblAppRiskScore decision table",
228
+ "formula": "MIN(appScorePrediction, tblAppRiskScore(, , customerAge, maritalStatus, EmploymentStatus))",
229
+ "finalValue": []
230
+ },
231
+ "bureauRiskCat": {
232
+ "comment": "Calls the tblBureauRiskCat decision table",
233
+ "formula": "tblBureauRiskCat(, , customerExists, appRiskScore)",
234
+ "finalValue": []
235
+ },
236
+ "bureauCallType": {
237
+ "comment": "Calls the tblBureauCallType decision table",
238
+ "formula": "tblBureauCallType(, , bureauRiskCat)",
239
+ "finalValue": []
240
+ },
241
+ "monthlyRepay": {
242
+ "comment": "Calculates the monthly payment",
243
+ "formula": "-PMT(loanRate%/12, loanTerm*12, loanAmount)"
244
+ },
245
+ "disposableIncome": {
246
+ "comment": "Calculates the applicant's disposable income",
247
+ "formula": "monthlyIncome - (monthlyRepay + monthlyExpenses)"
248
+ },
249
+ "monthlyFee": {
250
+ "comment": "Calculates a fee that will be applied to the loan payment depending on the loan type.",
251
+ "formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))"
252
+ },
253
+ "monthlyInstall": {
254
+ "comment": "Calculates the total monthly payment.",
255
+ "formula": "monthlyRepay + monthlyFee"
256
+ },
257
+ "bureauAfford": {
258
+ "comment": "Calls the tblCreditContFactor decision table",
259
+ "formula": "IF(disposableIncome * tblCreditContFactor(,,bureauRiskCat) > monthlyInstall, true, false)"
260
+ },
261
+ "eligibility": {
262
+ "comment": "Calls the tblEligibility decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
263
+ "formula": "tblEligibility(, , bureauRiskCat, bureauAfford, customerAge)",
264
+ "finalValue": []
265
+ },
266
+ "strategy": {
267
+ "comment": "Calls the tblStrategy decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
268
+ "formula": "tblStrategy(, , eligibility, bureauCallType)",
269
+ "finalValue": []
270
+ },
271
+ "creditContFactor": {
272
+ "comment": "Calls the tblCreditContFactor decision table. The finalValue of this function will be returned in the results due to the proprety, finalValue.",
273
+ "formula": "tblCreditContFactor(, , bureauRiskCat)",
274
+ "finalValue": []
275
+ }
276
+ }
277
+ }
278
278
  }