matlab求解非线性约束优化问题

本文介绍了如何使用MATLAB进行非线性约束优化问题的求解,通过封装函数提高代码效率,避免重复,并建议利用MATLAB的优化工具箱而非手动遍历以提升求解速度。
摘要由CSDN通过智能技术生成
  1. 函数封装
function [y1,y2] = fun_mp_c(alp,K)
syms c a p1 p2 m barp1 barp2
q=1;n=100;
...
c1=0.01:0.01:0.27;
for i=1:27
    cc = @(x)[-(alp*n*(x(1)-c1(i))*(1-x(1)/q)-(1-alp)*n*c1(i)*(1-x(2)/q)-K);
                      -((1-alp)*n*(x(2)-c1(i))*(1-x(2)/q)-alp*n*c1(i)*(1-x(1)/q)-K)];
    %非线性不等式约束,<的形式。自变量x,包括两个自变量x(1)和x(2)
    nonlcon = @(x)deal(cc(x),[]);%加上[]的非线性等式约束。
    fun = @(x)-(alp*n*(x(1)-c1(i))*(1-x(1)/q)+(1-alp)*n*(x(2)-c1(i))*(1-x(2)/q)-K);
    %目标函数。自变量x,包括两个自变量x(1)和x(2)
    x0=[0 0];A=[];b=[];Aeq=[];beq=[];lb=[c1(i) c1(i)];ub=[q q];options = optimoptions('fmincon','Display','iter','Algorithm','sqp');
    %x0:起始点;A:线性不等式约束(<)左边;b:线性不等式约束(<)右边;Aeq:线性等式约束(<)左边;beq:线性等式约束(<)右边;lb:下限;ub: 上限。
    tem=fmincon(fun,x0,
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值