(以lingo11为例,记录自己学习lingo软件的一些我感到较难理解语句,可能有理解不对的地方)
一、
首先以最简单的lingo程序为例
只要把上面的大括号去掉,然后输入界面即可
(先不管最后一项约束条件),运行程序即可求得答案。
但实际问题的决策变量,与约束条件可能有成百上千个,因此,我们需要找到一个更简便的方式来实现程序的编写。
二、
1.
比如遇到这个式子,我们肯定不能挨个写吧
于是我们可以这样定义,product是集合名(可以任取),1..100是定义的元素个数,此条语句可以类比,C语言中的 int x[100],int c[100],还要注意起始句和结束句是固定格式。这样定义虽然比c语言困难,但赋予了变量实际意义(本例代表产品),防止在大型程序中忘了字母是什么含义。
2.
然后还可以定义二维数组(见a)
这样相当于a定义了6个元素(Ajia,Ayi,Bjia,Byi,Cjia,Cyi)(这个定义字母有重复,因为lingo 不区分大小写,推荐把a和b换一个没出现过的字母)
3.比较特殊的函数
(1)以最上面的那个没数字的例题为例,假设求max = c1*x1+c2*x2
max = c1*x1+c2*x2核心如下:
求和@sum肯定要有,product(j)代表了j在定义x的两个变量jia 和yi中遍历,就是两次.
(2)求约束条件:
由于没有lingo里没有for函数,故用@for,
对于这个式子
此处相当于有
a11x1 +a12x2= b1
a21x1+a22x2 = b2
先
相当于for(i=1;i<3;i++)
然后
相当于行内各个数相加
然后总的就是
即可。
仅记录自己学习过程中的一些心得