lingo中@size@for@sum函数的使用

@size:
LINGO中的@size()函数用于确定集合中元素的个数。比如你的集合是
注意:在使用size的时候直接在@size()括号里写上集合名就行,不需要写@size(s1(i))中的(i)

s1/a b c d f g /:x;

当调用m=@size(s1)时,它返回的一个数值6,因为s里面有6个元素。

@for:
该函数用来表示线性规划中的约束条件

sets:
r/1..8/:d;
c/1..8/:;     !就算没有集合属性也要写":";
link(r,c):x,y;        !派生集合;
endsets
@for(r(i):@for(c(j):x(i,j)<=y(i,j)));       !可用@for(link:x<=y)代替;
@for(r(i)|i#ge#2:d(i)>=3)            !":"前说的是对哪个集合进行约束,":"后面说的事具体是什么样的约束;
!"|"表示过滤,即筛选r(i)下标集中i>=2的下标,即/2,3..8/

@sum
该函数用来求和,格式:@sum(setname(i):x(i))

总的例子:

model:
title cutting-stock problem;       !给模型起个名字;
sets:
needs/1..4/:length,num;
cuts/1..3/:x;
patterns(needs,cuts):r;
endsets
data:
length = 4 5 6 8;
num = 50 10 20 15;
capacity = 19;      !后面用的比较多的常数;
enddata
min = @sum(cuts(i):x(i));
@for(cuts(j):@sum(needs(i):length(i)*r(i,j))<capacity);
@for(cuts(j):@sum(needs(i):length(i)*r(i,j))>capacity-@min(needs:length));
@for(needs(i):@sum(cuts(j):x(j)*r(i,j))>num(i));
@sum(cuts(i):x(i))>26;
@sum(cuts(i):x(i))<31;  
@for(cuts(i)|i#lt#@size(cuts):x(i)>x(i+1));    !x1>=x2>=x3;
@for(cuts:@gin(x));          !每一个x都要是整数;
@for(patterns:@gin(r));        !每一个r都要是整数;
end

如果不足欢迎指正

  • 30
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Lindo 和 Lingo 是美国 Lindo 系统公司开发的一套专门用于求解最优化问题的软件包。Lindo 用于求解线性规划和二次规划问题,Lingo 除了具有 Lindo 的全部功能外,还可以用于求解非线性规划问题,也可以用于一些线性和非线性方程(组)的求解,等等。Lindo 和 Lingo 软件的最大特色在于可以允许优化模型的决策变量是整数(即整数规划),而且执行速度很快。   Lingo 实际上还是最优化问题的一种建模语言,包括许多常用的函数可供使用者建立优化模型时调用,并提供与其他数据文件(如文本文件、Excel电子表格文件、数据库文件等)的接口,易于方便地输入、求解和分析大规模最优化问题。   由于这些特点,Lindo系统公司的线性、非线性和整数规划求解程序已经被全世界数千万的公司用来做最大化利润和最小化成本的分析。应用的范围包含生产线规划、运输、财务金融、投资分配、资本预算、混合排程、库存管理、资源配置等等...   Lindo/Lingo 软件作为著名的专业优化软件,其功能比较强、计算效果比较好,与那些包含部分优化功能的非专业软件相比,通常具有明显的优势。此外,Lindo/Lingo 软件使用起来非常简便,很容易学会,在优化软件(尤其是运行于个人电脑上的优化软件)市场占有很大份额,在国外运筹学类的教科书也被广泛用做教学软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三只佩奇不结义

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值