Matlab非线性优化函数:fmincon();

%定义目标函数;
function f = myfun(x)
f = x(1)^2 + x(2)^2 + 8;
end

%非线性约束;
function [c, ceq] = nonlia(x)
c = -x(1)^2 + x(2);       %不等式约束;
ceq = -x(1) - x(2)^2 + 2; %等式约束;
end

%在命令窗口输入:
A = [];
b = [];
Aeq=[];
beq=[];
lb = [0; 0];
ub = [];
x0 = [0; 0];
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(‘myfun‘,x0,A,b,Aeq,beq,lb,ub,‘nonlia‘);

得:x =

    1.0000
    1.0000

fval =

   10.0000

 

%目标函数;
function f = myfun(x)
f = -x(1) - 2*x(2) +0.5*x(1)^2 + 0.5*x(2)^2;
end

%非线性约束;
function [c, ceq] = nonlia(x)
c = 2*x(1) + 3*x(2)^2 - 6;       %不等式约束;
ceq = []; %等式约束;
end

%在命令窗口输入:
clc;
clear all;
A = [2 3; 1 4];  %线性不等式系数;
b = [6;5];
Aeq = [];
beq = [];
lb = [0; 0];
ub = [];
x0 = [0; 0];
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(‘myfun‘,x0,A,b,Aeq,beq,lb,ub,‘nonlia‘);

得:x =

    0.7647
    1.0588

>> fval

fval =

   -2.0294

  

注意这里是求最大值,目标函数取反,就会变成求最小值;

%目标函数;
function f = myfun(x)
f = -(log(x(1)) + log(x(2)));
end

%非线性约束;
function [c, ceq] = nonlia(x)
c = [];       %不等式约束;
ceq = [];     %等式约束;
end

%在命令行输入:
clc;
clear all;
A = [1 -1];
b = 0;
Aeq= [1 2];
beq = 5;

lb = [0; 0];
ub = [];
x0 = [0; 0];
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(‘myfun‘,x0,A,b,Aeq,beq,lb,ub,‘nonlia‘);

得:x =

    1.6667
    1.6667

>> fval

fval =

   -1.0217

  

原文地址:https://www.cnblogs.com/GuanghuiLiu/p/9931946.html

时间: 2024-11-10 01:10:31

Matlab非线性优化函数:fmincon();的相关文章

MATLAB 非线性优化函数fmincon

本文由olivewy编写,原地址:http://www.cnblogs.com/olivewy/p/5148428.html  优化成功或失败 一.求解失败 1.在到达迭代次数阈值或目标函数估值次数阈值时,求解器没有最小化目标到要求的精度,此时求解器停止.接下来,可以尝试以下方法: (1)设置‘Display’为‘iter’,查看每步的迭代信息,这些信息包括:目标函数(Fval or f(x) or Resnorm)是否是下降的:检查约束越界(Max constraint)是否是递减趋向于0:查

Matlab:非线性热传导(抛物方程)问题

函数文件1:real_fun.m 1 function f=real_fun(x0,t0) 2 %精确解 3 f=4*x0*(1-x0)*sin(t0); 函数文件2:F.m 1 function f=F(N,u,U,t,h1,h2) 2 %非线性方程组 3 %h1是x的步长,h2是t的步长 4 %u表示迭代节点,上一时刻的数值解 5 %h表示时间节点上的步长 6 %N表示空间节点的步数 7 a0=0.5*t^4*h2*N^2; 8 f(1,1)=a0*(U(2)^2-2*U(1)^2)+h2*

Andrew Ng Machine Learning - Week 3:Logistic Regression & Regularization

此文是斯坦福大学,机器学习界 superstar - Andrew Ng 所开设的 Coursera 课程:Machine Learning 的课程笔记.力求简洁,仅代表本人观点,不足之处希望大家探讨. 课程网址:https://www.coursera.org/learn/machine-learning/home/welcome Week 1: Introduction 笔记:http://blog.csdn.net/ironyoung/article/details/46845233 We

fmincon如何使非线性约束函数写成匿名函数的形式

fmincon命令中,可以将目标函数直接写成匿名函数的形式,但是一个匿名函数只有一个输出,而fmincon中的nonlcon写成m文件时是写成[c,ceq],c表示非线性不等式,ceq表示非线性等式.那么如何将约束函数nonlcon写成匿名函数呢,查阅matlab的help文档,查阅优化工具箱中对非线性约束Nonlinear Constraints的介绍,也可以通过fmincon帮助中对nonlcon参数的介绍链接进对Nonlinear Constraints的介绍. Anonymous Non

最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)

1.最小二乘原理 Matlab直接实现最小二乘法的示例: close x = 1:1:100; a = -1.5; b = -10; y = a*log(x)+b; yrand = y + 0.5*rand(1,size(y,2)); %%最小二乘拟合 xf=log(x); yf=yrand; xfa = [ones(1,size(xf,2));xf] w = inv(xfa*xfa')*xfa*yf';%直接拟合得到的结果 参考资料: 1.http://blog.csdn.net/lotus_

Matlab 最小二乘法拟合非线性函数

1.最小二乘原理 参考资料: 1.http://blog.csdn.net/lotus___/article/details/20546259 2.http://blog.sina.com.cn/s/blog_5404ea4f0101afth.html 2.matlab实现最小二乘法 利用matlab的最小二乘拟合函数对非线性函数进行拟合,具体地拟合的函数: [q r] = lsqcurvefit(fun, q_0, xdata, ydata);输入参数:fun:需要拟合的函数,假定有n个需要拟

Matlab微分进化算法及优化函数测试

微分进化(Difference Evolution,DE)算法是一种优化算法,据称其比GA(遗传算法)等更为优秀. 借鉴网上实现的DE算法,用Matlab实现了对若干函数优化问题的解法,代码如下: function [] = de_test clear all; close all; clc; %解:X = [0, 0, ...] %nVar = 30 %dims: [-30, 30]     function fitness = sphere(vals)         prod = vals

MATLAB实例:非线性曲线拟合

MATLAB实例:非线性曲线拟合 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 用最小二乘法拟合非线性曲线,给出两种方法:(1)指定非线性函数,(2)用傅里叶函数拟合曲线 1. MATLAB程序 clear clc xdata=[0.1732;0.1775;0.1819;0.1862;0.1905;0.1949;0.1992;0.2035;0.2079;0.2122;0.2165;0.2208;0.2252;0.2295;0.2338;0.238

Matlab中TCP通讯-实现外部程序提供优化目标函数解

版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Matlab中TCP通讯-实现外部程序提供优化目标函数解     本文地址:http://techieliang.com/2017/12/551/ 文章目录 1. 介绍 2. TCP使用方法  2.1. 创建tcp  2.2. 开启tcp  2.3. 关闭tcp  2.4. 收发 3. 其他  3.1. matlab发送回车,换行符的方法  3.2. matlab字符串连接  3.3. 接收