Meetbug_ 2023-02-06 01:07 采纳率: 33.3%
浏览 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 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)