方法一:外点牛顿法:

clc

m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);%a b为最优点坐标,f0为最优点函数值,f1 f2最优点梯度。

syms x1 x2 e; %e为罚因子。

m(1)=1;c=10;a(1)=0;b(1)=0; %c为递增系数。赋初值。

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

fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');%求偏导、海森元素。

for k=1:100 %外点法e迭代循环.

x1=a(k);x2=b(k);e=m(k);

for n=1:100 %梯度法求最优值。

f1=subs(fx1); %求解梯度值和海森矩阵

f2=subs(fx2);

f11=subs(fx1x1);

f12=subs(fx1x2);

f21=subs(fx2x1);

f22=subs(fx2x2);

if(double(sqrt(f1^2+f2^2))<=0.001) %最优值收敛条件

a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f));

break;

else

X=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';

x1=X(1,1);x2=X(2,1);

end

end

if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) %罚因子迭代收敛条件

a(k+1) %输出最优点坐标,罚因子迭代次数,最优值

b(k+1)

k

f0(k+1)

break;

else

m(k+1)=c*m(k);

end

end

方法二:外点梯度法:

clc

m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);

syms d x1 x2 e;

m(1)=1;c=10;a(1)=0;b(1)=0;

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

fx1=diff(f,'x1');

fx2=diff(f,'x2');

for k=1:100

x1=a(k);x2=b(k);e=m(k);

for n=1:100

f1=subs(fx1);

f2=subs(fx2);

if(double(sqrt(f1^2+f2^2))<=0.002)

a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f));

break;

else

D=(x1-d*f1)^2+(x2-d*f2)^2+e*(1-(x1-d*f1))^2;

Dd=diff(D,'d'); dd=solve(Dd); x1=x1-dd*f1; x2=x2-dd*f2;

end

end

if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001)

a(k+1)

b(k+1)

k

f0(k+1)

break;

else

m(k+1)=c*m(k);

end

end

2,用内点法求下列问题的最优解

内点牛顿法

clc

m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);

syms x1 x2 e;

m(1)=1;c=0.2;a(1)=2;b(1)=-3;

f=x1^2+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1)); f0(1)=15;

fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');

for k=1:100

x1=a(k);x2=b(k);e=m(k);

for n=1:100

f1=subs(fx1);

f2=subs(fx2);

f11=subs(fx1x1);

f12=subs(fx1x2);

f21=subs(fx2x1);

f22=subs(fx2x2);

if(double(sqrt(f1^2+f2^2))<=0.002)

a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs(f));

break;

else

X=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';

x1=X(1,1);x2=X(2,1);

end

end

if(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001)

a(k+1)

b(k+1)

k

f0(k+1)

break;

else

m(k+1)=c*m(k);

end

end

