蒙特卡洛方法及數學建模演算法與應用第二章習題

2021-07-11 09:45:56 字數 1700 閱讀 2266

蒙特卡洛的方法又稱為隨機取樣法,所以他是根據大量隨機數來跑出滿意解

比如上一章用遺傳演算法的完全可以用蒙特卡洛方法(一口血吐出....)

以下為c語言**:

#include #include #include #include int check(int x)

int main()

}printf("最大值為:%d\n",max);

for (j=0;j<5;j++)

printf("%d ",ans[j]);

}

2.1:

換元,另y=x1*x2,接下來挺難想到的~~

0<=x1<=1;

0<=x2<=1;

故(x1-1)*(x2-1)>=0

x1*x2-x1-x2+1>=0

x1*x2>=x1+x2-1

y>=x1+x2-1

(x1-1)*x2<=0

x1*x2-x2<=0

y<=x2

同理得y<=x1

綜上       x1+x2-1<=y<=x1

x1+x2-1<=y<=x2

>>  f=[-1 0 1 -1];

>> a=[-2 3 1 0;

1 1 0 -1;

-1 0 0 1;

0 -1 0 1];

>> b=[3;1;0;0];

>> c=[1,2,3,4];

>> [x,fval]=intlinprog(f,c,a,b,,,zeros(4,1),ones(4,1))

2.2設xi為第i個小區是否被選,選為1,不被選為0

minz=x1+x2+x3+x4+x5+x6

對於每乙個小區又必須要有一所學校

x1+x2+x3>=1

x2+x4>=1

x3+x5>=1

x4+x6>=1

x1+x2+x3>=1

x5+x6>=1

x1>=1

x2+x4+x6>=1

>> f=[1,1,1,1,1,1];

>> a=[1,2,3,4,5,6];

>> b=[-1 -1 -1 0 0 0;0 -1 0 -1 0 0;0 0 -1 0 -1 0;0 0 0 -1 0 -1;-1 -1 -1 0 0 0;0 0 0 0 -1 -1;-1 0 0 0 0 0;0 -1 0 -1 0 -1];

>> c=[-1;-1;-1;-1;-1;-1;-1;-1];

>> [x,fval]=intlinprog(f,a,b,c,,,zeros(6,1),ones(6,1))

例2.3題目描述貌似有點問題,搜了下答案應該意思是每個企業有且只有1臺,每乙個裝置至少要購入一件。

整數規劃問題,用蒙特卡洛方法可解。

#include #include #include #include int value[7][5];

void init()

int check(int x)

int find(int x)

int main()

}printf("最大值為:%d\n",max);

for (i=1;i<=6;i++)

printf("%d ",ans[i]);

}最大利潤為44

數學建模之蒙特卡洛演算法

蒙特卡羅方法又稱統計模擬法 隨機抽樣技術,是一種隨機模擬方法,以概率和統計理論方法為基礎的一種計算方法,是使用隨機數 或偽隨機數 來解決很多計算問題的方法。將所求解的問題同一定的概率模型相聯絡,用電子計算機實現統計模擬或抽樣,以獲得問題的近似解。為象徵性地表明這一方法的概率統計特徵,故借用賭城蒙特卡...

蒙特卡洛演算法

從今天開始要研究sampling methods,主要是mcmc演算法 contents 1.蒙特卡洛介紹 2.蒙特卡洛的應用 3.蒙特卡洛積分 1.蒙特卡洛介紹 蒙特卡羅方法 monte carlo method 也稱統計模擬方法,是二十世紀四十年代中期由於科學技術的 發展和電子計算機的發明,而被...

蒙特卡洛演算法

問題描述 在數值積分法中,利用求單位圓的1 4的面積來求得pi 4從而得到pi。單位圓的1 4面積是乙個扇形,它是邊長為1單位正方形的一部分。只要能求出扇形面積s1在正方形面積s中佔的比例k s1 s就立即能得到s1,從而得到pi的值。怎樣求出扇形面積在正方形面積中佔的比例k呢?乙個辦法是在正方形中...