“K-Best Solution” in LINGO
本帖最后由 wujianjack2 于 2014-11-25 18:50 编辑本帖以一个简单的实例讨论LINGO求解整数规划中存在多解问题时的求解策略,如knapsack。
声明: 自LINGO 11版本后,已可以直接求解了,此处仅作简单分享。
本帖内容主要参考文献:Lingo 11 Users Manual
1.示例程序(来自LINGO 11安装文件Samples文件夹,KBEST.lg4)
MODEL:
SETS:
ITEMS: INCLUDE, WEIGHT, RATING;
MYFAVORITES( ITEMS);
ENDSETS
DATA:
KNAPSACK_CAPACITY = 15;
ITEMS WEIGHT RATING =
BRATS 3 1
BROWNIES 3 1
BEER 3 1
ANT_REPEL 7 1
BLANKET 4 6
FRISBEE 1 6
SALAD 5 10
WATERMELON 7 9;
MYFAVORITES = BRATS BROWNIES BEER;
ENDDATA
MAX = @SUM( ITEMS: RATING * INCLUDE);
@SUM( ITEMS: WEIGHT * INCLUDE) <= KNAPSACK_CAPACITY;
@FOR( ITEMS: @BIN( INCLUDE));
NUMFAVE = @SUM( MYFAVORITES: INCLUDE);
END
2.问题求解:(求解使用LINGO 11 Extended_English Crack)
如果直接用LINGO求解,无论是使用默认设置,还是使用Global Solver,均得到如下结果:
以上结果为Global Solver求解结果。
然而,这种问题最优解往往不止一个,或者,我们还想知道一些次优解,如何简单地利用LINGO实现呢?
操作流程:(以LINGO 11为例)
LINGO->Options->Integer Solver->K-Best Solutions(修改Desired值)
截图如下:(本例修改Desired值为3)
运行结果:
完整结果:
自定义选择结果:(以第一个值为23的解为例)
对于类似的问题,采用上述操作,则可以得到所需的多解,但Desired值也不宜过大,建议由小到大逐个试。程序也要保证有多个解,这样避免出现不可预知的错误。
有意者详情见参考文献。
是否可以拜师学艺 真心觉得佩服 真是既简便,又快速啊,我们组是真没想到这样做啊 秋の名山で戦 发表于 2014-1-24 18:23 static/image/common/back.gif
是否可以拜师学艺 真心觉得佩服
新年快乐!承蒙厚爱!享受在论坛的时光,加油!祝你好运! 紫菱666 发表于 2014-1-24 21:04 static/image/common/back.gif
真是既简便,又快速啊,我们组是真没想到这样做啊
新年快乐!希望对你有帮助! 非常感谢楼主的福利! 真是既简便,又快速啊,我们组是真没想到这样做啊123 学习了啊哈哈 初学者 不大看得懂呢 不错。以后大家多多交流!!!