-1

因此,我正在创建一个应用程序来查找基于多个输入的值,但由于其中一个输出不会显示而出现错误。

这是应用程序布局

1

问题是当我单击计算按钮时,总成本部分不会显示该值。“Q Optimal”工作得很好。

2

与右侧按钮关联的公式如下所示:

    dm=app.MinimumDemandEditField.Value;
    dM=app.MaximumDemandEditField.Value;
    tm=app.MinimumLeadTimeEditField.Value;
    tM=app.MaximumLeadTimeEditField.Value;
    r1=app.ReorderLevelEditField.Value;
    Et = 0.5*(tm+tM);
    vart = 1/12*(tM-tm)^2;
    Ed = 0.5*(dm+dM);
    vard = 1/12*(dM-dm)^2;
    ED = 1/4*(dm+dM)*(tm+tM);
    varD = 1/144*(3*(dm+dM)^2*(tM-tm)^2+3*(dM-dm)^2*(tm+tM)^2+(tM- 
    tm)^2*(dM-dm)^2);
    gt = 1/(tM-tm);
    fd = 1/(dM-dm);
    fD = 1/((dM-dm)*(tM-tm));
    f1=app.FixedCostEditField.Value;
    c1=app.VariableCostEditField.Value;
    h=app.HoldingCostEditField.Value;
    s=50*c1;
    app.ShortageCostEditField.Value = s
    A1=c1+(h/Ed)*(r1-ED);
    A2=fD*(r1*(tM-tm)*log(r1/(tM*dm))-(r1^2/dM)+(r1*tM)- 
    (r1*tm)*log((dM*tM)/r1)-Et);
    syms x;
    f=(x-r1)*fD;
    EB= int(f,r1,dM*tM);
    A3=Ed*f1+h*Ed*(fD*((r1^2*tm/2)-(dm*r1/2)*(tM^2-tm^2)+(dm^2/6)* 
    (tM^3-tm^3)-((r1^3/6*dM)-(dM*r1*tm^2/2)+(dM^2*tm^3/6)))+(fD/18)* 
    (tM^3-tm^3)*(dM^3-dm^3)-r1*ED+Ed*s*EB);
    Q=(1/h)*((Ed*(A1+h*A2-c1)+(h*(ED-r1))));
    Eoh=fD*((((r1^3*tM)/2)-(((dm*r1)/2)*(tM^2-tm^2))+(((dm^2)/6)* 
    (tM^3-tm^3))-((r1^3)/(6*dM))-((dM*r1*tm^2)/2)+((dM^2*tm^3)/6))+ 
    ((Q^2)/2*Ed)-(Q*ED/Ed)+((fD/(18*Ed))*((tM^3-tm^3)*(dM^3-dm^3)))+ 
    (Q*r1/Ed)-(r1*ED/Ed));
    TC= f1+c1*Q+h*Eoh+s*EB;
    app.QOptimalEditField.Value = Q
    app.TotalCostEditField.Value = TC

运行它会给出错误:

3

我怀疑问题出在我的集成过程中。我错过了什么还是有更好的方法来做到这一点?

预先感谢您 问候, 凯文·雷纳德

4

1 回答 1

1

我解决了这个问题,因为我注意到最后一个错误通知指出输入值必须是双标量并且积分过程的值不是双标量,所以我将积分代码修改为:

syms x; f=(x-r1)*fD; EB= double(int(f,r1,dM*tM));

1

于 2019-01-11T03:55:15.630 回答