约束优化问题的罚函数求解方法
约束优化问题的罚函数求解方法(外罚)
惩罚函数法是求解有约束的最优化问题的一种算法。
惩罚函数法的要旨是将一个有约束的最优化问题转化为一系列的无约束问题;这些无约束问题由原问题及罚函数,再加上惩罚因子组成;而且,这些无约束问题的解会收敛于所求问题的解。
算法和步骤
程序和示例
写一个程序用罚函数方法求解:
计算前两部迭代的结果,也就是x1x1x_1和x2x2x_2。
clc
clear
%这个算法可能会收敛到局部极值点
f = @(t) t(1)+t(2);
c = @(t) t(1)^2 + t(2)^2 - 2;
Ce = [c];%等式约束
%Ci=[] 不等式约束,先不考虑这一部分
alpha = 2;
sigma0 = 10;
eps = 0.00001;
x0 = [-10,10]';%初始点要选在可行域外,外点法[xk,k] = penalty(f,Ce,x0,sigma0,alpha,eps);function [xk,k] = penalty(f,Ce,x0,sigma0,alpha,eps)
P = @(x) sum(Ce(x).^alpha);
H0 = [1 0;0 1];
epsilon = 0.00001;
sigma = sigma0;
xk = x0;
k = 0;
c = 2;
while abs(sigma*P(xk))>= eps
F = @(x) f(x)+ sigma*P(x);
%syms x1 x2;simplify(F([x1,x2]));
%xk = quasi_Newton(F,xk,epsilon,H0,'BFGS');
warning off;
xk = fminunc(F,xk);
%xk = fmincon(f,xk,[],[],[],[],[],[],@mycon)
sigma = c*sigma;
k = k+1;
xk
endend
选定参数如下:
\alpha = 2; \sigma_0 = 10; \epsilon = 0.01; x_0 = [-10,10]^T;%初始点要选在可行域外
计算得到 x1=(−1.0179,−0.9942)T,x2=(−1.0031,−1.0031)Tx1=(−1.0179,−0.9942)T,x2=(−1.0031,−1.0031)Tx_1 = (-1.0179,-0.9942)^T,x_2 = (-1.0031,-1.0031)^T。
遇到的问题,求解无约束优化问题时,想用我原来的BFGS方法,但是结果趋于无穷。仔细分析原因,因为某个时刻ykyky_k项为0,导致了BFGS方法中γk=1/yTkskγk=1/ykTsk\gamma_k=1/y_k^Ts_k趋向了无穷。那么,在BFGS方法中,如何保证ykyky_k项不为0呢?
约束优化问题的罚函数求解方法相关推荐
- 求解非约束优化问题的拟牛顿方法(BFGS、DFP)
求解非约束优化问题的拟牛顿方法(BFGS.DFP) 拟牛顿法是一种以牛顿法为基础设计的,求解非线性方程组或连续的最优化问题函数的零点或极大.极小值的算法.当牛顿法中所要求计算的雅可比矩阵或Hessia ...
- 凸优化之有等式约束的优化问题的求解方法
有等式约束的优化问题的求解方法 对数障碍 log barrier \text{log barrier} log barrier 首先, 介绍一下 log barrier \text{log barri ...
- 非线性规划MATLAB求解原理,专题六--非线性规划介绍及其Matlab求解方法.ppt
迭代法一般步骤 注意:数值求解最优化问题的计算效率取决于确定搜索方向P (k)和步长 的效率. Matlab求解方法简介 Step3: 利用(3)式或其它一维搜索的方法求 计算 然后令k:=k+1, ...
- 外点罚函数法的MATLAB实现,一、非线性规划问题的几种求解方法1罚函数法(外点法).ppt...
您所在位置:网站首页 > 海量文档  > 高等教育 > 微积分 一.非线性规划问题的几种求解方法1罚函数法(外点法). ...
- 非线性最小二乘问题的求解方法(一)
非线性最小二乘问题的求解方法(一) 1.非线性最小二乘问题 2.下降方法 2.1 梯度法 2.2 牛顿法 2.3 线性搜索 2.4 信赖域和阻尼算法 附录 Cholesky's method 本文仅仅 ...
- 《C语言程序设计:问题与求解方法》——3.8节不同类型数据之间的类型转换
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.8节不同类型数据之间的类型转换,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号 ...
- 《C语言程序设计:问题与求解方法》——3.9节常见编程错误
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.9节常见编程错误,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 3.9 ...
- 《C语言程序设计:问题与求解方法》——1.4节本章习题
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第1章,第1.4节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 一 ...
- 《C语言程序设计:问题与求解方法》——0.5节本章习题
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第0章,第0.5节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 1 ...
最新文章
- Hibernate4.x之Session
- 简述数据字典的结构及其作用_数据结构——树基本概念及其遍历
- web python php golang_python go 语言完成最简单的web应用
- SAP gateway处理multiple key的逻辑
- Redis集群监控RedisClusterManager
- JS之字符串连接方法join
- 李彦宏、王海峰等成为工程院院士候选人选
- linux读取U盘操作
- Objective C 的 private
- Python 标准库 xml 详解
- 色彩搭配原理与技巧?
- 航天器平台二次电源系统的可靠性设计
- 大数据培训课(体验) Day02
- 四.驱动框架入门之LED(中)
- Redis哨兵原理详解
- 他来了他来了,英伟达发布全新Hopper架构GPU“H100”4nm制程800亿晶体管
- 喜大普奔!GitHub App 终于支持中文了,可尝鲜下载体验!
- 第一批90后30岁了,该有多少存款?
- python导入pyx文件_初学Python,只会写简单的代码。手头有份Python代码,但是调用C模块生成的.pxd和.pyx文件,运行过程总报错,希望大神指点,调试前该做哪些工作呢?...
- python中print无法打印在控制台输出_Pycharm Python控制台不打印输出
热门文章
- 操作系统开发--Hello OS-开始操作系统开发
- Log4Qt的基本使用
- 微盾php脚本加密算法,微盾PHP加密专家(PHPCodeLock)
- 比windows自带快百倍的文件查找工具-Everything
- 华为EchoLife HG522-C猫破解过程
- 2021年全球维生素C(抗坏血酸)收入大约1429.3百万美元,预计2028年达到1957.3百万美元
- 吃鸡神曲计算机谱子,老年乐队自制乐器激情演奏“吃鸡战歌” :成员平均年龄70岁...
- react——利用jszip实现文件批量下载并打包成zip文件
- [生存志] 第40节 管仲经济纵横
- Words 2016.9.4