1 Востаннє редагувалося Betterthanyou (03.05.2022 09:29:09)

Тема: [Keras] Як створити мережу, яка буде знаходити всі можливі математичні

Bивчаю AI.
Хочу зробити таку мережу яка по значенню виразу знайде всі можливі комбінації математичного  виразу.
Я розумію як зробити мережу яка по одному математичному значенню знайде один математичний вираз
Наприклад:
х (значення виразу) = 48
у (математичний вираз) = 24+24

Але я не розумію як зробити таку мережу яка б видавала багато варіантів “у (математичних виразів)”
Наприклад:
х (значення виразу) = 48
у (математичний вираз) = 24+24, 3*24-24, 9/3*24-24 і т.д.

Умови такі:
Існує чотири змінних які може вводити користувач з діапазонними обмеженнями з -128 до 128
Існує значення виразу яке вводить користувач з діапазонними обмеженнями з -128 до 128
Максимальна кількість арифметичних дій 5
Доступні такі арифметичні дії: add (+), subtract(-), multiply(*), divide(/)

Я зробив цю задачу методом перебору:

def GetAllMathExpression(A, B, C, D, R):
  if(abs(A) > 128 or abs(B) > 128 or abs(C) > 128 or abs(D) > 128 or abs(R) > 128):
    raise Exception("Error! Argument greater than ASB 128")

  arithmeticOperations = ['+', '-', '*', '/']
  valueOfVariables = [A, B, C, D]
  body = list(range(len(valueOfVariables)))

  listOfMathExpression = []
  for numberOfVars in range(1, 5):
    for a in product(body, repeat=numberOfVars - 1):
      for b in product(body, repeat=numberOfVars):
        lenOfa = len(a)
        mathExpression = ""
        for i in range(lenOfa):
          mathExpression += str(valueOfVariables[b[i]])
          mathExpression += arithmeticOperations[a[i]]
        mathExpression += str(valueOfVariables[b[lenOfa - 1]])
        if R==eval(mathExpression):
          listOfMathExpression.append(mathExpression)

  return list(dict.fromkeys(listOfMathExpression))

Ввід користувача (A,B,C,D,R)

# Input
# range for A, B, C, D: from -128 to +128
# max of arithmetic operations: 5
A = 3
B = 9
C = 24
D = 62

R = 48

listOfMathExpression = GetAllMathExpression(A, B, C, D, R)
print(*listOfMathExpression, sep = "\n")

Приклад виконання (хочу таку відповідь від AI з keras):

24+24
3*24-24
24+24+3-3
24+24+9-9
24+24+24-24
24+24+62-62
24+24-3+3
24+24-9+9
24+24-24+24
24+24-62+62
24+9*3-3
24+24*3/3
24+24*9/9
24+24*24/24
24+24*62/62
24+24/3*3
24+24/9*9
24+24/24*24
24+24/62*62
3-3+24+24
9-9+24+24
24-24+24+24
62-62+24+24
24*24/24+24
3/3*24+24
9/9*24+24
24/24*24+24
62/62*24+24
9/3*24-24

Чи можна таку задачу виконати за допомогою AI з keras ? Якщо так, то як ?
Практичної потреби в цьому немає, я просто вивчаю AI з keras. Якщо таке зробити з AI keras не можливо, поясність чому.