• 由于题目特殊性实现的不是太好,但是在无不等式约束的情况下可以得到理想结果,日后改进

    文章目录

    • 实验二: 约束优化
      • 实验目的及要求:
      • 实验原理:
        • 算法1:内点法
        • 算法2:外点法
      • 实验内容(方法和步骤) :
        • 题目1 编写程序实现外点法(包含源代码和运行截图)
          • 外点法函数源代码
          • 运行截图
        • 题目2 编写程序实现内点法(包含源代码和运行截图)
          • 内点法函数源代码
          • 运行截图

实验二: 约束优化

实验目的及要求:

  1. 熟练掌握内点法和外点法的思想和原理;

  2. 编写程序实现内点法和外点法求解极值实例;

实验原理:

在$Matlab $环境下,按照要求编写函数和程序,求解实例,直至取得正确的运行结果。(写出每种算法的步骤)

算法1:内点法
  1. 给定严格内点x0x_0x0​为初始点,初始障碍因子r1=1r_1=1r1​=1,给定误差ε>0\varepsilon>0ε>0,并令k=1k=1k=1。
  2. 构造障碍函数(选择其一):
    • G(x,rk)=f(x)+rk∑j=1l1gj(x)G\left(x, r_{k}\right)=f(x)+r_{k} \sum_{j=1}^{l} \frac{1}{g_{j}(x)}G(x,rk​)=f(x)+rk​∑j=1l​gj​(x)1​.
    • G(x,rk)=f(x)−rk∑j=1lln⁡gj(x)G\left(x, r_{k}\right)=f(x)-r_{k} \sum_{j=1}^{l} \ln g_{j}(x)G(x,rk​)=f(x)−rk​∑j=1l​lngj​(x).
  3. 求障碍函数无约束极小G(x,rk)G(x,r_k)G(x,rk​)。
  4. 判断精度若:$r_{k} \sum_{j=1}^{l} \frac{1}{g_{j}(x)} \leq \varepsilon 或或或\left|r_{k} \sum_{j=1}^{l} \ln g_{j}(x)\right| \leq \varepsilon,则以,则以,则以x_k为原约束问题近似极小解,停止迭代;否则,取为原约束问题近似极小解,停止迭代;否则,取为原约束问题近似极小解,停止迭代;否则,取x_{k+1}<x_k,并令,并令,并令k{++}$,返回步骤3,继续迭代。
算法2:外点法
  1. 取第一个罚因子M1=0.1M_1=0.1M1​=0.1 , 允许误差ε>0\varepsilon>0ε>0,令k=1k=1k=1。

  2. 求解罚函数P(x,M)P(x,M)P(x,M)的无约束极小问题,设极小值为xkx_kxk​。
    P(x,M)=f(x)+M{∑i=1m[hi(x)]2+∑j=1l[min⁡(0,gj(x))]2}P(x, M)=f(x)+M\left\{\sum_{i=1}^{m}\left[h_{i}(x)\right]^{2}+\sum_{j=1}^{l}\left[\min \left(0, g_{j}(x)\right)\right]^{2}\right\} P(x,M)=f(x)+M{i=1∑m​[hi​(x)]2+j=1∑l​[min(0,gj​(x))]2}

  3. 判断精度. 若在xkx_kxk​点,罚项<ε<\varepsilon<ε,则停止计算,得到原问题 的近似极小点xkx_kxk​ ; 反之,若存在某一个j(1≤j≤l)j (1\leq j \leq l )j(1≤j≤l),有−gj(xk)>ε-g_{j}\left(x_{k}\right)>\varepsilon−gj​(xk​)>ε或存在某$i (1\leq i\leq m ) ,有,有,有\left|{h}{i}\left({x}{k}\right)\right|>\varepsilon则令则令则令M_{k+1} =CM_k$ , (例如 , 可取C= 5 , 10) , 并令k++k{++}k++,返回步骤2 。

实验内容(方法和步骤) :

