Meetbug_ 2023-02-06 01:07 采纳率: 20%
浏览 106
已结题

使用matlab进行含参数的最优化求解及数值模拟

问题背景
效用最大化理论模型,非线性有约束规划,函数中有多个参数(如图),初步的想法是

第一步:得出最优消费量关于某一变量的偏导;
第二步:将偏导在某一参数的不同水平下进行数值模拟

img

碰到的问题

手动计算最优消费量易出错(不确定是否求出了正确的解),下面的数值模拟自然不好推进,所以想用matlab的最优化工具箱计算得出最优消费量,但是遇到了报错,无法实现

目前尝试的代码

参考matlab帮助文档中跟我这个相似的最优化问题,目前是这个代码(没有matlab格式的代码可插入,用了python的代码格式,见谅哈),目的是将f这一g的隐函数作图,这里4个变量t, c, c1, c0,其他的都是参数

%%%%
clc; clear all; close all;
f = @(t, c, c1, c0) (a.*t.^p + b.*(h0-m.*c+n.*(k1.*c+k2.*c1+(1-k1-k2).*c0)).^p)^(1/p);
g = @(t,c, c1, c0) t+p1.*n.*(k1.*c+k2.*c1+(1-k1-k2))+ 0*(h0-m.*c+n.*(k1.*c+k2.*c1+(1-k1-k2).*c0)>=h1)+p2.*(h0-m.*c+n.*(k1.*c+k2.*c1+(1-k1-k2).*c0)<h1)-i;
fimplicit(g)

报错情况

“错误使用 fimplicit (line 54) 函数输入可以最多包含两个变量。”

我目前的疑问

当然上面这个报错是预想中的啦,关键的问题是不知道这样一个全是参数的最优化问题是否可以用matlab求出一个解的表达式再数值模拟还是说直接用这一系列关系式直接进行数值模拟

可否指教一二?
  • 写回答

4条回答 默认 最新

  • 社区专家-Monster-XH 2023-02-06 09:17
    关注
    
    % 定义函数maxtU
    maxtU = @(t, h, alpha, beta, p) (alpha * t^p + beta * h^p)^(1/p);
    
    % 定义函数h
    h = @(c, cs, delta, delta1, h0, m, n) h0 - m * c + n * cs;
    
    % 定义函数cs
    cs = @(c, c0, delta, delta1) delta * c + delta1 * c1 + (1 - delta - delta1) * c0;
    
    % 定义函数M
    M = @(h, h_i, p2) h_i >= h ? 0 : p2 * (h - h_i) * h_i;
    
    % 定义目标函数
    obj = @(x) maxtU(x(1), x(2), alpha, beta, p);
    
    % 定义约束条件
    A = [];
    b = [];
    Aeq = [];
    beq = [];
    lb = [0, 0];
    ub = [Inf, Inf];
    nonlcon = @(x) x(1) + p1 * cs(x(2), c0, delta, delta1) + M(h(x(2), cs(x(2), delta, delta1), delta, delta1, h0, m, n), h_i, p2) - I;
    
    % 求解最优化问题
    x0 = [1, 1]; % 初始值
    options = optimoptions(@fmincon,'Algorithm','interior-point');
    x = fmincon(obj,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
    
    % 数值模拟
    num_iterations = 100; % 迭代次数
    for i = 1:num_iterations
    % 在每次迭代中调用上述函数并计算结果
    x = fmincon(obj,x,A,b,Aeq,beq,lb,ub,nonlcon,options);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月17日
  • 已采纳回答 2月9日
  • 修改了问题 2月6日
  • 创建了问题 2月6日

悬赏问题

  • ¥15 【matlab】已知功率谱密度反求时域信号
  • ¥15 mindspore项目_模型适配
  • ¥15 openstack使用cinder后,实例运行时分配的总空间不能大于ceph的总空间
  • ¥15 [pcl::PLYWriter::writeASCII] Error during opening (?鶂?)!
  • ¥15 得到XY两轴的数据如何绘制成圆,输入整形器
  • ¥29 PHP读取PDF文件添加多个数字签名
  • ¥25 联邦学习vgg修改最后一个全连接层报错(默认是1000个输出,我的改为11就报错,改为200就没问题)
  • ¥15 maple画图问题,为什么会是这样
  • ¥15 RC522开发arduino作品刷卡失效
  • ¥15 comsol仿真频域研究以及结果处理