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的更多相关文章

  1. Matlab非线性规划

    非线性规划 在matlab非线性规划数学模型可以写成一下形式: \[ minf(x)\\ s.t.\begin{cases} Ax \le B \\ Aeq·x = Beq\\ C(x) \le 0\ ...

  2. 『转载』Matlab中fmincon函数获取乘子

    Matlab中fmincon函数获取乘子 一.输出结构 [x,fval,exitflag,output,lambda] = fmincon(......) 二.结构说明 lambda结构 说     ...

  3. matlab中fmincon函数求解非线性规划问题

    Matlab求解非线性规划,fmincon函数的用法总结 1.简介 在matlab中,fmincon函数可以求解带约束的非线性多变量函数(Constrained nonlinear multivari ...

  4. Matlab 非线性规划问题模型代码

    非线性规划问题的基本内容 非线性规划解决的是自变量在一定的非线性约束或线性约束组合条件下,使得非线性目标函数求得最大值或者最小值的问题. 当目标函数为最小值时,上述问题可以写成如下形式: \[ \mi ...

  5. 直线电机设计与优化(TFLM,FSLM)论文阅读笔记3

    2.21-(2.7论文引出)傅里叶对开关磁通电机建模 Modeling of Flux Switching Permanent Magnet Machines With Fourier Analysi ...

  6. MATLAB规划问题——线性规划和非线性规划

    1.线性规划 求线性规划问题的最优解有两种方法,一种方法是使用linprog命令,另一种是使用optimtool工具箱,下面分别介绍这两种方法. ①linprog命令 一般情况下,Linprog命令的 ...

  7. 非线性规划的Matlab 解法

    编写M 文件fun1.m 定义目标函数 function f=fun1(x); % 定义目标函数 f=sum(x.^)+; % .^2是矩阵中的每个元素都求平方.^2是求矩阵的平方或两个相同的矩阵相乘 ...

  8. 非线性规划问题的matlab求解

    函数:[x, fval] = fmincon(FUN, X0, A, B, Aeq, Beq, LB, UB, NONLCON) 返回的x:是一个向量——在取得目标函数最小时各个xi的取值: 返回的f ...

  9. [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 ...

随机推荐

  1. 封装插件并发布到npm的历程

    1.封装插件 2.使用webpack打包的时候发生了很多问题 3.过程很反复 4.但最终还是发布成功了

  2. 七夕-心形表白-简单css代码

    今天你要和谁过? 今天你要怎么过?? 今天去哪里吃??? 公司的三连问,对于一些单身狗有点招架不住啊. 在此送上一个薄礼,来安慰下受伤的心灵... 确定是安慰不是连环打击嘛..... 回答:确定! 来 ...

  3. 适用于填空题出题 的随机算法 PHP

    <?php #寻找一个满足给定空数和题数要求的随机方案,事先需统计出每题空格数情况队列$m_blk,以及这些题分别有多少个$m_que. #以下算法将找到一个随机方案,若未找到将返回假值,如果不 ...

  4. Vue最常用的组件通讯有三种:父->子组件通讯、子->父组件通讯,兄弟组件通讯.(template用的pug模板语法)

    Vue组件通讯   Vue最常用的组件通讯有三种:父->子组件通讯.子->父组件通讯,兄弟组件通讯.(template用的pug模板语法) 1.父->子组件通讯 父->子组件通 ...

  5. Serverless Kubernetes入门:对kubernetes做减法

    背景 Kubernetes作为通用的容器编排系统,承载了广泛的应用和场景,包括CI/CD,数据计算,在线应用,AI等,然而由于其通用性和复杂性,管理一个kubernetes集群对于很多用户而言还是充满 ...

  6. Java 内存屏障

    内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题.Java编译器也会根据内存屏障的规则禁止重排序. 内 ...

  7. 特征提取算法(1)——纹理特征提取算法LBP

    模式识别中进行匹配识别或者分类器分类识别时,判断的依据就是图像特征.用提取的特征表示整幅图像内容,根据特征匹配或者分类图像目标. 常见的特征提取算法主要分为以下3类: 基于颜色特征:如颜色直方图.颜色 ...

  8. [CSP-S模拟测试]:e(树上主席树)

    题目传送门(内部题66) 输入格式 第一行,一个正整数$n$,一个自然数$q$,一个整数$type$.第二行,$n$个正整数,代表$a_i$.接下来$n-1$行,每行两个正整数$u$.$v$,代表树中 ...

  9. mui.ajax中文乱码

    估计这是个bug: //mui 的 ajax 中文乱码 var url = 'http://api.juheapi.com/japi/toh?key=1f26c107d8864bdfb98202bc3 ...

  10. HTML To Word

    一.源码特点       1.在一些实际的应用场景中,有用户需要将一批规范的资料网页保存为WORD文档以便离线传阅或用于其它需求.在此之前,使用了OFFICE组件来尝试完成此功能需求,但是效果都不尽如 ...