이런 종류의 질문을하는 곳이 적절한 지 확실하지 않습니다. 귀하가 알고리즘이나 일부 표준 비즈니스 규칙을 묻는 것 같지만 최종 코드가 필요합니다.
글쎄, 새로운 아이디어를 모으기위한 접근 방식을 게시합니다. 나는 최고 값에 대한 알고리즘의 목록 및 테스트를 구성 :
import math
fs = [
('Plain coef', lambda m: math.log(m[1]* units_coef)
+ math.log(m[2]* money_coef) ),
('Coef into log', lambda m: m[1]* units_coef
+ m[2]* money_coef ),
('Coef out log', lambda m: math.log(m[1])* units_coef
+ math.log(m[2]) * money_coef),
('Coef out log2', lambda m: math.log(m[1],2)* units_coef
+ math.log(m[2],2) * money_coef),
]
movings = [ ('product1', 1500, 75.00),
('product2', 2, 90000.00),
('product3', 1200, 8000.00),
('product4', 6, 4000.00),
('product5', 500, 1000.00),
('product6', 800, 1200.00),
('product7', 300, 800.00),
]
units_coef = 1.1
money_coef = 0.04
for (n,f) in fs:
print ''
print n
print '==============================================='
for i in sorted(movings,
key = lambda m: f(m) ,
reverse=True)[:3]:
print i, f(i)
결과 :
$ python solds.py
Plain coef
===============================================
('product3', 1200, 8000.0) 12.9537080114
('product6', 800, 1200.0) 10.6511229184
('product5', 500, 1000.0) 9.99879773234
Coef into log
===============================================
('product2', 2, 90000.0) 3602.2
('product1', 1500, 75.0) 1653.0
('product3', 1200, 8000.0) 1640.0
Coef out log
===============================================
('product1', 1500, 75.0) 8.21724195034
('product3', 1200, 8000.0) 8.15857239218
('product6', 800, 1200.0) 7.63667597387
Coef out log2
===============================================
('product1', 1500, 75.0) 11.8549742115
('product3', 1200, 8000.0) 11.7703319309
('product6', 800, 1200.0) 11.0173945564
당신이 생각해야 할 첫 번째 것은 "무엇을 정확하게 당신이이 계급을 의미 할"입니다. 간단한 방법은 위의 두 가지 방법 (증가하는 방식)으로 그들을 정렬하고'units_sold_rank * 1.5 + total_money_gathered_rank * 2.0'과 같은 점수를 할당하고이를 기반으로 정렬하는 것입니다. 귀하의 경우 제품 2는 상단에 '1.5'(또는 '0'또는 '1'에서 색인을 생성하면 '4.0', 제품 1은 '2.0' 또는 '5.5') – dmg
코드가 아닌 비즈니스 알고리즘을 요구하고 있습니까? 그렇다면 인터넷 검색을 시도하거나 "ABC 파레토 분석 인벤토리"로 질문하십시오. – rlb