2002年数学建模B题 “彩票中的数学”中关于用MATLAB或LINGO求解非线性问题的最优解的代码实现。(题目如下 10

急求高手啊,回答得好的话,另有加分谢谢啊... 急求高手啊,回答得好的话,另有加分
谢谢啊
展开
 我来答
百度网友edf692d24
2012-04-30
知道答主
回答量:33
采纳率:0%
帮助的人:22.5万
展开全部
应该是一个混合整数规划问题。目前matlab还没有相关的函数求解此问题。
本人开发了一个“混合(非)线性规划软件包”,其说明如下:(恕Word中有些显示不出)
本软件包的主程序有两个,一个是处理混合的线性规划,一个是处理非线性的。
1. 混合的线性规划(MixIntDiscLineProg.m)

2.混合的非线性规划问题(MixIntDiscNLProg)

其中 为自变量, 为向量 的上下界, 分别为线性约束条件中等式约束条件的系数矩阵和常数项, 分别为线性约束条件中不等式约束条件的系数矩阵和常数项, 和 分别为非线性约束条件中等式约束条件和不等式约束条件。 为离散非整数变量,取值范围为 , 为整数变量,其余为连续变量。
我们可以用一个xstatus 的数组 来设定离散或者整数变量的状态,其中xstatus(1,:) 是自变量中离散或整数变量的下标;xstatus(2,:) 中的每个元素取值为1或2,若为1则表示 中对应列的自变量为整数型变量,若为2则表示 中对应列的变量为离散变量; 是 中对应列的离散变量的取值范围的序号,若变量为整数则为零。于是 就可以表示为:

兹举4个例子以示说明,其余参见后面的说明。
例1 . 所有变量都是整数.
两个程序中分别修改
isAllInteger=1;
其余离散变量取值范围及 不必设置。

例2 . x2,x4,x7是整数,其余都是连续变量。
两个程序中分别修改
isAllInteger=0;
修改如下:

主程序中凡调用“checkIntDisc“的格式都变为“checkIntDisc(...,xstatus)”

例3 . x2,x4,是整数,x3、x7、x9取自D1集合中,其余都是连续变量。
两个程序中分别修改
isAllInteger=0;
修改如下:

主程序中凡调用“checkIntDisc“的格式都变为“checkIntDisc(...,xstatus,D1)”

例4 . x2,x4,是整数,x3和x9取自D1集合中,x7取值D2,其余都是连续变量。
两个程序中分别修改
isAllInteger=0;
修改如下:

主程序中凡调用“checkIntDisc“的格式都变为“checkIntDisc(...,xstatus,D1,D2)”

使用两个程序的具体步骤:
 在Matlab环境下,使用“File/set path…”添加路径“\...”
 根据你的实际问题,修改一系列的参数和文件如下6步
1) the parameters are given by the requirement of the function fmincom.m
A,B,Aeq,Beq,LB,UB,X0

2) 'obj_fun.m' 是目标函数源文件

3) 'nl_con_fun.m' 是非线性约束条件源文件(不含整数或离散要求)

4) 设置是否所有分量都是整数要求
isAllInteger=1; 所有分量都是整数
isAllInteger=0 并不是所有分量都是整数

5) 修改离散变量的取值范围参数D1—Dm
D1=[2.5,3,4,6,8,10,12,16]; % discrete requirement of x(1),x(2),x(3)
D2=[2.5,3,4,6,8,10,12.2,16.6]; % discrete requirement
若需要,修改“checkIntDisc(...,xstatus,D1)” to “checkIntDisc(...,xstatus,D1,..,Dm)“

6) 修改 的数组

欲知详情:可发:spjin@whut.edu.cn

参考资料: 混合型非线性规划MATLAB实现方法[J]. 武汉理工大学学报. 2011,Vol.35 No.2, 413-416

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式