程丹丹 . 2024-09-12 16:12 采纳率: 84.6%
浏览 24

lingo运行报错Invalid number of initialization

model:
sets:
year/1..3/;
project/1..5/;
endsets
data:
e = 700,900,1200;
U1 = 300,400,450;
U2 = 300,350,350;
b = 700,500,800,400,680;
g = 0.05;
f = 0.055;
r = 0.2;
endsets
var x(year,project)>=0;
max=@sum(year(i):@sum(project(j):x(i,j)));
@for(year(i):@sum(project(j):x(i,j))<=e(i)+@sum(year(k)|k<=i:U1(k)*(1+g)^(i-k))+@sum(year(k)|k<=i:U2(k)*(1+f)^(i-k))-@sum(year(k)|k<i: @sum(project(j):x(k,j))*(1+r)^(i-k)));
@for(year(i):@sum(year(k)|k<=i:U1(k)*(1+g)^(i-k))<=U1(i));
@for(year(i):@sum(year(k)|k<=i:U2(k)*(1+f)^(i-k))<=U2(i));}



img


有没有谁帮忙看看呢˃̣̣̥᷄⌓˂̣̣̥᷅

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-12 17:10
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据你提供的错误信息,问题出现在模型的初始值部分。报错提示为 "Invalid number of initialization values in a DATA/INIT/CALC",这表示在模型初始化阶段出现了一些问题,给出的初始化值数量不正确。在你的代码中,具体的错误可能与初始化值的分配方式有关。具体来说,你应该为模型中的变量分配正确的初始值。这可能涉及到变量的定义和初始值的设定是否正确匹配。以下是一些可能的解决方案:

    首先,检查你的变量定义部分是否正确。在Lingo中,你需要为每个变量分配一个或多个初始值。在你的代码中,变量x的定义可能存在问题。你可能需要为每个年份和项目的组合分配一个初始值。例如:

    var x(year,project)>=0;
    

    在这个定义中,你需要为每个年份和项目的组合提供一个初始值,例如:x(1,1)=某个值,x(1,2)=另一个值等。如果没有提供足够的初始值,你可能会遇到这个错误。你需要确保你的初始值数量与你的变量定义相匹配。

    其次,检查你的数据部分是否正确分配了初始值。在你的代码中,e、U1、U2、b等参数看起来已经分配了初始值,但是你需要确保这些值的数量和类型与你的模型定义相匹配。此外,如果这些参数在其他地方被重新定义或修改,你也需要确保这些改变不会影响到你的模型初始值的分配。

    总的来说,这个问题可能是因为模型初始值的数量和类型与变量定义不匹配导致的。你需要确保你为模型中的每个变量分配了正确的初始值。如果这些解决方案仍然无法解决你的问题,我建议你重新检查你的代码逻辑,以确保所有的变量和参数都被正确地分配了初始值。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月12日