第五章课后习题5.4、5.5和5.7

news/2025/1/24 14:54:47/文章来源:https://www.cnblogs.com/zlt-2005/p/18509440

习题5.4

点击查看代码
import numpy as np
import math
from scipy.optimize import minimize,Bounds
def func(x):return sum(math.sqrt(x[i]) for i in range(100))
def con(x):return 1000-np.sum(x[i]*(101-i+1) for i in range(100))
con1={'type':'ineq','fun': lambda x: 10-x[0]}
con2={'type':'ineq','fun': lambda x: 20-x[0]-2*x[1]}
con3={'type':'ineq','fun': lambda x: 30-x[0]-x[1]*2-x[2]*3}
con4={'type':'ineq','fun': lambda x: 40-x[0]-x[1]*2-x[2]*3-x[3]*4}
con5={'type':'ineq','fun': con}
cons=[con1,con2,con3,con4,con5]
# 变量的初始猜测
x0 = np.zeros(100)
# 边界条件,所有变量都必须大于等于0
bnds = [(0, None) for _ in range(100)]
res=minimize(func,x0,constraints=cons,bounds=bnds)
def negative_func(x):  return -func(x)  # 假设 func 是您要最大化的原始目标函数  
res = minimize(negative_func, x0, constraints=cons, bounds=bnds)  
# 注意:res.fun 现在是原始目标函数的相反数,所以您需要取其相反数来得到真正的最大值  
max_func_value = -res.fun
print(res.x)
print(max_func_value)
print("学号:3001")


习题5.5

点击查看代码
import numpy as np  
from scipy.optimize import minimize  
# 定义目标函数  
def objective(x):  return - (2 * x[0] + 3 * x[0]**2 + 3 * x[1] + x[1]**2 + x[2])   
# 定义约束条件  
def con1(x):  return 10 - (x[0] + 2 * x[0]**2 + x[1] + 2 * x[1]**2 + x[2])   
def con2(x):  return 50 - (x[0] + x[0]**2 + x[1] + x[1]**2 - x[2])   
def con3(x):  return 40 - (2 * x[0] + x[0]**2 + 2 * x[1] + x[2])   
def con4(x):  return x[0] + 2 * x[1] - 1   
def con5(x):  return x[0]    
def con6(x):  return x[0]**2 + x[2] - 2    
# 定义约束条件的字典  
cons = ({'type': 'ineq', 'fun': con1},  {'type': 'ineq', 'fun': con2},  {'type': 'ineq', 'fun': con3},  {'type': 'ineq', 'fun': lambda x: -con4(x)},  {'type': 'ineq', 'fun': lambda x: -con5(x)},    {'type': 'eq', 'fun': con6}) # 定义初始点  
x0 = -np.random.rand(3)  
bounds = [(0, None) for _ in range(1)] 
solution = minimize(objective, x0, method='SLSQP', bounds=bounds, constraints=cons)   
# 输出结果  
print('Optimal solution:', solution.x)  
print('Objective value at optimal solution:', -solution.fun)
print("学号:3001")  


习题5.7

点击查看代码
import numpy as np  demands = [40, 60, 80]  
max_production = 100  
total_demand = sum(demands)  dp = np.full((4, total_demand + 1), float('inf'))  
dp[0][0] = 0  prev_production = np.full((4, total_demand + 1), -1) for i in range(1, 4):  prev_demand = sum(demands[:i-1])  for j in range(total_demand + 1):  if j < prev_demand + demands[i-1]:  continue  for x in range(max(0, j - prev_demand - demands[i-1] + 1), min(max_production + 1, j - prev_demand + 1)):  production_cost = 50 * x + 0.2 * x**2  storage_cost = 4 * (j - prev_demand - x)  total_cost = dp[i-1][j-x] + production_cost + storage_cost  if total_cost < dp[i][j]:  dp[i][j] = total_cost  prev_production[i][j] = x  min_cost = float('inf')  
final_state = -1  
for j in range(total_demand, total_demand + 1):  if dp[3][j] < min_cost:  min_cost = dp[3][j]  final_state = j  production_plan = [0] * 3  
current_state = final_state  
for i in range(3, 0, -1):  production_plan[i-1] = prev_production[i][current_state]  current_state -= prev_production[i][current_state]  print(f"最小总费用为: {min_cost} 元")  
print("生产计划为:")  
for i, plan in enumerate(production_plan, 1):  print(f"第{i}季度生产: {plan} 台")print("学号:3001")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/823021.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四章课后习题4.3和4.4

