优化设计-有约束复合型法-MATLAB编程求解

本文分享了一篇关于使用MATLAB编程解决有约束复合型法优化设计的作业,程序设计受到‘天涯铭’博主的单纯形法启发。在迭代过程中,程序加入了反射系数收缩次数限制,当无法找到可行反射点时会尝试使用次差点,并在必要时重构初始单纯形。程序运行结果显示最优点坐标及函数值,并附带了可行域图。
摘要由CSDN通过智能技术生成

优化设计-有约束复合型法-MATLAB编程求解

前段时间做的复合型法作业,分享到博客中,欢迎大家指点!
**PS:**本次复合型法编程受到了博主“天涯铭”在其博文《MATLAB多维极值之单纯形法》中单纯型法编程的启发,程序编写也借鉴了其单纯型法的编写思路。
(原文链接如下:https://blog.csdn.net/STM89C56/article/details/105725205

本文求解案例如下:
在这里插入图片描述

有约束复合型法迭代步骤(计算流程图)

个人编写的复合型法迭代步骤(计算流程图)如下图所示:

在这里插入图片描述

本程序增加了反射系数收缩次数的限制,在利用最差点求取反射点时,如果多次收缩反射系数后仍不能使得反射点位于可行域内(说明反射方向不利),则利用次差点进行反射点求取。若利用次差点在反射系数缩减一定次数内也无法使得反射点位于可行域内,则重新构造初始单纯型。

MATLAB主程序

主程序代码:

clear all;clc
%% 初始参数设定,求f最小值
syms x1 x2 x
f=120*x1+x2;% f 函数符号表达式
% 可行域条件在judge子函数中.m文件中
h=4;     % 初始单纯形构造因子
hi=1;    % 初始单纯型构造因子系数
alpha=1; %  alpha  反射因子
ai=0;    %  反射因子系数
gama=2;  %  gama   扩张因子
beta=0.5;%  beta   收缩因子
eps=5;%  eps    精度值
n = 0;  %迭代循环次数
m = 10000;  %初始精度差值
k = 0;  %数据记录
g = 0;  %操作记录
%% 构造初始单纯形
x0=[20 15];% 给定在可行域内初始点
x0=x0';
X(:,1)=x0;
Num_var_f=length(symvar(f));%二维函数
for i = 1:Num_var_f %二维函数,需要三个顶点坐标
    x = zeros(Num_var_f,1);%预分配内存
    x=x0;
    x(i) = x0(i) + h/hi;
    X(:,i+1)=x;% 将单纯形按列从左往右存储
end
for i = 1:Num_var_f+1
        F_val(i)=double(subs(f,symvar(f),X(:,i)'));
end
[F_sort,F_index]=sort(F_val);%从小到大排列函数
    % 最好点
    f_best_0=F_sort(1);
    X_best_0=X(:,F_index(1));
    % 最差点
    f_bad_n=F_sort(end);
    X_bad_n=X(:,F_index(end));
    % 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值