谢谢mahuan兄的解答,不太懂是怎么能保证这个方法是最优的的证明
相关的问题网页及拓展问题
https://www.cnblogs.com/bugY/archive/2011/08/19/2146180.html
2020大学生建模竞赛
https://www.doc88.com/p-58861702038642.html?r=1
https://max.book118.com/html/2022/0714/5310304331004304.shtm
这些问题,都是有趣且困难,一直不太懂,学习下
qjchen 发表于 2023-2-7 10:04
谢谢manhua兄的解答,不太懂是怎么能保证这个方法是最优的的证明
相关的问题网页及拓展问题
确实是有趣的问题。 感谢各位大咖朋友的交流和优秀见解
我个人理解:设备性能一定情况下(耗油率、载油量),最小消耗==最短的路径规划。
最短路径的约束条件,在终点最明显。从终点开始,倒推反向规划各节点位置及总里程,即为最小消耗。(如从其它位置开始施加约束条件,感觉难度较大。。) 原型问题:设备性能一定情况下(耗油率、载油量)的最小消耗。 并产生核心算法。
那么可以引申为另一个问题:
什么样的设备性能,对总消耗最为敏感? 降低设备耗油率、 增加设备载油量,对消耗的改善是否是线性关系?
分析如下
图形显示,
载油量接近拐点或更小,总消耗基本成 指数级增长,导致经济型极差。
耗油率,对最总消耗并不特别敏感。
因此增加油箱容量,是改善的关键因素。
import numpy as np
import matplotlib.pyplot as plt
def boat(trip_all, fuel, wear):
dis_base = fuel / wear
dis = dis_base
n = 1
while dis < trip_all:
n = n + 1
dis = dis_base / (2 * n - 1) + dis
fuel = dis_base * n
dis = dis - dis_base / (2 * n - 1)
Rfuel = dis_base * (n - 1) + (trip_all - dis) * (2 * n - 1)
return round(Rfuel, 1)
if __name__ == "__main__":
fig = plt.figure()
ax = fig.add_subplot(projection="3d")
wear = np.arange(0.8, 1.2, 0.02)
fuel = np.arange(600, 1200, 20)
wear, fuel = np.meshgrid(wear, fuel)
trip_all = 1500
rows = []
for Afuel in range(600, 1200, 20):
row = []
for Awear in range(80, 120, 2):
row.append(boat(trip_all, Afuel, Awear / 100))
rows.append(row)
total_fuel = np.array(rows)
ax.plot_surface(wear, fuel, total_fuel)
ax.set_xlabel("Oil Wear")
ax.set_ylabel("Space")
ax.set_zlabel("Total_fuel")
ax.set_title("Total Fuel Plot")
plt.show()
页:
1
[2]