本文目录导读:

“士气指数”通常不是一个标准的Python库,而是一个业务或游戏概念(比如团队状态、员工满意度、游戏NPC的忠诚度)。
要把Python案例和“士气指数”结合做决策,核心思路是:用Python把“士气”量化、建模,然后嵌入到自动化决策逻辑(If-Else、评分卡、强化学习)中。
根据你的具体场景(是企业人力资源、游戏AI还是项目管理),下面我给你三个最典型的Python实战案例。
企业团队管理(自动预警与干预)
场景:你有员工的考勤、加班时长、代码提交量或任务完成率等数据,需要计算一个“综合士气指数”,并自动触发管理动作(如发红包、安排休息、约谈)。
决策逻辑:士气指数低于阈值 ( \rightarrow ) 执行“关怀策略”;士气高 ( \rightarrow ) 执行“挑战性任务分配”。
import numpy as np
import pandas as pd
# 1. 模拟数据:计算每个员工的士气分(基于最近N天行为)
def calculate_morale(employee_data):
"""
假设数据包含:最近7天加班时长、任务完成率、代扣率
权重:幸福感 = 100 - 加班惩罚 + 完成率加分
"""
overtime_penalty = employee_data['overtime_hours'] * 2 # 加班扣分
performance_bonus = employee_data['task_completion'] * 30 # 完成率高加分
morale = max(0, 100 - overtime_penalty + performance_bonus)
return morale
# 模拟四个员工的数据
employees = pd.DataFrame({
'name': ['张三', '李四', '王五', '赵六'],
'overtime_hours': [3, 1, 10, 0], # 昨天加班时长
'task_completion': [0.8, 1.0, 0.4, 0.9]
})
# 2. 决策引擎
def decision_engine(row):
morale = calculate_morale(row)
# 这里就是“决策”(结合了士气指数)
if morale < 60:
action = "紧急约谈,分配心理咨询或强制调休"
elif morale < 80:
action = "本周不安排新任务,建议团队聚餐放松"
else:
action = "士气高涨,分配高难度创新项目或给予股票期权激励"
return pd.Series([morale, action], index=['morale_score', 'action'])
# 应用决策
result = employees.apply(decision_engine, axis=1)
final_df = pd.concat([employees, result], axis=1)
print(final_df[['name', 'morale_score', 'action']])
核心点:Python在这里的作用是把“主观感觉”变成可计算的分数,然后通过设定决策边界(阈值) 自动生成管理动作。
游戏/模拟器 AI(状态机驱动)
场景:假设你在写一个《文明》或《三国志》类游戏,己方城池的“士气”影响产量,当士气低时,AI应倾向“修养生息”,士气高时“向外扩张”。
决策逻辑:根据士气区间,切换AI的状态机。
class CityState:
def __init__(self, name, morale):
self.name = name
self.morale = morale # 0-100
self.state = 'idle'
def update_state(self):
# 核心决策:根据士气指数选择行动状态
if self.morale < 30:
self.state = 'DEFENSIVE_SHELL' # 龟缩防守,建造城墙
elif self.morale < 60:
self.state = 'ECONOMIC_FOCUS' # 发展商业,举办庆典提升士气
else:
self.state = 'AGGRESSIVE' # 组织军队,对外宣战
def take_action(self):
self.update_state() # 每次行动前先检查士气
if self.state == 'AGGRESSIVE':
print(f"[{self.name}] 士气高涨({self.morale}),全军出击!")
# 这里可以写攻击逻辑
elif self.state == 'ECONOMIC_FOCUS':
print(f"[{self.name}] 士气一般({self.morale}),举办体育竞技提升士气 +5")
self.morale += 5 # 决策影响了士气(反馈闭环)
elif self.state == 'DEFENSIVE_SHELL':
print(f"[{self.name}] 士气崩溃({self.morale}),开启紧急征兵并免税")
self.morale += 10
# 模拟决策过程
city = CityState("长安", 20)
for _ in range(5):
city.take_action() # 每一回合做一次决策
特点:这里形成了一个闭环——士气影响决策,决策又反过来(通过加BUFF或减损)影响士气。
金融/期货交易决策(最硬核的“市场情绪”)
场景:在量化交易中,“士气”通常对应“市场情绪指数”(如贪婪恐惧指数),你可以利用Python爬取新闻情绪得分,结合历史价格计算“动量士气”,做出买卖决策。
决策逻辑:RSI(相对强弱指标)扮演“士气”角色,当士气极度低迷(超卖)时买入;极度狂热(超买)时卖出。
import yfinance as yf
import pandas as pd
import numpy as np
# 获取股票数据
data = yf.download("AAPL", period="3mo") # 苹果股票
close_price = data['Close']
# 计算RSI(相对强弱指数),这里把它当作“士气指数”(数值越高越贪婪)
def calculate_rsi(series, period=14):
delta = series.diff()
gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
rs = gain / loss
rsi = 100 - (100 / (1 + rs))
return rsi
morale_index = calculate_rsi(close_price)
# 交易决策引擎(示例:布林带结合士气)
def trading_decision(morale):
# 士气指数(RSI)越低,说明市场恐慌,越该买(逆向思维)
if morale < 30: # 恐慌至极
return "BUY_STRONG" # 重仓买入
elif morale < 45:
return "BUY_SMALL"
elif morale > 70: # 狂热
return "SELL_STRONG" # 清仓或做空
elif morale > 55:
return "SELL_SMALL"
else:
return "HOLD" # 观望
# 获取最后一次信号
latest_morale = morale_index.dropna().iloc[-1]
signal = trading_decision(latest_morale)
print(f"当前市场士气(RSI): {latest_morale:.2f} -> 建议动作: {signal}")
核心点:这里用了经典的指标量化“士气”,决策逻辑是均值回归——极度悲观时买入,极度乐观时卖出。
如果你要做更专业的决策系统(可选进阶)
如果这是企业级项目,评价不高,建议采用加权评分卡或随机森林来做决策,而不是简单的硬编码。
伪代码示例(提高决策质量):
# 输入:士气指数(morale)、资源预算(budget)、项目风险(risk)
# 输出:执行哪种策略的概率
def advanced_decision(features):
# 假设这里训练过一个sklearn的逻辑回归模型
# clf = joblib.load("morale_model.pkl")
# probs = clf.predict_proba([features])
#决策动作
action = np.argmax(probs)
return action
总结建议
- 你如果搞的是人力资源管理:用案例一,重点是特征工程(如何算出士气分数)。
- 你如果搞游戏开发:用案例二,重点是状态机和反馈循环。
- 你如果搞量化投资:换用案例三,核心是寻找“士气(情绪)”的代理变量。
核心方法是:抽象指标 -> 逻辑映射 -> 自动化执行,你目前数据源是什么?或者你要解决的是哪方面的人力或项目问题?可以告诉我,我帮你细化。