习题4.3点击查看代码 import matplotlib.pyplot as plt import numpy as np import cvxpy as cpx=cp.Variable(6,pos=True) obj=cp.Minimize(x[5]) a1=np.array([0.025, 0.015, 0.055, 0.026]) a2=np.array([0.05, 0.27, 0.19, 0.185, 0.185]) a3=np.array([1, 1.01, 1.02, 1.0…

使用Github Action 进行CI-CD

原文地址:https://www.x1uc.top/blog/github-action-use 使用Github Action 进行CI-CD我的博客建立起来还没有多久,所以时不时的会加一些功能。但是每一次加完功能之后,部署的步骤总是非常非常的麻烦。 后端步骤:maven打包->jar包放到服务器上->停止java容器-> 删…

Codeforces Round 981 (Div. 3)

Codeforces Round 981 (Div. 3) 总结 A 手推一下,发现位置变化为 \(-1,2,-3,4, \dots\),所以只需要看 \(n\) 的奇偶性即可。 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <…

第三章课后习题3.2和3.3

习题3.2点击查看代码 def X(n): # 差分方程的解 return 2 * (-1)**(n + 1) n_values = [0, 1, 2, 3, 4, 5]#根据需要自行调整 for n in n_values: print(f"X({n}) = {X(n)}") print("学号:3001")习题3.3点击查看代码 import numpy as np from …

Python pyinstaller类库使用学习总结

实践环境 python3 .9.13 pyinstaller-6.10.0-py3-none-manylinux2014_x86_64.whl CentOS 7.9 win11 实践操作 生成Linux版可执行文件 安装Python # yum install -y gcc zlib* openssl-devel libffi-devel # wget https://www.python.org/ftp/python/3.6.13/Python-3.6.13.tgz #…

c语言中实现4行3列矩阵和3行4列矩阵的运算

001、[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c ## 测试c程序 #include <stdio.h>int main(void) {int i,j,k;int v1[4][3];int v2[3][4];int v3[4][4] = {{}, {}, {}, {}}; //4行3列矩阵与3行4列矩阵的乘积是…

11.索引概念

索引:作用:提高查询效率 索引不止存在内存中,还要写到磁盘上常见的索引模型:哈希表:适用于只有等值查询的场景(kv键值对) 有序数组:等值查询和范围查询场景(redis的有序集合) 搜索树:二叉树是搜索效率最高,大多数的数据库存储却并不使用二叉树 > [!TIP] 索引不止…

3DCAT亮相2024中国国际消费电子博览会,引领AI潮流

2024年10月18日-20日,备受瞩目的2024中国国际消费电子博览会在青岛盛大开幕.在电博会现场,瑞云科技通过实际案例展示了如何通过3DCAT XR实时云渲染及AI多模态大模型解决方案的强大功能和广泛应用,帮助企业实现数字化转型和创新发展.2024年10月18日-20日,备受瞩目的2024中国国际…

0.学习路径

学习路径: 阶段一:算法入门我们需要熟悉各种数据结构的特点和用法,学习不同算法的原理、流程、用途和效率等方面的内容。阶段二:刷算法题建议从热门题目开刷,先积累至少 100 道题目,熟悉主流的算法问题。初次刷题时,“知识遗忘”可能是一个挑战,但请放心,这是很正常的…

习题2.11

import string import random x = string.ascii_letters + string.digits y=.join([random.choice(x) for i in range(1000)]) d = dict() for ch in y: d[ch] = d.get(ch,0) + 1; for k,v in sorted(d.items()): print(k,:,v)

2.4习题

-- coding: utf-8 -- """ Created on Tue Sep 17 19:39:40 2024 @author: 朱尧 """ a = [[1,2,3],[4,5,6],[7,8,9]] d = [c for b in a for c in b] print(d)

20222304 2024-2025-1 《网络与系统攻防技术》实验三实验报告

实验内容 1.1 实践内容 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧 使用msfvenom生成jar、apk等其他文件 使用veil加壳工具 使用C+ shellcode进行编程 通过组合应用各种技术实现恶意代码免杀 用另一电脑实测,在杀软开启的情况下,可运行并回连成…