m0_73967135 2024-05-05 16:37 采纳率: 0%
浏览 166

Lingo的29号错误Invalid number of initialization values in a DATA/ INIT/CALC statement

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-05 16:37
    关注

    引自免费微信小程序:皆我百晓生

    在您的Lindo模型中,出现了第29号错误"Invalid number of initialization values in a DATA/INIT/CALC statement"。这个错误通常是因为在DATA或INIT语句中为集合元素分配的值数量不正确。

    根据您提供的数据部分(DATA),看起来您试图初始化一个名为link的二元集合并为其成员赋值。然而,在数据段中,每个行似乎代表了一个(p, t)对的值,但每一行中的数值个数并不一致,有些行有四个值,而其他行只有三个值。

    为了修正这个问题,我们需要确保对于每一对(p, t),都有相同数量的值与之对应。根据给定的数据,我推测您可能想要为每个(p, t)对分配两个值:成本c和流量x。因此,我们应当将数据重新组织成这样:

    c(1, 1), c(1, 2), c(1, 3), c(1, 4),
    x(1, 1), x(1, 2), x(1, 3), x(1, 4),
    ...
    c(5, 4), x(5, 4)
    

    下面是修改后的模型代码:

    model:
    Sets
        p /1..5/;
        t /1..4/;
        link(p, t) : c, x;
    EndSets
    
    Data
        ! Reorganized data for consistency
        c(1, 1) = 10, c(1, 2) = 2, c(1, 3) = 3, c(1, 4) = 15,
        c(2, 1) = 5, c(2, 2) = 10, c(2, 3) = 15, c(2, 4) = 14,
        c(3, 1) = 15, c(3, 2) = 5, c(3, 3) = 13, c(3, 4) = 15,
        c(4, 1) = 20, c(4, 2) = 7, c(4, 3) = 6, c(4, 4) = 2,
        c(5, 1) = 9, c(5, 2) = 4, c(5, 3) = 15, c(5, 4) = 8,
    
        x(1, 1) = 5, x(1, 2) = 10, x(1, 3) = 15, x(1, 4) = 2,
        x(2, 1) = 15, x(2, 2) = 5, x(2, 3) = 14, x(2, 4) = 13,
        x(3, 1) = 2, x(3, 2) = 7, x(3, 3) = 6, x(3, 4) = 15,
        x(4, 1) = 5, x(4, 2) = 10, x(4, 3) = 15, x(4, 4) = 2,
        x(5, 1) = 15, x(5, 2) = 4, x(5, 3) = 15, x(5, 4) = 8;
    EndData
    

    请注意,这里假设c是成本,x是流量,并且我将原始数据按照 (p, t) 对进行了重组。如果你的数据含义不同,你需要相应地调整这些变量名。此外,确保在实际应用中,所有的(p, t)对都应有对应的cx值,否则还需要进一步检查并补充缺失的值。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月5日