#2 -- Fix for multiple output variables
All checks were successful
CI fuzzy controller / container-test-job (push) Successful in 1m13s
All checks were successful
CI fuzzy controller / container-test-job (push) Successful in 1m13s
This commit is contained in:
parent
efd0cb66c7
commit
76ece94028
@ -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)
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user