0%

FUZZY SYSTEM REPORT

ENGG5189 FUZZY EXPERT SYSTEM REPORT

Li Wei 1155062148

Background

There are hundreds of programming languages to use now, which make it difficult for programmers to decide which language is the most suitable for them.

Below picture (cited from Quora) also shows that many people, no matter they are experienced programmers or not, have the question:

Which programming language should I learn next?

1519616125

Motivation

Motivated by the wide range of discussion: “ best programming language to learn” and our former hesitant experience when deciding which programming course to enroll, we decided to design a Fuzzy expert system to solve these kinds of problems.

Problem Definition

The users do not have a clear knowledge on different programming language, which make them hard to select the best/ most suitable programming language for them to learn.

System Design

The Fuzzy system is designed for recommending suitable programming languages for users to learn. And rules are provided for inference so that users need to answer some simple programming habits questions, which are used as facts in the system.

Implementation

Fuzzy type
  • Difficulty the expected difficulty of programming language.
  • Time the expected time spent to learn programming language every week.
  • Resource the expected learning resource of programming language.
  • Experience the former programming experience of the user.
  • Efficiency the expected efficiency of programming language.
  • Package the expected package(eg. numpy in python) requirements of programming language.
  • Debug the debugging ability and willing of user.
Objects
  • (conclusion)

    preset values of the result

  • expectation_of_difficulty

  • time_spent_on_learning

  • available_resource

  • experience

  • package_requirement

  • efficiency_requirement

  • upset_when_debug

  • market_requirement

    whether the reason user learns programming is for finding a job.

  • company_orientation

    the expected IT companies the user wants to work for.

  • interest_field

    the expected programming field the user wants to work in.

  • compiled_language_or_not

    whether the user is suitable for compiled language or not.

Rules

Rules in the system is divided into two perspectives: Facts and languages.

For the facts perspective, the rules help to inference the conclusion and other objects such as expectation of difficulty by facts. Here are some examples:

1
2
3
4
5
6
7
8
9
10
11
RULE CODE:difficulty_rule_easy_111
IF time_spent_on_learning is little AND available_resource is little AND experience is little
THEN expectation_of_difficulty is easy
WITH CERTAINTY: 0.9
//help to inference expectation_of_difficulty

RULE CODE:difficulty_rule_1
IF expectation_of_difficulty is easy
THEN programming_language is Python
WITH CERTAINTY: 0.75
//help to inference programming_language

For the languages perspective, the rules help to inference the conclusion by languages, this kind of rule makes use of the key features of different programming language. Here is one example:

1
2
3
4
RULE CODE:js_rule_2
IF expectation_of_difficulty is easy AND efficiency_requirement is high AND interest_field is Web_programming
THEN programming_language is Javascript
WITH CERTAINTY: 0.95
Inference structure

![Untitled Diagram](../images/Untitled Diagram.png)

Results

Given these facts:

  • time_spent_on_learning much (1.0)
  • **available_resource **much (1.0)
  • experience much (1.0)
  • **package_requirement **high (1.0)
  • efficiency_requirement high (1.0)
  • upset_when_debug No (1.0)
  • market_requirement Yes (1.0)
  • company_orientation Apple (1.0)
  • interest_field No_preference (1.0)

The results are:

1519621128(../images/1519621128(1).png)

1519621161(../images/1519621161(1).png)

1519621201(../images/1519621201(1).png)

Discussion and conclusion
Pros and cons

Our system has done a basic programming language recommendation task, which covers almost all possibilities. And the result is really practical for uses.

However, the system can not solve a few specific language requirements well, such as Database programmer and so on.

Further improvements

According to what we mentioned above, the system can be still improved by importing more language-based rules so that the system can handle some specific language requirements better.

Work distribution
Work Liu Boyi Li Wei
Brainstorm the topic yes yes
Conduct survey and collect expert knowledge yes yes
Design the system (Main workload) yes yes
Coding the Fuzzy Set and Object part yes
Coding the Rule part(Main workload) yes yes
Test and debug yes