MATLAB:非线性规划fmincon
1.非线性规划的形式:
其中x是一个列向量,st中前两项为线性约束条件,后两项为非线性约束条件。
在MATLAB中fmincon是用于求解非线性多远函数的最小值的函数,这里介绍fmincon的其中一种语法格式:
[x,fval,exitflag,output]=fmincon[目标函数f(x)调用,x的初值,A,b,Aeq,beq,lb,ub,非线性约束函数调用]。
如果最终算出的exitflag=1,即过程成功收敛的话,x的初值在赋值时是不受影响的。
且:
1----A,b,Aeq,beq分别为线性约束条件不等式的系数矩阵,线性约束条件不等式中的右值,线性约束条件灯饰的系数矩阵和线性约束条件等式中的右值。lb,ub分别为x的最小值和x的最大值。以上如果有不存在的项用[]表示。
2----fmincon需要用到函数的调用
建立目标函数方式如下:a.新建一个m文件,作为目标函数的存放地点。
b.输入:function f=文件名(x)【这里f是函数返回的函数值,x是一个列向量】
f=目标函数f(x)
end
c.【点击保存时文件会自动改成在a步设置的名字】
封装非线性的约束函数方式如下:a.新建一个m文件,作为非线性的约束函数的封装地点。
b.输入: function [h,g]=文件名(x)
h=c(x)
g=ceq(x)
end
c.【此处h为非线性不等式的约束条件,g为非线性等式的约束条件。当约束条件不止一个是可以写成h(1),h(2)...,g(1),g(2)...的形式。同理,x代表一个列向量,当列向量有多个元素时也要写成x(1),x(2)的形式。】
下面举个例子:
.
程序:
1.目标函数的引用:文件:myfun1.m
function f=myfun1(x)【注意这个地方后面不能加分号】
f=x(1)^2+x(2)^2+8;
end
2.非线性约束函数的引用:文件:myfun2.m()
function [h,g]=myfun2(x)
h=-x(1)^2+x(2);
g=-x(1)-x(2)^2+2;
end
以上的x都代表向量[x1,x2],但不能这样写
主函数:
[x,fval,exitflag,output]=fmincon('myfun1',[0 1],[],[],[],[],zeros(2,1),[],'myfun2')
运行结果:
x =
1.0000 1.0000
fval =
10
exitflag =
1
output =
iterations: 8
funcCount: 36
stepsize: 1
algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
firstorderopt: 1.3655e-007
cgiterations: []
message: [1x144 char]
MATLAB:非线性规划fmincon的更多相关文章
- Matlab非线性规划
非线性规划 在matlab非线性规划数学模型可以写成一下形式: \[ minf(x)\\ s.t.\begin{cases} Ax \le B \\ Aeq·x = Beq\\ C(x) \le 0\ ...
- 『转载』Matlab中fmincon函数获取乘子
Matlab中fmincon函数获取乘子 一.输出结构 [x,fval,exitflag,output,lambda] = fmincon(......) 二.结构说明 lambda结构 说 ...
- matlab中fmincon函数求解非线性规划问题
Matlab求解非线性规划,fmincon函数的用法总结 1.简介 在matlab中,fmincon函数可以求解带约束的非线性多变量函数(Constrained nonlinear multivari ...
- Matlab 非线性规划问题模型代码
非线性规划问题的基本内容 非线性规划解决的是自变量在一定的非线性约束或线性约束组合条件下,使得非线性目标函数求得最大值或者最小值的问题. 当目标函数为最小值时,上述问题可以写成如下形式: \[ \mi ...
- 直线电机设计与优化(TFLM,FSLM)论文阅读笔记3
2.21-(2.7论文引出)傅里叶对开关磁通电机建模 Modeling of Flux Switching Permanent Magnet Machines With Fourier Analysi ...
- MATLAB规划问题——线性规划和非线性规划
1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...
- 非线性规划的Matlab 解法
编写M 文件fun1.m 定义目标函数 function f=fun1(x); % 定义目标函数 f=sum(x.^)+; % .^2是矩阵中的每个元素都求平方.^2是求矩阵的平方或两个相同的矩阵相乘 ...
- 非线性规划问题的matlab求解
函数:[x, fval] = fmincon(FUN, X0, A, B, Aeq, Beq, LB, UB, NONLCON) 返回的x:是一个向量——在取得目标函数最小时各个xi的取值: 返回的f ...
- [matlab] 16.多约束非线性规划 ga工具箱解决 [带不等式约束]
下面举例说明如何运用GA工具箱求解多约束非线性规划问题: function f =fitness(x) f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2 ...
随机推荐
- ie下,首页打开页面非常慢
手里的项目,登录页面在IE下首次进入页面非常的慢,应该不只是登录页面,因为项目我也是半路接手的.开始以为是js的问题,后台把所有的代码都去掉,就一个空白的页面,然后慢慢的试试,最后才发现是一个CSS文 ...
- 【python】对于程序员来说,2018刑侦科推理试卷是问题么?
最近网上很火的2018刑侦科推理试卷,题目确实很考验人逻辑思维能力. 可是对于程序员来说,这根本不是问题.写个程序用穷举法计算一遍即可,太简单. import itertools class Solu ...
- vue中的v-model原理,与组件自定义v-model
VUE中的v-model可以实现双向绑定,但是原理是什么呢?往下看看吧 根据官方文档的解释,v-model其实是一个语法糖,它会自动的在元素或者组件上面解析为 :value="" ...
- Altera培训SignalTap II的使用--笔记
培训的内容有点多(啰嗦)(笔记为截图) 听课笔记:Altera培训SignalTap II的使用--笔记
- Numpy基础(数组创建,切片,通用函数)
1.创建ndarray 数组的创建函数: array:将输入的数据(列表,元组,数组,或者其他序列类型)转换为ndarray.要么推断出dtype,要么显式给定dtype asarray:将输入转换为 ...
- <知识整理>2019清北学堂提高储备D2
简单数据结构: 一.二叉搜索树 1.前置技能: n/1+n/2+……+n/n=O(n log n) (本天复杂度常涉及) 2.入门题引入: N<=100000. 这里多了一个删除的操作,因此要 ...
- CSS设置透明背景
filter: alpha(opacity=40); background-color: rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0.4); 通过改 ...
- 微信小程序、SSL证书、开启服务器TSL1.0、TSL1.1、TSL1.2服务
微信小程序.SSL证书.开启服务器TSL1.0.TSL1.1.TSL1.2服务 https://blog.csdn.net/qq_32933615/article/details/70143105
- 克隆虚拟机启动网卡提示错误 Device eth0 does not seem to be present, delaying initialization
错误原因: 克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变.而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的信息 ...
- C++模板声明与实现分开--由此想到的编译,链接原理
参考了以下两篇文章: C++编译链接原理简介 语言程序编译过程 2 问题来源:当模板文件的实现与声明分开在不同文件中时,链接时会提示找不到相应模板函数,如下 一,编译和链接的大概原理: 1,编译,遍 ...