【最优化方法】实验四 约束最优化方法的MATLAB实现

实验的目的和要求:通过本次实验使学生较为熟练使用MATLAB软件,并能利用该软件进行约束最优化方法的计算。

实验内容:

1、罚函数法的MATLAB实现

2、可行方向法的MATLAB实现

学习建议:

本次实验就是要通过对一些具体问题的分析进一步熟悉软件的操作并加深对理论知识的理解。

重点和难点:

可行点和辅助函数选取。

一 罚函数法

用罚函数法解min f(x)=(x1-1)2+x22

​ S.T. g(x)=x2-1>=0

编写下面m文件

fahanshu.m

syms x1 x2 

f=(x1-1)^2+x2^2;

g=x2-1;

x=[x1;x2];

x0=[0;0];

e=0.0001;M=1;

while abs(subs(g,x,x0))>e

  if subs(g,x,x0)<0

​    Q=f+M*g^2;

  else 

​    Q=f;

  end

  x0=xzNewton(Q,x,x0,0.0001);

  M=10*M;

end

x0

运行得:fahanshu

x0 =

1.0000

0.9999

与理论值x=[1;1]很接近。

二 投影梯度法

1.梯度投影法基本原理和步骤

思想:当迭代点是可行域的内点时,将目标函数负梯度作为搜索方向,当迭代点在可行域边界上时,将目标函数负梯度在可行域边界上的投影作为搜索方向。无论何种情况,所构造的方向都是可行下降方向。然后在可行域内沿该方向进行最优一维搜索得到新的迭代点。

img

img

MATLAB实现:

2.代码及数值算例:

(1) 程序源代码:

function [ X,FMIN,K ] = tidutouying( f,A,b,x1,x,e )

%  [ X,FMIN,K ] = tidutouying( f,A,b,x1,e ) 梯度投影法

%  f  目标函数

%  A  约束矩阵  b 右端项

%  x1 初始点 x 自由变量

%  e  精度要求

%  X  极小点

%  FMIN 极小值

%  K  迭代次数

%  张超编写与2014/5/3

count=1;

n=length(x1);

tf=jacobian(f,x)';

while 1

  [A1,A2,b1,b2,k]=fenjie(A,b,x1);

  while 1

  M=A1;

  if isempty(M)

​    P=eye(n);

  else

​    P=eye(n)-M'*(M*M')^(-1)*M;

  end

  Pk=-P*subs(tf,x,x1);

  if norm(Pk)<=e

​    if isempty(M)

​      x1;break;else

