from algorithm import *

input_1 = InputVariable('Якість обслуговування', 0, 10, shape)
create_z_linar('Погана', 2, 6, input_1)
create_s_linar('Гарна', 4, 8, input_1)

input_2 = InputVariable('Конкурентна ціна товару', 0, 1, shape)
create_triangular('Висока', 0.2, 0.4, 0.6, input_2)
create_triangular('Низька', 0.4, 0.6, 0.8, input_2)

input_3 = InputVariable('Доставка товару', 0, 60, shape)
create_trapezoidal('Повільна', 0, 10, 20, 40, input_3)
create_trapezoidal('Швидка', 20, 40, 50, 60, input_3)

output_1 = OutputVariable('Ефективність роботи магазину', 0, 10, shape)
create_z_linar('Погана', 2, 4, output_1)
create_trapezoidal('Середня', 2, 4, 6, 8, output_1)
create_s_linar('Гарна', 7, 9, output_1)



add_rule(
    {'Якість обслуговування': 'Погана',
     'Конкурентна ціна товару': 'Висока',
     'Доставка товару': 'Повільна'},
    {'Ефективність роботи магазину': 'Погана'})

add_rule(
    {'Якість обслуговування': 'Погана',
     'Конкурентна ціна товару': 'Низька',
     'Доставка товару': 'Повільна'},
    {'Ефективність роботи магазину': 'Середня'})

add_rule(
    {'Якість обслуговування': 'Гарна',
     'Конкурентна ціна товару': 'Висока',
     'Доставка товару': 'Швидка'},
    {'Ефективність роботи магазину': 'Середня'})

add_rule(
    {'Якість обслуговування': 'Гарна',
     'Конкурентна ціна товару': 'Низька',
     'Доставка товару': 'Швидка'},
    {'Ефективність роботи магазину': 'Гарна'})

evaluate_output({
    'Якість обслуговування': 0,
    'Конкурентна ціна товару': 0.55,
    'Доставка товару': 28,
})

fazification()

aggregation()

activation()

accumulation()

defazification()

plot_system()

