from django.db.models import Q
|
|
from general.views import *
|
|
from menu.models import *
|
|
|
|
def search_menu(upperbound, lowerbound, openid):
|
|
menu_search = Dish.objects.filter(Q(time__gt=lowerbound) & Q(time__lte=upperbound))
|
|
return menu_search
|
|
"""
|
|
fridge = FoodStock.objects.filter(owner_id=openid, is_active=1).values()
|
|
quantity = fridge.count()
|
|
for menus in menu_search:
|
|
menu_material_id = Material.objects.filter(Q(dish_id=menus.id) & Q(is_important=1)).values("food_type_id")
|
|
for Id in menu_material_id:
|
|
i = 0
|
|
for food in fridge:
|
|
i += 1
|
|
if food['type_id'] == Id:
|
|
i = 0
|
|
break
|
|
if i == quantity:
|
|
menu_search.remove(menus)
|
|
"""
|
|
|
|
|
|
"""
|
|
menu_material = Material.objects.get(all)
|
|
fridge = FoodStock.objects.get(all)
|
|
quantity = fridge.count()
|
|
|
|
for menus in menu_search:
|
|
id_dish = menus.id
|
|
for menu in menu_material:
|
|
if menu.dish_id == id_dish:
|
|
if menu.is_important == 1:
|
|
id_material = menu.food_type_id
|
|
i = 0
|
|
for food in fridge:
|
|
i += 1
|
|
if food.type_id == id_material:
|
|
i = 0
|
|
break
|
|
if i == quantity:
|
|
menu_search = menu_search.remove(menus)
|
|
"""
|
|
|
|
|
|
|
|
|
|
"""
|
|
import numpy as np
|
|
|
|
RI_dict = {1: 0, 2: 0, 3: 0.58, 4: 0.90, 5: 1.12, 6: 1.24, 7: 1.32, 8: 1.41, 9: 1.45}
|
|
|
|
def get_w(array):
|
|
row = array.shape[0] # 计算出阶数
|
|
a_axis_0_sum = array.sum(axis=0)
|
|
# print(a_axis_0_sum)
|
|
b = array / a_axis_0_sum # 新的矩阵b
|
|
# print(b)
|
|
b_axis_0_sum = b.sum(axis=0)
|
|
b_axis_1_sum = b.sum(axis=1) # 每一行的特征向量
|
|
# print(b_axis_1_sum)
|
|
w = b_axis_1_sum / row # 归一化处理(特征向量)
|
|
nw = w * row
|
|
AW = (w * array).sum(axis=1)
|
|
# print(AW)
|
|
max_max = sum(AW / (row * w))
|
|
# print(max_max)
|
|
CI = (max_max - row) / (row - 1)
|
|
CR = CI / RI_dict[row]
|
|
if CR < 0.1:
|
|
# print(round(CR, 3))
|
|
# print('满足一致性')
|
|
# print(np.max(w))
|
|
# print(sorted(w,reverse=True))
|
|
# print(max_max)
|
|
# print('特征向量:%s' % w)
|
|
return w
|
|
else:
|
|
print(round(CR, 3))
|
|
print('不满足一致性,请进行修改')
|
|
|
|
|
|
def main(array):
|
|
if type(array) is np.ndarray:
|
|
return get_w(array)
|
|
else:
|
|
print('请输入numpy对象')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# 由于地方问题,矩阵我就写成一行了
|
|
e = np.array([[1, 5, 1/2],
|
|
[1/5, 1, 5],
|
|
[2, 1/5, 1]])
|
|
a = np.array([[1, 1 / 3, 1 / 8], [3, 1, 1 / 3], [8, 3, 1]])
|
|
b = np.array([[1, 2, 5], [1 / 2, 1, 2], [1 / 5, 1 / 2, 1]])
|
|
c = np.array([[1, 1, 3], [1, 1, 3], [1 / 3, 1 / 3, 1]])
|
|
d = np.array([[1, 3, 4], [1 / 3, 1, 1], [1 / 4, 1, 1]])
|
|
f = np.array([[1, 4, 1 / 2], [1 / 4, 1, 1 / 4], [2, 4, 1]])
|
|
e = main(e)
|
|
a = main(a)
|
|
b = main(b)
|
|
c = main(c)
|
|
d = main(d)
|
|
f = main(f)
|
|
try:
|
|
res = np.array([a, b, c, d, f])
|
|
ret = (np.transpose(res) * e).sum(axis=1)
|
|
print(ret)
|
|
except TypeError:
|
|
print('数据有误,可能不满足一致性,请进行修改')
|
|
|
|
"""
|