#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(),
|
||||
inferenceData.getValues(),
|
||||
inferenceData.getInputVariables(),
|
||||
inferenceData.getOutputVariable());
|
||||
inferenceData.getOutputVariables());
|
||||
}
|
||||
|
||||
@RequestMapping(value = "getProjectInference", method = RequestMethod.POST)
|
||||
|
@ -7,7 +7,7 @@ public class InferenceData {
|
||||
private List<String> rules;
|
||||
private Map<String, Double> values;
|
||||
private List<Variable> inputVariables;
|
||||
private Variable outputVariable;
|
||||
private List<Variable> outputVariables;
|
||||
|
||||
public List<String> getRules() {
|
||||
return rules;
|
||||
@ -33,11 +33,11 @@ public class InferenceData {
|
||||
this.inputVariables = inputVariables;
|
||||
}
|
||||
|
||||
public Variable getOutputVariable() {
|
||||
return outputVariable;
|
||||
public List<Variable> getOutputVariables() {
|
||||
return outputVariables;
|
||||
}
|
||||
|
||||
public void setOutputVariable(Variable outputVariable) {
|
||||
this.outputVariable = outputVariable;
|
||||
public void setOutputVariable(List<Variable> outputVariables) {
|
||||
this.outputVariables = outputVariables;
|
||||
}
|
||||
}
|
||||
|
@ -103,9 +103,9 @@ public class FuzzyInferenceService {
|
||||
private RuleBlock getRuleBlock(Engine engine,
|
||||
List<String> rules,
|
||||
List<Variable> inputVariables,
|
||||
Variable outputVariable) {
|
||||
List<Variable> outputVariables) {
|
||||
inputVariables.stream().map(this::getInputVariable).forEach(engine::addInputVariable);
|
||||
engine.addOutputVariable(getOutputVariable(outputVariable));
|
||||
outputVariables.stream().map(this::getOutputVariable).forEach(engine::addOutputVariable);
|
||||
|
||||
RuleBlock mamdani = new RuleBlock();
|
||||
mamdani.setName("mamdani");
|
||||
@ -151,19 +151,21 @@ public class FuzzyInferenceService {
|
||||
new FuzzyTerm("высокий", 500000.0))
|
||||
)
|
||||
),
|
||||
new Variable("кредит", List.of(
|
||||
List.of(new Variable("кредит", List.of(
|
||||
new FuzzyTerm("небольшой", 20000.0),
|
||||
new FuzzyTerm("средний", 100000.0),
|
||||
new FuzzyTerm("большой", 1000000.0)))
|
||||
new FuzzyTerm("большой", 1000000.0))))
|
||||
);
|
||||
}
|
||||
|
||||
public List<OutputValue> getFuzzyInference(List<String> rules,
|
||||
Map<String, Double> values,
|
||||
List<Variable> inputVariables,
|
||||
Variable outputVariable) {
|
||||
List<Variable> outputVariables) {
|
||||
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);
|
||||
}
|
||||
|
||||
@ -177,12 +179,12 @@ public class FuzzyInferenceService {
|
||||
.collect(Collectors.toMap(
|
||||
VariableValueDto::getVariableName,
|
||||
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,
|
||||
variableValues,
|
||||
inputVariables,
|
||||
new Variable());
|
||||
outputVariables);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user