【优化求解】基于迭代法实现萨顿山地车问题附matlab代码
【优化求解】基于迭代法实现萨顿山地车问题附matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 内容介绍
Consider the task of driving an underpowered car up a steep mountain road. The diculty is that gravity is stronger than the car’s engine, and even at full throttle the car cannot accelerate up the steep slope. The only solution is to first move away from the goal and up the opposite slope on the left. Then, by applying full throttle the car can build up enough inertia to carry it up the steep slope even though it is slowing down the whole way. This is a simple example of a continuous control task where things have to get worse in a sense (farther from the goal) before they can get better. Many control methodologies have great diculties with tasks of this kind unless explicitly aided by a human designer. Consider the task of driving an underpowered car up a steep mountain road. The diculty is that gravity is stronger than the car’s engine, and even at full throttle the car cannot accelerate up the steep slope. The only solution is to first move away from the goal and up the opposite slope on the left. Then, by applying full throttle the car can build up enough inertia to carry it up the steep slope even though it is slowing down the whole way. This is a simple example of a continuous control task where things have to get worse in a sense (farther from the goal) before they can get better. Many control methodologies have great diculties with tasks of this kind unless explicitly aided by a human designer.
2 部分代码
% This is the main file for the simulation.
clear
close all
clc
%% Set simulation parameters.
% There is a minimum grid size here. Otherwise, traceBack function will
% fail. Since the dynamic equation of the car is:
% vNext = v + 0.001 * u - 0.0025 * cos(3 * p);
% When v(0) = 0, and cos(3p) = 0, u = 1, will result in vNext = 0.001. For
% this reason, velocity grid should be finer that 0.001.
% Bigger number means finer grids
% We will create a grid/matrix, the row is for the discretized position and
% the column is for the discretized velocity.
gridSizePos = 400;
gridSizeVel = 400;
% x0 holds the initial position and velocity;
% Select -0.6 to -0.4 for position.
% Initial velocity shold be zero as described in the original problem.
x0 = [-0.52 0];
%x0 = [0.4 0];
%% Find optimal policy.
tic
[error, predecessorP, predecessorV, policy] = ...
mountainCarValIter(gridSizePos, gridSizeVel, 1000);
toc
%% Trace back the optimal policy, for given a certain initial condition
[XStar, UStar, TStar] = ...
traceBack(predecessorP, predecessorV, policy, x0, gridSizePos, gridSizeVel);
%% Animation
visualizeMountainCar(gridSizePos, XStar, UStar)
%% Plot errors over iterations.
figure
plot(error);
title(’Convergence errors over iterations’);
%% Plot the policy matrix.
figure
imagesc(policy)
title(’Policy matrix’)
xlabel(’Position’);
ylabel(’Velocity’);
3 运行结果
4 参考文献
博主简介:擅长 智能优化算法 、 神经网络预测 、 信号处理 、 元胞自动机 、 图像处理 、 路径规划 、 无人机 、 雷达通信 、 无线传感器 等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
