yhkn.net
当前位置:首页 >> lingo解线性规划问题,x约束写的取[0,1]直接任意小数,得到的是整数解,怎么求小数解?下面是代... >>

lingo解线性规划问题,x约束写的取[0,1]直接任意小数,得到的是整数解,怎么求小数解?下面是代...

如果你只是想要得到结果的话,将X扩到十倍或者更多试下再看看别人怎么说的.

这样就不要用@bin限制变量为0-1变量了,而是要限制变量的上下界,用@bnd(0,x,1),表示限制变量x满足在区间[0,1]之内;

可用0-1整数规划,由于80个数据太多,我只举个10个数据的例子,求b,c两个数: 令xa(i)=1表示A中第i个数是b的因子,同理,用xb(i)=1表示A中第i个数是c的因子; 程序如下: model: sets: da/1..10/:A,xa,xb; endsets data: A=1 5 7 8 9 10 13 18 85 93; b=6; c=178; enddata b=@sum(da(i):xa(i)*A(i)); c=@sum(da(i):xb(i)*A(i)); @for(da(i):@bin(xa(i));); @for(da(i):@bin(xb(i));); end

直接用函数@bin(x);就行了 这个的意思就是x为0或者1

@bin(x)就好了lingo中@bin表示的是0,1变量,是对题目的约束进行简化的有效函数

可以将x表示为一个集合中的五个元素吧比如:sets:a/1..5/:x;endsetsdata:x=0,1,1.5,2,4;enddata集是lingo的特色,也是lingo在解决规划问题的时候最大的优势,所以集的定义和应用是一定要弄清楚的.因为不清楚原题,所以不能做出准确的解答,希望对你有帮助.

这种问题应该没有很好的方式表达出来 你要知道lingo是有局限性的 不是什么东西用lingo解都很好的小规模的tsp问题在lingo自带的sample里面有写 你可以参考一下

lingo11以后又semic函数 @semic(10,x,30); 这样就是你要表达的那种不过这个函数只能用在线性规划里面

和一般的规划问题一样的求解 唯一不同的是增加一个 @bin(x); 表示x是0-1变量

软件都是有精度的 非常接近0那就是0了 不是说你限制是整数报告里面就一定是整数

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com