标签:约束条件 VD 变量 .. 非线性 整数 WH 集合 LINGO
非线性整数规划模型LINGO
讲解分析:
第一步:确定决策变量
问题是确定调运方案,使得总运输费用最小。
而总运输费用=货物运量*货物单价,题目给了货物单价了,我们求货物运量即可,这里的货物运量则是我们的决策变量。
第二步:确定目标函数和约束条件
上图第一行就是我们的目标函数,下面三行是我们的约束条件,在满足约束条件的前提下,软件会不断遍历Xij所有可能的值,然后z也会根据Xij的变化而产生不同的值,这个时候用一个min函数取所有可能值当中的最小值,即可。
第三步:用LINGO代码实现
model:
title 最少运费问题;
sets:
!集合的定义,WH是集合的名字,W1..W6是集合的长度,一般写成1..6,相当于创建了一个能放六个元素的容器WH,是抽象的,是虚无的,是一种声明,告诉我们“:”后面的变量是一个什么类型的变量,显然,后面的AI是一个确确实实有六个数的数组,是具体的,是实在的。
WH/W1..W6/:AI;
!集合的名称、集合内的成员、集合的属性(可以看成是与改集合有关的变量或常量,相当与数组);
VD/V1..V8/:DJ;
links(WH,VD):C,X;
!以WH和VD为基础,衍生集合。相当于把两个向量结合在一起,形成一个二维数组,有行和列,C和X这两个变量是实在的具体的二维数组,只不过后面C我们赋值了,X是通过系统根据约束条件和目标函数自己赋值的;
endsets
data:
!数据段;
AI=60,55,51,43,41,52;
DJ=35,37,22,32,41,32,43,38;
C=6,2,6,7,4,2,5,9
4,9,5,3,8,5,8,2
5,2,1,9,7,4,3,3
7,6,7,3,9,2,7,1
2,3,9,5,7,2,6,5
5,5,2,2,8,1,4,3;
enddata
min=@sum(links(I,J):c(i,j)*x(i,j)); !目标函数.links我们上线提到了,是一个6X8的集合名;
@for(WH(i):@sum(VD(j):x(i,j))<=AI(I));!约束条件.@for一出,你就要知道这一行写的就是约束条件了;
@for(vd(j):@sum(WH(i):x(i,j))=DJ(j));!约束条件.;
end
标签:约束条件,VD,变量,..,非线性,整数,WH,集合,LINGO 来源: https://www.cnblogs.com/dokidai/p/14612606.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。