#2 -- Add inference dtos #22

Merged
romanov73 merged 7 commits from 2-execute-rules into master 2025-03-03 22:28:52 +04:00
3 changed files with 17 additions and 15 deletions
Showing only changes of commit 76ece94028 - Show all commits

View File

@ -25,7 +25,7 @@ public class InferenceRestController {
return fuzzyInferenceService.getFuzzyInference(inferenceData.getRules(), return fuzzyInferenceService.getFuzzyInference(inferenceData.getRules(),
inferenceData.getValues(), inferenceData.getValues(),
inferenceData.getInputVariables(), inferenceData.getInputVariables(),
inferenceData.getOutputVariable()); inferenceData.getOutputVariables());
} }
@RequestMapping(value = "getProjectInference", method = RequestMethod.POST) @RequestMapping(value = "getProjectInference", method = RequestMethod.POST)

View File

@ -7,7 +7,7 @@ public class InferenceData {
private List<String> rules; private List<String> rules;
private Map<String, Double> values; private Map<String, Double> values;
private List<Variable> inputVariables; private List<Variable> inputVariables;
private Variable outputVariable; private List<Variable> outputVariables;
public List<String> getRules() { public List<String> getRules() {
return rules; return rules;
@ -33,11 +33,11 @@ public class InferenceData {
this.inputVariables = inputVariables; this.inputVariables = inputVariables;
} }
public Variable getOutputVariable() { public List<Variable> getOutputVariables() {
return outputVariable; return outputVariables;
} }
public void setOutputVariable(Variable outputVariable) { public void setOutputVariable(List<Variable> outputVariables) {
this.outputVariable = outputVariable; this.outputVariables = outputVariables;
} }
} }

View File

@ -103,9 +103,9 @@ public class FuzzyInferenceService {
private RuleBlock getRuleBlock(Engine engine, private RuleBlock getRuleBlock(Engine engine,
List<String> rules, List<String> rules,
List<Variable> inputVariables, List<Variable> inputVariables,
Variable outputVariable) { List<Variable> outputVariables) {
inputVariables.stream().map(this::getInputVariable).forEach(engine::addInputVariable); inputVariables.stream().map(this::getInputVariable).forEach(engine::addInputVariable);
engine.addOutputVariable(getOutputVariable(outputVariable)); outputVariables.stream().map(this::getOutputVariable).forEach(engine::addOutputVariable);
RuleBlock mamdani = new RuleBlock(); RuleBlock mamdani = new RuleBlock();
mamdani.setName("mamdani"); mamdani.setName("mamdani");
@ -151,19 +151,21 @@ public class FuzzyInferenceService {
new FuzzyTerm("высокий", 500000.0)) new FuzzyTerm("высокий", 500000.0))
) )
), ),
new Variable("кредит", List.of( List.of(new Variable("кредит", List.of(
new FuzzyTerm("небольшой", 20000.0), new FuzzyTerm("небольшой", 20000.0),
new FuzzyTerm("средний", 100000.0), new FuzzyTerm("средний", 100000.0),
new FuzzyTerm("большой", 1000000.0))) new FuzzyTerm("большой", 1000000.0))))
); );
} }
public List<OutputValue> getFuzzyInference(List<String> rules, public List<OutputValue> getFuzzyInference(List<String> rules,
Map<String, Double> values, Map<String, Double> values,
List<Variable> inputVariables, List<Variable> inputVariables,
Variable outputVariable) { List<Variable> outputVariables) {
fuzzyEngine.getRuleBlocks().clear(); fuzzyEngine.getRuleBlocks().clear();
fuzzyEngine.addRuleBlock(getRuleBlock(fuzzyEngine, rules, inputVariables, outputVariable)); fuzzyEngine.getInputVariables().clear();
fuzzyEngine.getOutputVariables().clear();
fuzzyEngine.addRuleBlock(getRuleBlock(fuzzyEngine, rules, inputVariables, outputVariables));
return getConsequent(fuzzyEngine, values); return getConsequent(fuzzyEngine, values);
} }
@ -177,12 +179,12 @@ public class FuzzyInferenceService {
.collect(Collectors.toMap( .collect(Collectors.toMap(
VariableValueDto::getVariableName, VariableValueDto::getVariableName,
VariableValueDto::getValue)); VariableValueDto::getValue));
List<Variable> inputVariables = projectVariableService.getByProjectId(projectInferenceData.getProjectId()); List<Variable> inputVariables = projectVariableService.getInputByProjectId(projectInferenceData.getProjectId());
List<Variable> outputVariables = projectVariableService.getOutputByProjectId(projectInferenceData.getProjectId());
return getFuzzyInference(fuzzyRules, return getFuzzyInference(fuzzyRules,
variableValues, variableValues,
inputVariables, inputVariables,
new Variable()); outputVariables);
} }
} }