當前位置:商標查詢大全網 - 彩票開獎 - 2002年數學建模B題 “彩票中的數學”中關於用MATLAB或LINGO求解非線性問題的最優解的代碼實現。(題目如下

2002年數學建模B題 “彩票中的數學”中關於用MATLAB或LINGO求解非線性問題的最優解的代碼實現。(題目如下

應該是壹個混合整數規劃問題。目前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