​      W=(M*M')^(-1)*M*subs(tf,x,x1);

​      u=W;if min(u)<0for i=1:length(u)if u(i)==min(u)j=i;endendA1(j,:)=[];else 

​        x1;break;endend

  else

​    b_=b2-A2*x1;

​    P_=A2*Pk;for i=1:length(P_)if P_(i)<0r(i)=b_(i)/P_(i);elser(i)=10000;endend

​    rmax=min(r);

​    syms t

​    y=x1+t*Pk;ft(t)=subs(f,x,y);[r1]=find0618(ft,0,double(rmax),0.00001);

​    x1=x1+r1*Pk;break;

  end

  end

  count=count+1;

  if isempty(M)    

   break;

  end

  if min(u)>=0break;

  end

end

 X=x1;

 FMIN=subs(f,x,X);

 K=count;

end

 

function [A1,A2,b1,b2,k ] = fenjie( A,b,x )

% 分解起作用约束

A=A;

 b=b;

 x0=x;

 k=0;q=0;

s=size(A);

A1=zeros(s(1),s(2));

 A2=zeros(s(1),s(2));

 b1=zeros(s(1),1);

 b2=zeros(s(1),1);

 for i=1:s(1)

  gi=A(i,:)*x0-b(i);

  if abs(gi)<0.0000001 

​    k=k+1;A1(k,:)=A(i,:);b1(k,1)=b(i);

  else 

​    q=q+1;A2(q,:)=A(i,:);b2(q,1)=b(i);

  end

 end

if k>0

  A1=A1(1:k,:);

  b1=b1(1:k,:);

else

  A1=[];

end

if q>0

  A2=A2(1:q,:);

  b2=b2(1:q,:);

end 

end

(2) 数值算例:

Min f(x)= 2*x1^2+2*x2^22*x1*x2 – 4*x1 – 6*x2

S.T. –x1 – x2>=2

–x1 – 5*x2>=5

x1>=0

x2>=0

初值x0=[0;0]

在matlab command window里输入

syms x1 x2 

f=2*x1^2+2*x2^2-2*x1*x2-4*x1-6*x2;

A=[-1 -1;-1 -5;1 0;0 1];

b=[-2;-5;0;0];

x1=[0;0];

x=[x1;x2];

e=0.01;

[X,FMIN,K]=tidutouying(f,A,b,x1,x,e)

 

X =

  1.1292

  0.7742

FMIN =

  -7.1613

N =

  16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/658968.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

942. 增减字符串匹配 - 力扣

1. 题目 由范围 [0,n] 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s &#xff0c;其中: 如果 perm[i] < perm[i 1] &#xff0c;那么 s[i] I 如果 perm[i] > perm[i 1] &#xff0c;那么 s[i] D 给定一个字符串 s &#xff0c;重构排列 pe…

新能源汽车推行精益生产:绿色动力下的效率革命

在新能源汽车行业迅猛发展的当下&#xff0c;推行精益生产已成为提升竞争力的关键所在。精益生产&#xff0c;作为一种以客户需求为导向、追求流程最优化和浪费最小化的管理理念&#xff0c;正逐步在新能源汽车领域展现出其独特的魅力。 新能源汽车的兴起&#xff0c;不仅代表了…

【云原生】kubernetes中Configmap原理解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Python中tkinter入门编程9

在《Python中tkinter编程入门8-CSDN博客》中提到&#xff0c;tkinter中的Canvas表示画布&#xff0c;可以在画布中显示文字和图片。除了以上功能外&#xff0c;还可以在Canvas中添加对鼠标或键盘的响应。 1 为Canvas添加事件响应 可以通过Canvas的bind()方法添加对鼠标或键盘…

深圳比创达电子|EMC与EMI滤波器:电子设备的“电磁防护罩”

在电子科技日新月异的今天&#xff0c;电磁兼容性&#xff08;EMC&#xff09;问题越来越受到工程师和技术人员的关注。其中&#xff0c;电磁干扰&#xff08;EMI&#xff09;和电磁干扰抑制&#xff08;即EMI滤波器&#xff09;是实现良好EMC性能的关键技术之一。 一、EMC与E…

1218. 最长定差子序列

1218. 最长定差子序列 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_1218最长定差子序列 错误经验吸取 原题链接&#xff1a; 1218. 最长定差子序列 https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-differen…

FlashRAG

文章目录 一、关于 FlashRAG特点 ✨&#x1f527; 安装 二、快速入门&#x1f3c3;1、Toy Example2、使用现成的管道3、建立自己的管道4、只需使用组件 三、组件⚙️1、RAG 组件2、管道 四、支持方法&#x1f916;五、支持数据集&#x1f4d3;六、其他常见问题解答 &#x1f64…

MT3049 区间按位与

思路&#xff1a; 使用ST表。ST表模板可参考MT3024 maxmin 注意点&#xff1a;此题范围较大&#xff0c;所以要避免超时。 ①使用 ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); 加快输入输出速度。 ②换行使用\n而不是endl 代码&#xff1a; 1.暴力6/8 #…

图片怎么批量重命名从1到50?这3个方法一键改名

图片怎么批量重命名从1到50&#xff1f;图片批量重命名从1到50的过程不仅提高了我们处理大量图片文件的效率&#xff0c;还大大简化了命名过程&#xff0c;让我们能更加有条理地管理和存储图片。通过使用各种专业的工具和方法&#xff0c;我们可以轻松实现图片文件的自动化命名…

微信小程序代码加固教程后台接口防止别人乱调用

最近开发了一个小程序前端开发前端和后台花了1个多月时间开发&#xff0c;结果被人轻松的把微信小程序前端代码破解出来。而且完整一个字不差截图给我看了。 小程序是前后端都分离的&#xff0c;如果后端不作验证&#xff0c;别人把你的小程序前端扒了接口也暴露了&#xff0c;…

玩转STM32-通用同步/异步收发器USART(详细-慢工出细活)

CPU与外围设备之间的信息交换或计算机与计算机之间的信息交换称为通信。基 本的通信方式有两种&#xff0c;即并行通信和串行通信。文章目录 一、串行通信基础1.1 串行通信的方式1.2 串行通信的数据传输形式1.3 波特率 二、STM32的USART的结构特征&#xff08;了解&#xff09;…

现在怎么做抖店才能赚钱?这四个重要建议,你千万不能忽略!

大家好&#xff0c;我是电商花花。 现在目前看抖音小店前景和红利依然有很大的市场空间&#xff0c;抖音小店平台流量大&#xff0c;商家入驻门槛低&#xff0c;抖店的运营技术也不像其它传统电商平台那么高。 所以&#xff0c;当下抖音小店仍然是流量大&#xff0c;机遇多。…

使用手机短信恢复软件,完成从新手到专家的进阶之路

由于各种原因&#xff0c;如误删、手机设备损坏等&#xff0c;我们可能会面临重要短信丢失的风险。现在市面上有许多手机短信恢复软件可以帮助我们解决这个问题&#xff0c;但从新手到专家的进阶之路并非一蹴而就的过程&#xff0c;它需要耐心、实践和不断地学习。以下是一篇关…

开源集运wms系统

集运WMS系统是一种专为集运业务设计的仓库管理系统&#xff0c;它能够高效地处理来自多个来源的货物&#xff0c;优化存储和发货流程。 经过长时间的开发和测试&#xff0c;推出了我的集运WMS系统。它不仅具备传统WMS系统的所有功能&#xff0c;还针对集运业务的特点进行了特别…

【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析

&#x1f525; 个人主页&#xff1a;空白诗 &#x1f525; 热门专栏&#xff1a;【JavaScript】 文章目录 &#x1f33f; 引言五、 Destructuring Assignment - 解构赋值&#xff0c;数据提取的艺术 &#x1f3a8;&#x1f4cc; 数组解构&#x1f4cc; 对象解构&#x1f4cc; 特…

matlab生成波形然后采样,FPGA写testbench读取数据

一、在matlab产生激励 fs1000; % 这个是路数 M16; % 这个是FFT的点数&#xff0c;64K L65536; % 将N写为两个整数乘积的形式&#xff0c;即N ML&#xff0c;(log2 M和log2 L都为正整数) NM*L; % 这段 MATLAB 代码是用来生成一个时间序列的&#xff0c; % 该时间序列从0开…

一次性把“AI 原生应用技术栈”说明白

AI 当前有多火爆不用介绍了&#xff0c;随着各个厂商的努力&#xff0c;也慢慢浮现了有价值的应用&#xff0c;以及为更好的服务 AI 原始应用准备的各种平台产品。今天这篇简单介绍下当前业界最新的 AI 原生应用技术栈。 特别声明&#xff1a;AI 技术还在快速发展过程中&#…

数据可视化分析工具DataEase

本文软件由网友 雨林 推荐&#xff0c;老苏稍微研究了一下 DataEase 的安装&#xff0c;具体的使用教程&#xff0c;请参考官方的在线文档和教学视频 什么是 DataEase &#xff1f; DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#x…

新品发布(仓库小助手)一机在手,轻松无忧

你是否曾为繁琐的货物管理而烦恼&#xff1f; 你是否为了记录货物信息忙前忙后&#xff1f; 近几年&#xff0c;陆续有收到客户在运营跨境代购中的一些反馈&#xff0c;特别是仓库管理这块&#xff0c;比如包裹的出入库、移库、修改包裹信息等&#xff0c;都需要在电脑上完成&…

HTML新春烟花盛宴

目录 写在前面 烟花盛宴 完整代码 修改文字