随机模型
parent
a0e55eb4db
commit
45f0302263
|
|
@ -0,0 +1,104 @@
|
|||
import pulp as pl
|
||||
import pandas as pd
|
||||
from itertools import product
|
||||
|
||||
df1 = pd.read_excel (io='附件1.xlsx', sheet_name = "乡村的现有耕地")
|
||||
df2 = pd.read_excel (io='附件2.xlsx', sheet_name = "2023年的农作物种植情况").fillna(method='ffill')
|
||||
df3 = pd.read_excel (io='附件2.xlsx', sheet_name = "2023年统计的相关数据")
|
||||
|
||||
trans_dict = {"A": "平原地", "B": "林地", "C": "山坡地", "D": "水浇地", "E": "普通大棚", "F": "智能大棚"}
|
||||
# 地块定义
|
||||
A = ["A"+str(i) for i in range(1,7)]
|
||||
B = ["B"+str(i) for i in range(1,15)]
|
||||
C = ["C"+str(i) for i in range(1,7)]
|
||||
D = ["D"+str(i) for i in range(1,9)]
|
||||
E = ["E"+str(i) for i in range(1,17)]
|
||||
F = ["F"+str(i) for i in range(1,5)]
|
||||
|
||||
# 作物定义
|
||||
# 粮食(豆类)
|
||||
LDN = ["黄豆", "黑豆", "红豆", "绿豆", "爬豆"]
|
||||
LDI = list(range(1, 6))
|
||||
|
||||
# 粮食
|
||||
LN = ["小麦", "玉米", "谷子", "高粱", "黍子", "荞麦", "南瓜", "红薯", "莜麦", "大麦"]
|
||||
LI = list(range(6, 16))
|
||||
|
||||
# 水稻类
|
||||
LSN = ["水稻"]
|
||||
LSI = list(range(16, 17))
|
||||
|
||||
# 蔬菜(豆类)
|
||||
SDN = ["豇豆", "刀豆", "芸豆"]
|
||||
SDI = list(range(17, 20))
|
||||
|
||||
# 蔬菜水浇地第一季
|
||||
SN = ["土豆", "西红柿", "茄子", "菠菜", "青椒", "菜花", "包菜", "油麦菜", "小青菜",
|
||||
"黄瓜", "生菜", "辣椒", "空心菜", "黄心菜", "芹菜"]
|
||||
SI = list(range(20, 35))
|
||||
|
||||
# 蔬菜水浇地第二季
|
||||
SAN = ["大白菜", "白萝卜", "红萝卜"]
|
||||
SAI = list(range(35, 38))
|
||||
|
||||
# 食用菌普通大棚第二季
|
||||
SYJN = ["榆黄菇", "香菇", "白灵菇", "羊肚菌"]
|
||||
SYJI = list(range(38, 42))
|
||||
|
||||
K = [1,2] # 季
|
||||
Y = [y for y in range(2024,2031)] # 年
|
||||
I = A + B + C + D + E + F # 全部地块
|
||||
J = LDN + LN + LSN + SDN + SN + SAN + SYJN # 所有作物
|
||||
|
||||
V_1 = list(product(A + B + C, LDI + LI, [K[0]], Y))
|
||||
V_2 = list(product(D, LSI, [K[0]], Y))
|
||||
V_3 = list(product(D + E + F, SDI + SI, [K[0]], Y))
|
||||
V_4 = list(product(F, SDI + SI, [K[1]], Y))
|
||||
V_5 = list(product(D, SAI, [K[1]], Y))
|
||||
V_6 = list(product(E, SYJI, [K[1]], Y))
|
||||
|
||||
V = V_1 + V_2 + V_3 + V_4 + V_5 + V_6
|
||||
|
||||
W1 = product(A + B + C + D + E + F, [K[0]], Y) # 第一季
|
||||
W2 = product(D + E + F, [K[1]], Y) # 第二季
|
||||
W = list(W1) + list(W2)
|
||||
|
||||
# 数据
|
||||
# 从地块名称转到序号
|
||||
I2N = {"A": "平旱地", "B": "梯田", "C": "山坡地", "D": "水浇地", "E": "普通大棚", "F": "智慧大棚"}
|
||||
N2I = {"平旱地": A, "梯田": B, "山坡地": C, "水浇地": D, "普通大棚": E, "智慧大棚": F}
|
||||
q = {(I2N[df2["种植地块"][i]], df2["作物编号"][i],
|
||||
K[1] if df2["种植季次"][i] == "第二季" else K[0]):
|
||||
df3["种植成本/(元/亩)"][i]
|
||||
for i in range(len(df2))}
|
||||
|
||||
def get_data(name:str):
|
||||
return {(df3["地块类型"][i].strip(), df3["作物编号"][i],
|
||||
K[1] if df3["种植季次"][i] == "第二季" else K[0]):
|
||||
df3[name][i]
|
||||
for i in range(len(df3))}
|
||||
|
||||
r = get_data("亩产量/斤")
|
||||
c = get_data("种植成本/(元/亩)")
|
||||
p = get_data("销售单价/(元/斤)")
|
||||
|
||||
|
||||
# 问题求解
|
||||
problem = pl.LpProblem("Agricultural Planting",sense=pl.LpMinimize)
|
||||
|
||||
x = pl.Dict([V,Y])
|
||||
y = pl.LpVariable("y")
|
||||
z = y > x
|
||||
|
||||
problem += min([x,y,z])
|
||||
for var in vars:
|
||||
problem += (x+y > 8)
|
||||
problem += (x+y+z > 13)
|
||||
problem += (x+z > 7)
|
||||
|
||||
problem.solve()
|
||||
|
||||
|
||||
for v in problem.variables():
|
||||
print(v.name,"=",v.varValue)
|
||||
print(pl.value(problem.objective))
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
# 随机模型
|
||||
|
||||
## 第一题
|
||||
|
||||
### 1.1
|
||||
|
||||
旧赛制进球数概率
|
||||
|
||||
| | 0 | 1 | 2 |
|
||||
| ------ | --------- | --------- | ----- |
|
||||
| 先 $X$ | $(1-p)^2$ | $2p(1-p)$ | $p^2$ |
|
||||
| 后 $Y$ | $(1-q)^2$ | $2q(1-q)$ | $q^2$ |
|
||||
|
||||
$P\{先手胜\}=P\{X>Y\}=2p^2q(1-q)+2(1-q)^2p(1-p)+p^2(1-q)^2=(1-q)p[2pq+2(1-p)(1-q)+p(1-q)]$
|
||||
|
||||
$P\{后手胜\}=P\{X<Y\}=2q^2p(1-q)+2(1-p)^2q(1-q)+q^2(1-p)^2=2(1-p)q[2pq+2(1-p)(1-q)+q(1-p)]$
|
||||
|
||||
$P\{相同\}=P\{X=Y\}=[pq+(1-p)(1-q)]^2$
|
||||
|
||||
新赛制进球数概率
|
||||
|
||||
|
||||
| | 0 | 1 | 2 |
|
||||
| ------ | ------------ | --------------- | ---- |
|
||||
| 先 $X$ | $(1-p)(1-q)$ | $p(1-q)+q(1-p)$ | $pq$ |
|
||||
| 后 $Y$ | $(1-p)(1-q)$ | $p(1-q)+q(1-p)$ | $pq$ |
|
||||
|
||||
$P\{先手胜\}=P\{X>Y\}=p(1-p)[q^2+(1-q)^2]+q(1-q)[p^2+(1-p)^2]+pq(1-p)(1-q)$
|
||||
|
||||
$P\{后手胜\}=P\{X<Y\}=p(1-p)[q^2+(1-q)^2]+q(1-q)[p^2+(1-p)^2]+pq(1-p)(1-q)$
|
||||
|
||||
$P\{相同\}=P\{X=Y\}=[(1-p)(1-q)]^2+[p(1-q)+q(1-p)]^2+p^2q^2$
|
||||
|
||||
在 $p=\frac{3}{4},q=\frac{2}{3}$ 时
|
||||
|
||||
| | 先胜 | 后胜 | 平 |
|
||||
| ---- | ---------------- | ---------------- | ---------------- |
|
||||
| 旧 | $\frac{17}{48}$ | $\frac{2}{9}$ | $\frac{61}{144}$ |
|
||||
| 新 | $\frac{41}{144}$ | $\frac{41}{144}$ | $\frac{62}{144}$ |
|
||||
|
||||
### 1.2
|
||||
|
||||
无论在新旧规则下,加赛第一轮都是先罚球队先罚球,后罚球队后罚球。
|
||||
|
||||
所以,先罚球队获胜概率为: $p(1-q)$,后罚球队获胜概率为: $q(1-p)$
|
||||
|
||||
## 第二题
|
||||
|
||||
### 2.1
|
||||
|
||||
若 A 第一轮得分,则获胜,若不得分,若对手也不得分,则进入下一轮循环
|
||||
|
||||
所以概率为
|
||||
$$
|
||||
P\{A获胜\}=(\alpha+\beta)\sum\limits_{i=0}\gamma^i=\frac{\alpha+\beta}{1-\gamma^2}
|
||||
$$
|
||||
|
||||
### 2.2
|
||||
|
||||
$$
|
||||
P\{A获胜\}=\alpha+a\beta+b\gamma
|
||||
$$
|
||||
|
||||
考虑 $a$ 的情况
|
||||
|
||||
1. B 不得分,A胜利
|
||||
2. B射门,A在突然死亡中胜利
|
||||
|
||||
所以 $a=\gamma+\beta\frac{\alpha+\beta}{1-\gamma^2}$
|
||||
|
||||
考虑 $b$ 的情况
|
||||
|
||||
B 在突然死亡中获胜的概率为$\frac{\alpha+\beta}{1-\gamma^2}$ ,则 A 获胜的概率 $b=P\{\bar{B}\}=1-P\{B\}=1-\frac{\alpha+\beta}{1-\gamma^2}$
|
||||
|
||||
### 2.3
|
||||
|
||||
由 **2.2** 的结论可知
|
||||
$$
|
||||
P\{A获胜\}=\alpha+(\gamma+\beta\frac{\alpha+\beta}{1-\gamma^2})\beta+(1-\frac{\alpha+\beta}{1-\gamma^2})\gamma
|
||||
$$
|
||||
修改以前,代入 $\alpha+\beta=1-\gamma$ 我们可以知道
|
||||
$$
|
||||
P\{A获胜\}=\frac{\alpha+\beta}{1-\gamma^2}=\frac{1}{1+\gamma}
|
||||
$$
|
||||
所以,先手获胜的概率是更大的,尤其是不得分的概率很小时
|
||||
|
||||
修改之后,
|
||||
|
||||
1. $\gamma$ 很大, 即 $\gamma\to1$ 时
|
||||
|
||||
$P=\frac{\gamma^2}{1+\gamma}=\frac{1}{2}$
|
||||
|
||||
2. $\gamma$ 很小, 即 $\gamma\to0$ 时
|
||||
|
||||
$P=\alpha+\beta^2$ ,此时我们令 $\alpha=1-\beta$, 可知 $P=1-\beta+\beta^2$
|
||||
|
||||

|
||||
|
||||
先手仍更有可能获胜,但是在 $\beta$ 没有很大或很小的情况时,比修改之前小。
|
||||
|
||||
注:$\beta$ 很大导致先手获胜概率大是因为第三轮突然死亡先手得分概率很大,$\beta$ 很小则先手在第一轮就容易获胜。如果要使得先手后手更加公平,需要继续推迟突然死亡的机制
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 53 KiB |
Loading…
Reference in New Issue