大家好,本人正在做畢業設計需要用到matlab進行仿真,因為之前從未使用過,也沒有任何代碼經驗,因此現在自學階段且準備從最簡單的場景開始仿真。我盡量將問題描述清楚,以便各位瀏覽。
我本課題仿真的最終目的是通過迭代優化無人機水平方向位置與用戶權重的分配,使某無人機通信模型中網路效用達到最大值。我首先模擬1無人機2用戶的場景,除無人機水平方向位置(自變數x)與用戶水平方向位置(隨機)未知外,其余變數(用戶權重、帶寬、無人機高度等等)全部固定,如下函式是該情景通信模型:
f=-0.5*log10(0.5*20*10^6*log2(1+(10^(-4)*1.42*10^(-4)*2.9088)/(10^(-9.6)*(dist(rand(1,2),x')+300^2))))-0.5*log10(0.5*20*10^6*log2(1+(10^(-4)*1.42*10^(-4)*2.9088)/(10^(-9.6)*(dist(rand(1,2),x')+300^2))));
思路是通過fmincon工具箱計算這個負值的最小值得到網路效用的最大值,但最終跑出來的結果是:initial point is a local minimum that satisfies the constraints。無論我的初始點如何設定(從0;0到10W;10W),結果都是初始點就是區域最優解。
我自己分析的可能性是,也許用戶數量過少或者選用的網路效用函式不合適,因此我添加用戶到10個,并且修改了網路效用函式(從比例公平性改為最小潛在延遲公平性,避免log10為底的對數出現),
如下函式表示某無人機與任意10個用戶之間的信道模型:
function f=fun(x)
f=symsum(-0.5*(-(1/((1/n)*20*10^6*log2(1+(10^(-4)*1.42*10^(-4)*2.9088)/(10^(-9.6)*(dist(rand(1,2),x)+300^2)))))),n,0,10);
end
其中f表示網路效用,n表示用戶數量,symsum這個命令我是查詢幫助手冊得到的,希望實作一個連加求算網路效用;x是一個水平坐標向量(2x1的矩陣),兩個問題中的fmincon各引數設定如下:
x0=[0;0];
A=[1 1]; b=[1000];
Aeq=[];beq=[];
VLB=[-1000 1000]; VUB=[-1000 1000];
[x,fval]=fmincon(@fun,x0,A,b,Aeq,beq,VLB,VUB);
同時我不確定這樣設定限定條件是否能表示水平橫縱坐標范圍都在1000以內。
修改函式后,系統告訴我未定義函式或變數 'n',做到這里我不知道思路是否正確,也不知道應該如何將帶有n和x的該函式作為fmincon命令中的引數求解優化,所以先來論壇上求助一下。
非常感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67121.html
標籤:網絡通信
上一篇:SIP VOIP 原始碼下載
