@frontlinesystems/rason-mcp-server 2026.5.1 → 2026.5.2
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.
- package/LICENSE +35 -35
- package/examples/EXAMPLES_REFERENCE.md +128 -128
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic.json +111 -111
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic2.json +108 -108
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic3.json +111 -111
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic4.json +99 -99
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic5.json +101 -101
- package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv.json +81 -81
- package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv4.json +96 -96
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel.json +73 -73
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel1.json +86 -86
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel11.json +108 -108
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel2.json +77 -77
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab.json +89 -89
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab1.json +73 -73
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab2.json +77 -77
- package/examples/{optimization → Optimization}/Linear/Inventory.json +199 -199
- package/examples/{optimization → Optimization}/Linear/Matop.json +119 -119
- package/examples/{optimization → Optimization}/Linear/ProductMix.json +97 -97
- package/examples/{optimization → Optimization}/Linear/ProductMix2.json +72 -72
- package/examples/{optimization → Optimization}/Linear/ProductMix3.json +49 -49
- package/examples/{optimization → Optimization}/Linear/ProductMix4.json +56 -56
- package/examples/{optimization → Optimization}/Linear/ProductMixCsv1.json +106 -106
- package/examples/{optimization → Optimization}/Linear/ProductMixCsv2.json +106 -106
- package/examples/{optimization → Optimization}/Linear/ProductMixSQL11.json +82 -82
- package/examples/{optimization → Optimization}/Linear/Rowop.json +126 -126
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub.json +63 -63
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub2.json +47 -47
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub3.json +47 -47
- package/examples/{optimization → Optimization}/NonSmooth/Inventory2.json +159 -159
- package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt.json +55 -55
- package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt2.json +65 -65
- package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyChance.json +78 -78
- package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect.json +77 -77
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect2.json +81 -81
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect3.json +84 -84
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect4.json +74 -74
- package/examples/{simulation → Simulation}/CandyStoreSalesUsingSIP.json +147 -147
- package/examples/{simulation → Simulation}/CollegeFundGrowth1.json +423 -423
- package/examples/{simulation → Simulation}/CollegeFundGrowth1SIPModel.json +27 -27
- package/examples/{simulation → Simulation}/CollegeFundGrowth2.json +415 -415
- package/examples/{simulation → Simulation}/CollegeFundGrowthSIP.json +401 -401
- package/examples/{simulation → Simulation}/GBMSimulationModel.json +236 -236
- package/examples/{simulation → Simulation}/YieldManagement(Sim).json +69 -69
- package/examples/{simulation → Simulation}/YieldManagement2(Sim).json +72 -72
- package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
- package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
- package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
- package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
- package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
- package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
- package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
- package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
- package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
- package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
- package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
- package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
- package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
- package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
- package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
- package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
- package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
- package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
- package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
- package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
- package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
- package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
- package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
- package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
- package/examples/datamining/Classification/DecisionTree.json +90 -90
- package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
- package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
- package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
- package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
- package/examples/datamining/Classification/FindBestModel.json +86 -86
- package/examples/datamining/Classification/LogisticRegression.json +82 -82
- package/examples/datamining/Classification/NaiveBayes.json +78 -78
- package/examples/datamining/Classification/NearestNeighbors.json +84 -84
- package/examples/datamining/Classification/NeuralNetwork.json +92 -92
- package/examples/datamining/Clustering/Hierarchical.json +54 -54
- package/examples/datamining/Clustering/KMeans.json +71 -71
- package/examples/datamining/DataSources/DelimitedFile.json +49 -49
- package/examples/datamining/DataSources/JSONFile.json +49 -49
- package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
- package/examples/datamining/DataSources/MSExcelTable.json +50 -50
- package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
- package/examples/datamining/DataSources/ODATATable.json +49 -49
- package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
- package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
- package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
- package/examples/datamining/FeatureSelection/Univariate.json +78 -78
- package/examples/datamining/Regression/DecisionTree.json +82 -82
- package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
- package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
- package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
- package/examples/datamining/Regression/FindBestModel.json +86 -86
- package/examples/datamining/Regression/LinearRegression.json +124 -124
- package/examples/datamining/Regression/NearestNeighbors.json +77 -77
- package/examples/datamining/Regression/NeuralNetwork.json +82 -82
- package/examples/datamining/Scoring/JSONClassifier.json +62 -62
- package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
- package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
- package/examples/datamining/Scoring/JSONForecaster.json +49 -49
- package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
- package/examples/datamining/Scoring/JSONPCA.json +41 -41
- package/examples/datamining/Scoring/JSONRegressor.json +56 -56
- package/examples/datamining/Scoring/JSONTransformer.json +38 -38
- package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
- package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
- package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
- package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
- package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
- package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
- package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
- package/examples/datamining/Summarizer/Summarization.json +54 -54
- package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
- package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
- package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
- package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
- package/examples/datamining/TimeSeries/Arima.json +74 -74
- package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
- package/examples/datamining/TimeSeries/Exponential.json +64 -64
- package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
- package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
- package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
- package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
- package/examples/datamining/Transformation/Binning.json +69 -69
- package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
- package/examples/datamining/Transformation/CategoryReduction.json +51 -51
- package/examples/datamining/Transformation/Factorization.json +50 -50
- package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
- package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
- package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
- package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
- package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
- package/examples/datamining/Transformation/Partitioning.json +46 -46
- package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
- package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
- package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
- package/examples/datamining/Transformation/Rescaling.json +67 -67
- package/examples/datamining/Transformation/Sampling.json +43 -43
- package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
- package/examples/flow/SQLServerTransform.json +260 -260
- package/examples/flow/dm-calc-pipeline.json +277 -277
- package/examples/flow/dm-pipeline-simulation.json +113 -113
- package/examples/flow/opt-sim-pipeline.json +159 -159
- package/examples/flow/sim-dm-pipeline.json +106 -106
- package/examples/flow/sim-sim-pipeline.json +136 -136
- package/examples/index.json +4678 -4678
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
- package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
- package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
- package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
- package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
- package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
- package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
- package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
- package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
- package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
- package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
- package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
- package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
- package/examples/rason-features/UserGuide/UGForecast.json +50 -50
- package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
- package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
- package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
- package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
- package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
- package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
- package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
- package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
- package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
- package/out/index.cjs +1 -1
- package/package.json +3 -2
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modelName": "UGYieldManagement3Example",
|
|
3
|
-
"modelDescription": "RASON Simulation Optimization Model: Running multiple parameterized simulations in UGYieldManagement2, and examining the results has given us a good deal of information about the behavior of this simulation model. However, if we take just a few more steps we can answer the question, 'How many tickets should we sell to realize the maximum expected net revenue?' By changing 'sold' from a simulation parameter to a decision variable, we can setup a simulation optimization model. See the Defining Your Stochastic Optimization chapter within the RASON User Guide for a complete discussion of this example and also the previous examples UGYieldManagement 1 and 2.",
|
|
4
|
-
"comment": "Change the modelType property to 'optimization'. If left at 'modelType':'simulation' as in UGYieldManagement 1 and 2, only a simulation will be performed, not a simulation optimization.",
|
|
5
|
-
"modelType": "optimization",
|
|
6
|
-
"modelSettings": {
|
|
7
|
-
"comment": "Replace numSimulations: 41 with simulationOptimization: True in modelSettings. Setting simulationOptimization to true will run a simulation optimization. The evolutionary engine must be selected in engineSettings below.",
|
|
8
|
-
"simulationOptimization": true,
|
|
9
|
-
"numTrials": 1000
|
|
10
|
-
},
|
|
11
|
-
"engineSettings": {
|
|
12
|
-
"comment": "In order to run a simulation optimization, you must set the engine to 'Evolutionary'. The random seed option is set to provide reproducible results.",
|
|
13
|
-
"engine": "Evolutionary",
|
|
14
|
-
"randomSeed": 1
|
|
15
|
-
},
|
|
16
|
-
"variables": {
|
|
17
|
-
"comment": "Replace parameters with variables and define sold as an integer variable (since we can't sell fractional tickets) with a lower bound of 0 (since we can't sell a negative number of tickets). We are interested in the value of this variable in the solution, so we must ask for the finalValue to be returned in the Result.",
|
|
18
|
-
"sold": {
|
|
19
|
-
"lower": 0,
|
|
20
|
-
"upper": 500,
|
|
21
|
-
"type": "integer",
|
|
22
|
-
"finalValue": []
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
"data": {
|
|
26
|
-
"comment": "The data section remains unchanged from UGYieldManagement 2.",
|
|
27
|
-
"price": {
|
|
28
|
-
"value": 200
|
|
29
|
-
},
|
|
30
|
-
"capacity": {
|
|
31
|
-
"value": 100
|
|
32
|
-
},
|
|
33
|
-
"refund_no_shows": {
|
|
34
|
-
"value": 0.5
|
|
35
|
-
},
|
|
36
|
-
"refund_overbook": {
|
|
37
|
-
"value": 1.25
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"uncertainVariables": {
|
|
41
|
-
"comment": "The uncertainVariables section remains unchanged from UGYieldManagement 2.",
|
|
42
|
-
"no_shows": {
|
|
43
|
-
"formula": "PsiLogNormal(0.1*sold, 0.06*sold)"
|
|
44
|
-
}
|
|
45
|
-
},
|
|
46
|
-
"formulas": {
|
|
47
|
-
"comment": "The formulas section remains unchanged from UGYieldManagement 2.",
|
|
48
|
-
"show_ups": {
|
|
49
|
-
"formula": "sold - Round(no_shows, 0)"
|
|
50
|
-
},
|
|
51
|
-
"overbook": {
|
|
52
|
-
"formula": "Max(0, show_ups - capacity)"
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
"objective": {
|
|
56
|
-
"comment": "The objective section remains unchanged from UGYieldManagement 2.",
|
|
57
|
-
"revenue": {
|
|
58
|
-
"formula": "price*(sold - refund_no_shows*Round(no_shows, 0) - refund_overbook*overbook)",
|
|
59
|
-
"chanceType": "ExpVal",
|
|
60
|
-
"type": "maximize",
|
|
61
|
-
"finalValue": []
|
|
62
|
-
}
|
|
63
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"modelName": "UGYieldManagement3Example",
|
|
3
|
+
"modelDescription": "RASON Simulation Optimization Model: Running multiple parameterized simulations in UGYieldManagement2, and examining the results has given us a good deal of information about the behavior of this simulation model. However, if we take just a few more steps we can answer the question, 'How many tickets should we sell to realize the maximum expected net revenue?' By changing 'sold' from a simulation parameter to a decision variable, we can setup a simulation optimization model. See the Defining Your Stochastic Optimization chapter within the RASON User Guide for a complete discussion of this example and also the previous examples UGYieldManagement 1 and 2.",
|
|
4
|
+
"comment": "Change the modelType property to 'optimization'. If left at 'modelType':'simulation' as in UGYieldManagement 1 and 2, only a simulation will be performed, not a simulation optimization.",
|
|
5
|
+
"modelType": "optimization",
|
|
6
|
+
"modelSettings": {
|
|
7
|
+
"comment": "Replace numSimulations: 41 with simulationOptimization: True in modelSettings. Setting simulationOptimization to true will run a simulation optimization. The evolutionary engine must be selected in engineSettings below.",
|
|
8
|
+
"simulationOptimization": true,
|
|
9
|
+
"numTrials": 1000
|
|
10
|
+
},
|
|
11
|
+
"engineSettings": {
|
|
12
|
+
"comment": "In order to run a simulation optimization, you must set the engine to 'Evolutionary'. The random seed option is set to provide reproducible results.",
|
|
13
|
+
"engine": "Evolutionary",
|
|
14
|
+
"randomSeed": 1
|
|
15
|
+
},
|
|
16
|
+
"variables": {
|
|
17
|
+
"comment": "Replace parameters with variables and define sold as an integer variable (since we can't sell fractional tickets) with a lower bound of 0 (since we can't sell a negative number of tickets). We are interested in the value of this variable in the solution, so we must ask for the finalValue to be returned in the Result.",
|
|
18
|
+
"sold": {
|
|
19
|
+
"lower": 0,
|
|
20
|
+
"upper": 500,
|
|
21
|
+
"type": "integer",
|
|
22
|
+
"finalValue": []
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"data": {
|
|
26
|
+
"comment": "The data section remains unchanged from UGYieldManagement 2.",
|
|
27
|
+
"price": {
|
|
28
|
+
"value": 200
|
|
29
|
+
},
|
|
30
|
+
"capacity": {
|
|
31
|
+
"value": 100
|
|
32
|
+
},
|
|
33
|
+
"refund_no_shows": {
|
|
34
|
+
"value": 0.5
|
|
35
|
+
},
|
|
36
|
+
"refund_overbook": {
|
|
37
|
+
"value": 1.25
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"uncertainVariables": {
|
|
41
|
+
"comment": "The uncertainVariables section remains unchanged from UGYieldManagement 2.",
|
|
42
|
+
"no_shows": {
|
|
43
|
+
"formula": "PsiLogNormal(0.1*sold, 0.06*sold)"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"formulas": {
|
|
47
|
+
"comment": "The formulas section remains unchanged from UGYieldManagement 2.",
|
|
48
|
+
"show_ups": {
|
|
49
|
+
"formula": "sold - Round(no_shows, 0)"
|
|
50
|
+
},
|
|
51
|
+
"overbook": {
|
|
52
|
+
"formula": "Max(0, show_ups - capacity)"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"objective": {
|
|
56
|
+
"comment": "The objective section remains unchanged from UGYieldManagement 2.",
|
|
57
|
+
"revenue": {
|
|
58
|
+
"formula": "price*(sold - refund_no_shows*Round(no_shows, 0) - refund_overbook*overbook)",
|
|
59
|
+
"chanceType": "ExpVal",
|
|
60
|
+
"type": "maximize",
|
|
61
|
+
"finalValue": []
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
64
|
}
|
package/out/index.cjs
CHANGED
|
@@ -309,7 +309,7 @@ Data flow:`);for(let a of o)t.push(` ${a}`)}return{lines:t,observations:r}}func
|
|
|
309
309
|
### Structure`),t.push(...a.lines),a.observations.length>0){t.push(`
|
|
310
310
|
### Observations`);for(let x of a.observations)t.push(`- ${x}`)}let s=new Set(["modelName","modelDescription","modelType","modelSettings","comment","variables","constraints","objective","uncertainVariables","uncertainFunctions","formulas","data","datasources","datasets","estimator","transformer","fittedModel","weakLearner","preProcessor","actions","decisionTables","boxFunctions","boxIterators","typeDefs","flowName","workflowName","flowDescription","workflowDescription","engineSettings","indexSets","parameters","evaluations","contexts"]),l=Object.keys(e).filter(x=>{if(s.has(x))return!1;let S=e[x];return!(S&&typeof S=="object"&&!Array.isArray(S)&&"modelName"in S)}),d=[],p=Ke(e.engineSettings);p&&d.push(`engineSettings (${p})`);let f=Ke(e.indexSets);f&&d.push(`indexSets (${f})`);let g=Ke(e.parameters);g&&d.push(`parameters (${g})`);let y=Ke(e.evaluations);y&&d.push(`evaluations (${y})`);let v=Ke(e.contexts);return v&&d.push(`contexts (${v})`),(d.length>0||l.length>0)&&(t.push(`
|
|
311
311
|
### Other sections`),d.length>0&&t.push(d.join(" | ")),l.length>0&&t.push(`Unrecognized: ${l.join(", ")}`)),t.join(`
|
|
312
|
-
`)}function OR(e){e.registerTool("describe_model",{title:"Analyze RASON Model",description:"Analyze and classify a RASON model: reliably detect model type and subtype (optimization \u2014 LP, QP, MIP, stochastic, chance-constrained; simulation; datamining \u2014 classification, regression, clustering; calculation \u2014 decision tables, box functions; multi-stage flow), inventory and classify components (variable types, constraint types, distribution families, ML pipelines, inter-stage data flow), and identify issues (missing result requests, absent validation data, empty output sections). Provides deterministic RASON-specific analysis beyond what raw JSON inspection reveals. Call whenever the user asks about, discusses, or works with a RASON model \u2014 whether open in the editor, referenced as a file, provided inline, or stored on the RASON server.",annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:I.object({model:I.record(I.string(),I.unknown()).optional().describe("The RASON model as a JSON object. Mutually exclusive with rason_model_path and name_or_id."),rason_model_path:I.string().optional().describe("Path to a file containing a RASON model. Mutually exclusive with model and name_or_id."),name_or_id:I.string().optional().describe("Name or ID of an existing model on the RASON account. The model will be fetched and analyzed. Mutually exclusive with model and rason_model_path.")})},async t=>{let{model:r,rason_model_path:i,name_or_id:n}=t,o=[r,i,n].filter(l=>l!==void 0).length;if(o===0)throw new Error("Must provide one of: model, rason_model_path, or name_or_id.");if(o>1)throw new Error("Provide only one of: model, rason_model_path, or name_or_id.");let a;if(r)a=r;else if(i){let l=await sn(i);try{a=JSON.parse(l)}catch(d){throw new Error(`Failed to parse JSON from ${i}: ${d instanceof SyntaxError?d.message:"unknown error"}. The file may contain syntax errors or incomplete JSON. Read the file directly to inspect and fix the content.`)}}else{let d=(await tt("GET",`/model/${encodeURIComponent(n)}`)).content[0].text;try{a=JSON.parse(d)}catch(p){throw new Error(`Failed to parse model response for "${n}": ${p instanceof SyntaxError?p.message:"unknown error"}. Use get_model to retrieve the raw content and inspect it directly.`)}}return{content:[{type:"text",text:tF(a)}]}})}var NR=process.env.RASON_EXAMPLES_DIR||AR.default.resolve(__dirname,"../examples"),Bi=new qm({name:"rason-mcp-server",version:"2026.5.
|
|
312
|
+
`)}function OR(e){e.registerTool("describe_model",{title:"Analyze RASON Model",description:"Analyze and classify a RASON model: reliably detect model type and subtype (optimization \u2014 LP, QP, MIP, stochastic, chance-constrained; simulation; datamining \u2014 classification, regression, clustering; calculation \u2014 decision tables, box functions; multi-stage flow), inventory and classify components (variable types, constraint types, distribution families, ML pipelines, inter-stage data flow), and identify issues (missing result requests, absent validation data, empty output sections). Provides deterministic RASON-specific analysis beyond what raw JSON inspection reveals. Call whenever the user asks about, discusses, or works with a RASON model \u2014 whether open in the editor, referenced as a file, provided inline, or stored on the RASON server.",annotations:{readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:I.object({model:I.record(I.string(),I.unknown()).optional().describe("The RASON model as a JSON object. Mutually exclusive with rason_model_path and name_or_id."),rason_model_path:I.string().optional().describe("Path to a file containing a RASON model. Mutually exclusive with model and name_or_id."),name_or_id:I.string().optional().describe("Name or ID of an existing model on the RASON account. The model will be fetched and analyzed. Mutually exclusive with model and rason_model_path.")})},async t=>{let{model:r,rason_model_path:i,name_or_id:n}=t,o=[r,i,n].filter(l=>l!==void 0).length;if(o===0)throw new Error("Must provide one of: model, rason_model_path, or name_or_id.");if(o>1)throw new Error("Provide only one of: model, rason_model_path, or name_or_id.");let a;if(r)a=r;else if(i){let l=await sn(i);try{a=JSON.parse(l)}catch(d){throw new Error(`Failed to parse JSON from ${i}: ${d instanceof SyntaxError?d.message:"unknown error"}. The file may contain syntax errors or incomplete JSON. Read the file directly to inspect and fix the content.`)}}else{let d=(await tt("GET",`/model/${encodeURIComponent(n)}`)).content[0].text;try{a=JSON.parse(d)}catch(p){throw new Error(`Failed to parse model response for "${n}": ${p instanceof SyntaxError?p.message:"unknown error"}. Use get_model to retrieve the raw content and inspect it directly.`)}}return{content:[{type:"text",text:tF(a)}]}})}var NR=process.env.RASON_EXAMPLES_DIR||AR.default.resolve(__dirname,"../examples"),Bi=new qm({name:"rason-mcp-server",version:"2026.5.2"},{instructions:`This MCP server connects to Frontline Systems' RASON REST API (endpoint: https://rason.net, web app: https://rason.com). RASON (RESTful Analytic Solver Object Notation) is a JSON-based modeling language created by Frontline Systems, Inc. (https://www.solver.com), the creator of the Excel Solver, for defining and solving analytical models via a REST API.
|
|
313
313
|
|
|
314
314
|
RASON model types:
|
|
315
315
|
- Optimization \u2014 linear, mixed-integer, nonlinear, conic, quadratic, stochastic; powered by Gurobi, XPRESS, MOSEK, KNITRO engines
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontlinesystems/rason-mcp-server",
|
|
3
|
-
"version": "2026.5.
|
|
4
|
-
"
|
|
3
|
+
"version": "2026.5.2",
|
|
4
|
+
"mcpName": "io.github.frontlinesystems/rason-mcp-server",
|
|
5
|
+
"description": "Build, solve, and analyze RASON optimization, simulation, data science, and decision models",
|
|
5
6
|
"author": "Frontline Systems (https://www.solver.com)",
|
|
6
7
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
8
|
"repository": {
|