效用最大化
Bill 是一名正在努力学习钢琴的学生,他将每天的学习时间分配给古典乐 c 和现代乐 m。他的偏好由您刚刚绘制过的同一个效用函数表示:
$U(c, m)=c^{0.7}m^{0.3}$。
每天的学习时间总计为 2($c+m=2$)。请帮助 Bill 找到最优的学习计划。
np 和 minimize 已为您加载。我们已经从 SymPy 导入了 symbols、diff 和 solve,并将 c 和 m 定义为 symbols,同时也为您定义好了效用函数 U。
本练习是课程的一部分
Python 优化入门
练习说明
- 通过解包
vars并返回取负后的函数来定义效用函数。 - 定义约束函数。
- 使用
type和fun设置约束。 - 执行优化,并提取
c和m的结果。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Define the utility function
def utility_function(vars):
____
return ____
# Define the constraint function
def constraint(vars):
return ____
initial_guess = [12, 12]
# Set up the constraint
constraint_definition = {____}
# Perform optimization
result = ____
____ = result.____
print("Optimal study hours for classical music:", round(c, 2))
print("Optimal study hours for modern music:", round(m, 2))