题目1 编写程序实现外点法(包含源代码和运行截图)

利用MatlabMatlabMatlab 编写外点算法,实现下列优化问题的求解

{min⁡f(x)=x13+x22s.t. g(x)=x1+x2−1\left\{\begin{array}{l} \min f(x)=x_{1}^{3}+x_{2}^{2} \\ \text {s.t. } g(x)=x_{1}+x_{2}-1 \end{array}\right. {minf(x)=x13​+x22​s.t. g(x)=x1​+x2​−1​

外点法函数源代码
function [X1, X2] = EPM(f, h)
%       EPM     外点法
%       f       目标函数
%       h       等式约束
M = 0.1;        %M值
C = 10;         %倍率
eps =  0.001;    %误差
syms x1 x2;             %定义变量
H = matlabFunction(h*h);%函数句柄while trueP = f + M*(h*h);        %构造函数P_x1 = diff(P,x1);      %求x1偏导P_x2 = diff(P,x2);      %求x2偏导X = solve(P_x1==0,P_x2==0,x1,x2); %解方程组X1 = double(X.x1);X2 = double(X.x2);if M * abs(H(X1, X2)) < eps  %判断终止条件break;endM = M * C;              %加倍
end
%%%%%%%%%%%% 多个最优解则选择罚项最小的
i = 1;
answer = 10000000;
X = [X1 X2];
[n, ~] = size(X);
for j = 1 : 1 : nif abs(H(X(j, 1), X(j, 2))) < answeranswer = abs(H(X(j, 1), X(j, 2)));i = j;end
end
%%%%%%%%%%% 更新答案
X1 = X1(i);
X2 = X2(i);
end
运行截图
  • 输入
>> syms x1 x2
>> f = x1 ^ 3 + x2 ^ 2;
>> h = x1 + x2 - 1;
>> [X1,X2]=EPM(f,h)
  • 输出
X1 =0.5486
X2 =0.4514
题目2 编写程序实现内点法(包含源代码和运行截图)

利用MatlabMatlabMatlab编写内点算法,实现下列优化问题的求解

{min⁡f(x)=x13+x22s.t. g(x)=x1+x2−1\left\{\begin{array}{l} \min f(x)=x_{1}^{3}+x_{2}^{2} \\ \text { s.t. } g(x)=x_{1}+x_{2}-1 \end{array}\right. {minf(x)=x13​+x22​ s.t. g(x)=x1​+x2​−1​

内点法函数源代码
function [X1, X2] = IPM(f, h)
%       IPM     内点法
%       f       目标函数
%       h       等式约束
R = 1;          %障碍因子R值
C = 0.1;        %倍率
eps =  0.001;   %误差
syms x1 x2;             %定义变量H = matlabFunction(log(h));%函数句柄
F = matlabFunction(f);%函数句柄
while trueG = f - R * log(h);    %构造函数G_x1 = diff(G,x1);      %求x1偏导G_x2 = diff(G,x2);      %求x2偏导X = solve(G_x1==0,G_x2==0,x1,x2); %解方程组X1 = real(double(X.x1));X2 = real(double(X.x2));if abs(R * H(X1, X2)) <= eps     % 判断终止条件breakendR = R * C;
end
%%%%%%%%%%%% 多个最优解则选择目标函数最小的
i = 1;
answer = 10000000;
X = [X1 X2];
[n, ~] = size(X);
for j = 1:1:nif F(X(j,1),X(j,2)) < answer && X(j,1)>0 && X(j,2)>0answer = F(X(j,1),X(j,2));i = j;end
end
%%%%%%%%%%% 更新答案
X1 = X1(i);
X2 = X2(i);
end
运行截图
  • 输入
>> syms x1 x2
>> f = x1 ^ 3 + x2 ^ 2;
>> h = x1 + x2 - 1;
>> [X1,X2]=IPM(f,h)
  • 输出
X1 =0.5486
X2 =0.4514
  • 运行截图

运行截图

  • 输入
>> syms x1 x2
>> f = x1 ^ 3 + x2 ^ 2;
>> h = x1 + x2 - 1;
>> [X1,X2]=IPM(f,h)
  • 输出
X1 =0.5486
X2 =0.4514

最优化内外点法matlab实现相关推荐

  1. matlab求二元函数极值算法_最优化计算与matlab实现(3)——进退法

    参考资料 <精通MATLAB最优化计算(第二版)> 数值实现 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 进退法 ...

  2. matlab优化算法案例分析与应用_最优化计算与matlab实现(18)——粒子群优化算法——权重改进的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 权重改进 ...

  3. c++分治法求最大最小值实现_最优化计算与matlab实现(12)——非线性最小二乘优化问题——G-N法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 非线性最 ...

  4. matlab length_【重点】最优化计算与matlab实现(20)——遗传算法

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 遗传算法 ...

  5. matlab nan变成0_最优化计算与matlab实现(17)——粒子群优化算法——带压缩因子的粒子群算法...

    参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录​zhuanlan.zhihu.com 带压缩因 ...

  6. 最优化算法与matlab应用3:最速下降法

    最优化算法与matlab应用3:最速下降法 最速下降法是一种沿着N维目标函数的负梯度方向搜索最小值的方法. (1)算法原理 函数的负梯度表示如下: 搜索步长可调整ak,通常记为 (第k次迭代的步长). ...

  7. matlab编程与最优化设计应用,MATLAB编程与最优化设计应用

    MATLAB编程与最优化设计应用 出版时间:2013年08月 定 价:59.00 I S B N :9787121210525 所属分类: 计算机•网络 &nbsp计算机•网络  >   ...

  8. 中点法 matlab,中点法解常微分方程(组)

    &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp 预备知识 常微分方程(组)的数值解 我们先来尝试用欧拉法解一 ...

  9. matlab 截断共轭梯度法,最优化作业 共轭梯度法 matlab代码

    syms f x1 x2 f=(1/2)*x1^2+x2^2; x=[2;1]; a=[1 0;0 2];% A g1=diff(f,x1); g2=diff(f,x2); g=[g1;g2];%导数 ...

  10. matlab 牛顿法 最优化,matlab最优化牛顿法

    最优化算法与MATLAB的Global Optimization Toolbox_计算机软件及应用_IT/计算机_专业资料.最优化算法与 MATLAB的Global Optimization Tool ...

最新文章

  1. 第5章 图像分类的数据集
  2. log4j配置报错:ERROR Failed to load driver.ClassNotFoundException.
  3. java dump分析工具_Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化...
  4. openwrt 更改 debug 等级(hostapd)
  5. datax mysql replace_DataX-MySQL(读写)
  6. 织梦网站服务器配置,织梦本地服务器配置
  7. android 行居中,android自己定义换行居中CenterTextView
  8. Java经典实例:实现一个简单堆栈
  9. 用友T6打开UFO报表提示登录失败
  10. 刷入第三方Recovery系统TWRP
  11. 现在的小程序,商家凭什么入驻你!
  12. 前后端分离的优势是什么?
  13. SRE 到底是干什么的??
  14. 如何添加Google统计在自己的网站
  15. 奥运五环的绘制-进阶
  16. 计算机网络技术思维导图Xmind
  17. 数据采集中的 全量采集,增量采集,差异采集
  18. 2021年第一天的祝福送给大家
  19. Android屏幕自适应
  20. 第18章异步编程-bloc-自定义状态管理示例-counter

热门文章

  1. web前端设计--二级菜单栏
  2. 对COM组件的调用返回了错误HRESULT E_FAIL
  3. 使用python和Modbus协议控制YK-08继电器
  4. Adminlte数据分页设置
  5. 机器学习与神经网络绪论
  6. Superset 实现可视化报表发布
  7. Sigmoid函数求导
  8. urlrewrite配置
  9. GeoServer发布矢量地图服务
  10. Cisco ASA 5585防火墙ASDM配置