| 查看: 1955 | 回复: 4 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
已经加入Lingo的0-1变量条件,为何还有小数解? 已有1人参与
|
|||
|
最近在用Lingo求解模型,模型中已加入0-1变量条件如下: @for(linkSSL: @bin(X2)); 可算出来的可行解里X2仍然有小数解存在,同志们遇到过这种情况吗?求指教! |
» 猜你喜欢
327求调剂
已经有5人回复
361求调剂
已经有3人回复
一志愿中南大学化学学硕0703总分337求调剂
已经有5人回复
一志愿北京化工大学 070300 学硕 336分 求调剂
已经有6人回复
材料专业求调剂
已经有10人回复
341求调剂(一志愿湖南大学070300)
已经有5人回复
0854 考研调剂 招生了!AI 方向
已经有15人回复
384求调剂
已经有6人回复
生物学学硕求调剂
已经有4人回复
081700 调剂 267分
已经有6人回复
NicoleLas
木虫 (正式写手)
- 应助: 66 (初中生)
- 金币: 4288.7
- 红花: 26
- 帖子: 514
- 在线: 177.2小时
- 虫号: 2872321
- 注册: 2013-12-15
- 性别: GG
- 专业: 计算机软件
【答案】应助回帖
★ ★ ★ ★ ★
sunsuper: 金币+5, ★★★很有帮助 2014-07-15 18:58:00
sunsuper: 金币+5, ★★★很有帮助 2014-07-15 18:58:00
|
你使用了些非线性函数,有可能造成求解数值不稳定性,乍看上去应该是MINLP问题,MINLP本身求解就比较困难。LINGO在求解MINLP问题时采用Branch and Bound(Integer Solver) + CONOPT(Local Nonlinear Solver),CONOPT要求模型Scale比较合理,所以,软件有可能求解出现数值精度问题。 方便的话贴上程序及数据吧,我有最新的LINGO及LINDO API,有时间的话可以给你运行下,看是否结果有所改善。 当然,最关键的可能是你优化自己的模型及程序编写,尽量转化为MILP或者MIQP,这样LINGO使用Branch and Bound + MOSEK( Interior Point) 效果可能会好一点。 |

5楼2014-07-14 00:19:34
NicoleLas
木虫 (正式写手)
- 应助: 66 (初中生)
- 金币: 4288.7
- 红花: 26
- 帖子: 514
- 在线: 177.2小时
- 虫号: 2872321
- 注册: 2013-12-15
- 性别: GG
- 专业: 计算机软件

2楼2014-07-13 21:48:41
|
约束是个线性函数,太长就不列了,主要约束如下: @for(linkSS(i,j)| i #ne# j: @sum(Type(l): X1(i,j,l)) = 1); @for(linkSSL(i,j,l)| i #ne# j: X1(i,j,l) = X1(j,i,l)); @for(linkSS(i,j)| i #ne# j: @sum(SCs(k): X2(i,j,k)) = X1(i,j,3)); @for(linkSSS(i,j,k)| i #ne# j: X2(i,j,k) <= Z(k)); @for(linkSS(i,j)| i #ne# j: Y(i,j) + t(i,j) <= t_I + M*(1 - (X1(i,j,1) + X1(i,j,2)))); @for(linkSS(i,j)| i #ne# j: @abs(Y(i,j) - Y(j,i)) >= t(i,j)*X1(i,j,1)); @for(linkSS(i,j)| i #ne# j: @abs(Y(i,j) - Y(j,i)) < t(i,j) + M*(1 - X1(i,j,2))); @for(linkSS(i,j)| i #ne# j: Y(i,j) + @sum(SCs(k): X2(i,j,k)*2*t(i,k)) <= t_I); @for(LinkSS(i,j)| i #ne# j: TEMP(i,j) = @if(Y(i,j) #lt# tw_O1, 0, @if(Y(i,j) #gt# tw_O2, 1, (Y(i,j) - tw_O1)/(tw_O2 - tw_O1)))); @sum(LinkSS(i,j)| i #ne# j: w(i,j)*TEMP(i,j)) >= sita*@sum(SCs(i): Q(i)); @for(LinkSS(i,j)| i #ne# j: Y(i,j) >= t_S); @for(SCs: @bin(Z)); @for(linkSSS: @bin(X1)); @for(linkSSL: @bin(X2)); 不知道问题出在哪里,是Lingo自身问题还是模型问题? |
3楼2014-07-13 22:51:01
4楼2014-07-13 22:52:46













回复此楼