内点法外点法matlab代码,分享:惩罚函数法(内点法、外点法)求解约束优化问题最优值...相关推荐

  1. (论文复现,matlab代码分享,可运行)改进遗传算法求解农业水资源调度问题

    问题简介 目前国内外现有的渠道优化配水模型都是在下级渠道配水流量相等这一假定条件的基础上建立的.这与 绝大多数渠系实际配水要求不相符合.针对这一问题,建立了下级渠道引水流量不等情况下的渠道优化配水模型 ...

  2. arima模型matlab代码_PSTR面板平滑转换模型简介(附Matlab代码分享)

    写论文的时候用到的~相关的资料太少了,做一些简单内容和资料的分享.(PSTR模型的Matlab代码分享在最后)本文主要为简单理论和粗暴实操~ 有用的话可以点个赞哟(知乎小白卑微求赞) 嘻嘻下面进入正题 ...

  3. (MATLAB代码分享,可运行)基于改进遗传算法的柔性作业车间调度优化研究

    问题描述 柔性加工车间,一个工件的单个工序的加工机床可以由多台机床完成,一个机床可以加工多种工件. 多目标优化的时候,加权系数暂定a=1,b=1; a+b=1,a=0.6或0.7或,0.8 单目标的时 ...

  4. 热动力数据MATLAB代码分享

    DSC 数据拟合和转化率计算 本文介绍 补充说明 热动力学介绍 拟合采用kissinger方程 拟合过程代码 拟合结果展示 通过计算,输出反应结果和拟合的r^2大小 反应转率介绍 反应产物转化计算程序 ...

  5. 经验分享 | SEN+Mk趋势分析(matlab代码分享)

    代码分享 方法介绍:Sen 斜率估计用于计算趋势值,通常与MK非参数检验结合使用.即首先计算Sen趋势值,然后使用MK方法判断趋势显著性 示例:1984-2018NDVI年最大值趋势分析 注意:在对N ...

  6. 惩罚函数内点法c语言,分享:惩罚函数法(内点法、外点法)求解约束优化问题最优值...

    方法一:外点牛顿法: clc m=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);%a b为最优点坐标,f0为最优点函数值,f1 f2最优 ...

  7. (matlab代码分享,可运行) 多技能员工排班调度多目标优化(技能熟练度包含学习型、遗忘型)(Part 1)

    一.技能值不变的多技能员工调度优化模型 1.问题描述 对于企业管理者来说,如何合理的分配员工去完成任务,是降低企业运行费用,提升企业产品开发的重要手段.现代化企业需要制定一套科学的方法对员工进行任务分 ...

  8. 路径规划的最优控制Matlab代码分享

    这段代码使用Matlab中的fmincon函数来解决一个优化问题,使受约束的代价函数最小化.代价函数表示系统状态与期望路径和控制输入之间的偏差.约束将控制输入限制在指定的范围内.然后使用优化的控制输入 ...

  9. 内点惩罚函数法matlab_拉格朗日乘数法求解多元条件极值问题

    点击蓝字,关注废柴姐姐 拉格朗日乘数法 " 一种不直接依赖消元法而求解条件极值问题的有效方法 二元函数入手 我们从  皆为二元函数这一简单情况人手. 欲求函数 的极值,其中受条件 的限制. ...

  10. MATLAB 代码资料大全

    目录 1. 官方代码网址 2. 其他代码网址 参考 附录 1. 官方代码网址 1. https://cn.mathworks.com/matlabcentral/fileexchange/ 2. 其他 ...

最新文章

  1. 插入排序的Python实现
  2. Jetson nano安装JupyterLab
  3. 【Flutter】ListView 列表高级功能 ( ScrollController 上拉加载更多 )
  4. Cortex-M3内核中的异常
  5. Python ValueError: IO operation on closed file
  6. SAP License:家装ERP
  7. 视频全程:哈萨比斯首次公开解读AlphaZero
  8. Xcode学习C++(一项目的建立)
  9. 设置Emeditor为Python的简易开发工具
  10. atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表
  11. GhostNet论文
  12. tp6常用功能整理(本人刚学习tp6遇到的常见问题)
  13. linux yum用法,Linux系统yum的使用与说明
  14. QQ隐藏图原理与C#实现(含源文件)
  15. 最近看中的几款Limitless的家具
  16. 操作系统——段式存储管理
  17. 基于共现提取人民的民义人物关系
  18. 【安卓学习之第三方库】异常上报 库(Crash搜集)
  19. 学习笔记-ThinkPHP总结
  20. 计算机教学论文的主题,计算机英语Web Quest主题教学思路

热门文章

  1. 【面向对象】第三单元规格化设计总结——JML
  2. java电影购票系统_基于Java的电影院购票系统
  3. USB接线定义和链接摄像头
  4. 神经网络中经常使用的激活函数--sigmoid函数
  5. Maxwell安装、配置、脚本制作
  6. 优化方法总结(梯度下降法、牛顿法、拟牛顿法等)
  7. 线性代数 向量 知识技巧思维导图 [21考研上岸之旅]
  8. cat5e跑万兆_cat5e网线支持千兆吗?
  9. 一台计算机重量,一台重量仅为1.85kg的游戏本 机械师F117毒药
  10. Android 测试