基於matlab的隨機取樣計算法

2021-09-29 21:05:05 字數 1579 閱讀 2877

對於線性規劃而言,有著成熟且有效的方法,而對於非線性整數規劃而言,沒有通解,儘管限制變數為整數而增加了難度,然而整數解為有限個,於是可以用列舉法求解方案。

當然在乙個自變數維度很大和取值範圍很寬的情況下,企圖用窮舉法計算最優值是不現實的,但是根據概率理論可知完全可以得出乙份滿意解

下面是matlab實現隨機取樣計算:

我們這裡取非線性規劃函式,定義目標函式f和約束向量g

function [f,g]

=mengte

(x);f=x

(1)^

2+x(

2)^2

+3*x

(3)^

2+4*

x(4)

^2+2

*x(5

)^2-

8*x(

1)-2

*x(2

)-3*

x(3)

-x(4

)-2*

x(5)

;g(1

)=sum(x)

-400;g

(2)=

x(1)

+2*x

(2)+

2*x(

3)+x

(4)+

x(5)

-800;g

(3)=

2*x(

1)+x

(2)+

6*x(

3)-200;g

(4)=

x(3)

+x(4

)+5*

x(5)

-200

;

主函式如下:

rand

('state'

,sum

(clock));

%採用時間作為隨機數的初始狀態,保證不會出現相同的隨機數

p0=0

;tic;

%開始計時

for i=1:

10^5 x=99*

rand(5

,1);

x1=floor

(x);

%x向下取整

x2=ceil

(x);

%x向下取整

[f,g]

=mengte

(x1);if

sum(g<=0)

==4if p0<=f

x0=x2;po=f;

endend[f,g]

=mengte

(x2);if

sum(g<=0)

==4if p0<=f

x0=x2;po=f;

endendend

x0po

toc%停止計時

執行結果為

>> main

x0 =262

99113po =

37269

時間已過 0.947124 秒。

由於是隨機取樣,所以每次執行的結果的可能不一樣,但是誤差不會太大,但對於比較標準的整數規劃模型,建議考慮用lingo求解。

非線性整數規劃 Matlab 隨機取樣計算法

matlab求下列整數 目標函式f,約束條件g function f,g mengte x f x 1 2 x 2 2 3 x 3 2 4 x 4 2 2 x 5 2 8 x 1 2 x 2 3 x 3 x 4 2 x 5 g 1 sum x 400 g 2 x 1 2 x 2 2 x 3 x 4 ...

Matlab產生隨機序列,並取樣

clear all m 10 bit數 符號數 n 100 總取樣數 l n m 每bit取樣數 emp rate 0.5 占空比 imp round rand 1,m round 四捨五入 rand m,n 產生 0,1 之間的均勻分布的隨機數,返回m n的矩陣 imp randi 0,1 1,m...

基於MATLAB的極值計算方法

通常,我們對資料節點得到的曲線 或折線 需要計算其波峰波谷,也就是極值點。數學上是通過一階導數等資訊來獲得極值點的,這裡通過一階微分來處理,得到極值資訊。輸入節點資料,要求計算波峰波谷 極大值 極小值 並作出標記。節點資訊 data 105.03 99.18 84.965 72.445 68.994...