软件构造 设计和实现的约束_工程优化设计与Matlab实现——约束问题的直接解法(复合形法)...

约束问题的直接解法,像是在无约束问题的直接解法中加入了约束条件的判断。

随机方向法对应着坐标轮换法,而复合形法对应着单纯形法。

复合形法

复合形法与第二种单纯形法的相似度极高,请参见工程优化设计与Matlab实现——无约束问题的直接解法(二)中的第二种单纯形法。

复合形法的基本思路是在可行域内构造一个具有N个顶点的复合形,找出各顶点中的最坏点(函数值最大的点),再沿某一方向找到函数值下降的点来替换最坏点,得到新的复合形

有了单纯形法的基础,直接上流程图:

caf432eef12620406314d5744b09dce4.png
复合形法流程图

举栗子

利用复合形法求目标函数在约束条件下的极小值点和极小值

equation?tex=f%28x%29%3D1-2x_1-x_2%5E2%5C+%5C+%5C+%5C+%5C+%5C+%5C+%5C+%5C+x%5Cin+D

equation?tex=D%3A%5C+%5C+%5C+%5C+G_1%28x%29%3D6-x_1-x_2%5Cgeq+0+%5C+%5C+%3B%5C+%5C+G_2%28x%29%3Dx_1%5Cgeq+0%5C+%5C+%5C+%3B%5C+%5C+G_3%28x%29%3Dx_2%5Cgeq+0

主程序如下:

clc;
clear all;
close all;   

G1 = inline('6 - x(1) - x(2)','x');
G2 = inline('x(1)','x');
G3 = inline('x(2)','x');

lb = [0;0];      %下界
ub = [6;6];      %上界
weishu = 2;      %维数
E = 1e-8;

t1 = datetime;
[FuHeXingFa_x, FuHeXingFa_xf, FuHeXingFa_n] = FuHeXingFa(E, weishu, lb, ub, G1, G2, G3);
t2 = datetime;
fprintf('复合形法(根据上下界随机生成初始点)n')
fprintf('开始时间:%sn结束时间:%sn',t1,t2)
fprintf('极值点为:[%f, %f]n',FuHeXingFa_x)
fprintf('极值为:%fn',FuHeXingFa_xf)
fprintf('迭代次数为:%dnn',FuHeXingFa_n)  

目标函数定义如下:

function f = func(x)
    f = 1 - 2 * x(1) - x(2)^2;

复合形法函数定义如下:

function [FuHeXingFa_x, FuHeXingFa_xf, FuHeXingFa_n] = FuHeXingFa(E, weishu, lb, ub, G1, G2, G3)   

    N = 2 * weishu
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值