Spaces:
Runtime error
Runtime error
Commit
·
2579cbe
1
Parent(s):
c335611
Update app.py
Browse files
app.py
CHANGED
@@ -1,13 +1,16 @@
|
|
1 |
-
|
2 |
import streamlit as st
|
3 |
|
|
|
|
|
|
|
4 |
# 设定参数
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
11 |
|
12 |
def score(price, base_price):
|
13 |
deviation_rate = (price - base_price) / base_price
|
@@ -22,7 +25,6 @@ def find_range():
|
|
22 |
max_score_diff = max_score / 3 # 最大分数差距
|
23 |
A0_range = [k, h]
|
24 |
for A6_price in [k, (k+h)/2, h]:
|
25 |
-
# 找到使A0的得分不低于A6的得分的最大值的A0的报价
|
26 |
temp_range = [0.0, 0.0]
|
27 |
for A0_price in [k + x*step for x in range(int((h-k)/step) + 1)]:
|
28 |
base_price = (h * 2 + k * 2 + A6_price + A0_price) / 6
|
@@ -31,7 +33,6 @@ def find_range():
|
|
31 |
if A0_score >= A6_score - max_score_diff:
|
32 |
temp_range[0] = A0_price
|
33 |
break
|
34 |
-
# 找到使A0的得分不低于A6的得分的最小值的A0的报价
|
35 |
for A0_price in [h - x*step for x in range(int((h-k)/step) + 1)]:
|
36 |
base_price = (h * 2 + k * 2 + A6_price + A0_price) / 6
|
37 |
A6_score = score(A6_price, base_price)
|
@@ -39,10 +40,10 @@ def find_range():
|
|
39 |
if A0_score >= A6_score - max_score_diff:
|
40 |
temp_range[1] = A0_price
|
41 |
break
|
42 |
-
# 取交集更新A0_range
|
43 |
A0_range = [max(A0_range[0], temp_range[0]), min(A0_range[1], temp_range[1])]
|
44 |
return A0_range
|
45 |
|
|
|
46 |
st.title('A0报价范围计算')
|
47 |
A0_range = find_range()
|
48 |
-
st.
|
|
|
|
|
1 |
import streamlit as st
|
2 |
|
3 |
+
# Layout
|
4 |
+
st.set_page_config(page_title='报价计算器')
|
5 |
+
|
6 |
# 设定参数
|
7 |
+
st.sidebar.header('参数设置')
|
8 |
+
k = st.sidebar.slider('设定最低价', min_value=0, max_value=100, value=10)
|
9 |
+
h = st.sidebar.slider('设定最高价', min_value=0, max_value=100, value=76)
|
10 |
+
max_score = st.sidebar.slider('设定满分', min_value=0, max_value=10, value=2)
|
11 |
+
high_penalty = st.sidebar.slider('设定高价扣分值', min_value=0.00, max_value=0.05, value=0.03, step=0.01)
|
12 |
+
low_penalty = st.sidebar.slider('设定低价扣分值', min_value=0.00, max_value=0.05, value=0.02, step=0.01)
|
13 |
+
step = st.sidebar.slider('设定迭代步长', min_value=0.01, max_value=1.00, value=0.01, step=0.01)
|
14 |
|
15 |
def score(price, base_price):
|
16 |
deviation_rate = (price - base_price) / base_price
|
|
|
25 |
max_score_diff = max_score / 3 # 最大分数差距
|
26 |
A0_range = [k, h]
|
27 |
for A6_price in [k, (k+h)/2, h]:
|
|
|
28 |
temp_range = [0.0, 0.0]
|
29 |
for A0_price in [k + x*step for x in range(int((h-k)/step) + 1)]:
|
30 |
base_price = (h * 2 + k * 2 + A6_price + A0_price) / 6
|
|
|
33 |
if A0_score >= A6_score - max_score_diff:
|
34 |
temp_range[0] = A0_price
|
35 |
break
|
|
|
36 |
for A0_price in [h - x*step for x in range(int((h-k)/step) + 1)]:
|
37 |
base_price = (h * 2 + k * 2 + A6_price + A0_price) / 6
|
38 |
A6_score = score(A6_price, base_price)
|
|
|
40 |
if A0_score >= A6_score - max_score_diff:
|
41 |
temp_range[1] = A0_price
|
42 |
break
|
|
|
43 |
A0_range = [max(A0_range[0], temp_range[0]), min(A0_range[1], temp_range[1])]
|
44 |
return A0_range
|
45 |
|
46 |
+
# Display
|
47 |
st.title('A0报价范围计算')
|
48 |
A0_range = find_range()
|
49 |
+
st.header(f'A0的报价范围是 {A0_range[0]:.2f} 到 {A0_range[1]:.2f}')
|