BCL库入门课件.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BCL库入门 林森科技 2007.6 精品文档 概述 输入和求解线性规划问题 混合整数规划 二次规划 启发式算法 精品文档 第2章 输入和求解线性规划问题 采用BCL库建立LP模型; 采用索引集合从文件输入数据; BCL库的输出工具; 将问题导出到一个矩阵文件。 精品文档 建模示例 一个投资者希望用一定数量的资金进行投资。他对十种不同的股票进行投资,并估计在一年内投资的收益。下表给出了每种股票的国别,风险类别(R:高风险,N:低风险)和期望投资是收益率(ROI)。投资者确定了某些约束条件。为了分摊风险,他希望对每种股票的投资最多占总资金的30%。进一步,他希望资金的一半能够投资在北美的股票和最多三分之一是高风险投资。这些资金应该怎样在各种股票中进行分配才能达到最大化的收益的目的呢? 精品文档 股票的国别和估计投资收益列表 编号 描述 国别 风险类型 期望收益率 1 国库券 加拿大 N 5 2 硬件 美国 R 17 3 剧院 美国 R 26 4 电信 美国 R 12 5 酿酒 英国 N 8 6 高速公路 法国 N 9 7 汽车 德国 N 7 8 银行 卢森堡 N 6 9 软件 印度 R 31 10 电子 日本 R 21 精品文档 BCL模型实现 (1)初始化 以C++进行编程 同样的模型可以使用BCL库的C,Java或者Visual Basic接口实现 需要包含xprb_cpp.h 头文件 需要包含对应的静态链接库.lib文件 初始化问题(这里是XPRBprob p(“FolioLP”) ) 精品文档 一般结构 生成决策变量 (newVar ) 定义目标函数 (setObj ) 定义约束条件 (newCtr) 求解问题 (maxim ) 输出结果(getObjVal ,getSol ) 精品文档 编译和编程执行 Window dos命令行: cl /MD /I D:\xpressmp\include D:\xpressmp\lib\xprb.lib foliolp.cpp Window vc6.0: 将xprb_cpp.h, xprb.lib文件执行文件夹下面,并添加到工程 Linux或者Solaris系统: cc -D_REENTRANT -I${XPRESSDIR}/include -L${XPRESSDIR}/lib foliolp.C -o foliolp -lxprb 精品文档 执行结果 精品文档 数据的文件输入 使用字符串索引的文件例如foliocpplp.dat给定 ! Return treasury 5 hardware 17 theater 26 telecom 12 brewery 8 highways 9 cars 7 bank 6 software 31 electronics 21 精品文档 数据读取 使用函数XPRBreadlinecb读取数据 格式化字符处“T g”表示,读取实数字符后面的文本字符串,两者通过空格分开(或者制表符) 如果其中包含空格则通过单引号或者双引号扩起。 如果数据文件使用其他的分隔符例如“,”号,则格式化字符串需要根据它进行修改(例如“T,g”)。 精品文档 实现 #define DATAFILE foliocpplp.dat“ void readData(void) { double value; int s; FILE *datafile; char name[100]; SHARES=p.newIndexSet(Shares,NSHARES); // 生成‘SHARES’索引集合 // 从文件读取‘RET’数据 datafile=fopen(DATAFILE,r); for(s=0;sNSHARES;s++) { XPRBreadlinecb(XPRB_FGETS, datafile, 200, T g, name, value); RET[SHARES+=name]=value; } fclose(datafile); SHARES.print(); // 输出集合内容 } 精品文档 输出函数 BCL库模型对象(XPRBprob,XPRBvar,XPRBctr,XPRBsos,和XPRBindexSet)都具有print方法 : frac[2].print(); 输出结果: frac2: 0.2 精品文档 错误处理 初始化错误 if(XPRB::init() != 0) { cout Initialization failed. endl; return 1; } 求解状态检查 char *LPSTATUS[] = {not loaded, optimal, infeasible, worse tha

文档评论(0)

liuxiaoyu98 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档