大家好,又见面了,我是你们的朋友全栈君。
matlab中的函数fmincon可用于求可以求取多元函数的极值,其约束包括五种:1、线性不等式
约束;2、线性等式约束;3、变量约束;4、非线性不等式约束;5、非线性等式约束。
其形式如下:
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
求解问题的标准型为
min F(X)
s.t
AX <= b(线性不等式约束)
AeqX = beq(线性等式约束)
G(x) <= 0(非线性不等式约束)
Ceq(X) = 0(非线性等式约束)
lb <= X <= ub(变量约束)
matalb实例:
func.m
clc
clear
close all
fun=@(x)x(1)^2+x(2)^2+8;
x0=rand(2,1);
A=[];
b=[];
Aeq=[];
beq=[];
vlb=[0,0];
vub=[];
exitflag=1;
[x,fval,exitflag]=fmincon(fun,x0,A,b,Aeq,beq,vlb,vub,'mycon')
mycon.m
function [g,ceq]=mycon(x)
g=-x(1)^2+x(2);
ceq=-x(1)-x(2)^2+2;
其中,func是目标函数;x0是给定的初值;A,b对应线性不等式约束;Aeq,beq对应线性等式约束;vlb,vub对应变量约束;mycon对应非线性不等式和等式约束
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150084.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...