Meetbug_ 2023-02-22 09:27 采纳率: 33.3%
浏览 138
已结题

使用mathematica求解含参最优化

问题背景

效用最大化理论模型,非线性有约束规划,函数中有多个参数(如图)

img

遇到的问题

我的目的是求出均衡解t,它是c、α、β等等参数的函数,然后再进一步看t随c、α的变化,其他无关的参数ρ、m、n做多次赋值处理,看看结果有何变化
目前用mathematica把目标函数敲出来报错说

img

需求

请问应该怎么写这个代码呢,我想要求出一个t的表达式然后每一次将ρ、m、n赋不同的值来作t*随c、α的变化图
请指教
  • 写回答

4条回答 默认 最新

  • 「已注销」 2023-02-22 09:43
    关注

    参考GPT和自己的思路,首先,你的目标函数中似乎缺少一些参数,比如变量c、α、β等的定义,你需要将它们在目标函数中进行定义。此外,在使用NMaximize函数时,需要提供初始值来指导搜索的起点,以便更快地找到最优解。

    根据您提供的信息,我看到有几个语法错误,包括:

    目标函数的开头没有左括号,需要在开头加上左括号。

    此外,您也需要指定一些参数的具体值,包括 "V"、"m"、"n"、"a"、"c"、"p" 和 "I",否则无法进行求解。

    根据您的需求,以下是一种可能的 Mathematica 代码,其中我将 "V"、"m"、"n"、"a"、"c"、"p" 和 "I" 的值都设定为了 1:

    V = 1;
    m = 1;
    n = 1;
    a = 1;
    b = 1;
    r = 1;
    o = 1;
    c = 1;
    p = 1;
    I = 1;
    NMaximize[{(V - m*(a*c + (1 - a)*b*c) - n*c)*t^p + x^p, p1*t + p2*x + p3*c <= I, V - m*(a*c + (1 - a)*b*o) - n*c > 0, t > 0, x > 0}, {t, x}]
    

    请注意,这只是一种可能的代码,具体代码实现还需要您根据实际情况进行调整和修改。此外,由于您的目标函数和约束条件中涉及到多个参数,所以可能需要进行多次求解和绘图,才能完整地展现出 t 与 c、α 的关系。

    以下是一个可能适用于你的模型的代码示例(需要根据你的具体模型进行适当修改):

    Cs[c_, α_, β_, co_, ac_, bro_, v_] := ac + (1 - α) (β c + (1 - β) co);
    c1[c_, v_] := v c;
    U[t_, x_, c_, p_, V_, m_, n_, Cs_, co_, ac_, α_, β_, v_] := ((V - m*Cs[c, α, β, co, ac, bro, v] - n*c) t^p + x^p)^(1/p);
    eqn = {V - m*Cs[c, α, β, co, ac, bro, v] - n*c > 0, p1*t + p2*x + p3*c <= I, t > 0, x > 0, c > 0};
    NMaximize[{U[t, x, c, p, V, m, n, Cs, co, ac, α, β, v], eqn}, {t, x, c}]
    

    你可以将上述代码中的参数ρ、m、n设置为常量,然后使用Table函数来生成一系列t随c、α变化的数据点,最后用ListPlot函数绘制出相应的图形。

    ρ = ...;
    m = ...;
    n = ...;
    data = Table[{c, α, t /. NMaximize[{U[t, x, c, p, V, m, n, Cs, co, ac, α, β, v], eqn}, {t, x, c}]}, {c, cmin, cmax, cstep}, {α, amin, amax, astep}];
    ListPlot3D[Flatten[data, 1]]
    

    如果对您有帮助,请给与采纳,谢谢。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 创建了问题 2月22日