unifrnd函数
较详细解释均匀分布随机数:
均匀分布是指整个样本空间中的每一个样本点对应的概率(密度)都是相等的。根据样本空间是否连续,又分为离散均匀分布和连续均匀分布。均匀分布可以算作是最简单的概率分布。从均匀分布中进行采样,即生成均匀分布随机数,几乎是所有采样算法都需要用到的基本操作。
1.unifrnd(3,5)
产生一个3~5的均匀随机数
>> unifrnd(3,5)
ans =
4.7768
>> unifrnd(3,5)
ans =
4.6694
>> unifrnd(3,5)
ans =
4.5639
>> unifrnd(3,5)
ans =
4.7718
>> unifrnd(3,5)
ans =
4.6463
>> unifrnd(3,5)
ans =
4.0015
A和B可以是向量也可以是标量。
若两个都是向量,则两者都是列向量或都是行向量,而且维数相等。从A到B产生一系列区间,区间个数等于他们的维数;
若其中恰有一个是向量,假设A为向量,则区间个数等于A的维数;
若两个均为标量,且A <= B,区间个数为1,且区间为[A,B]。然后在这一系列区间中随机产生连续均匀分布的数组R并返回之。
>> x=[1:9];
y=[2:10];
unifrnd(x,y)
ans =
1.4254 2.8143 3.8355 4.8910 5.2735 6.8015 7.6149 8.1640 9.0562
%% 从x到y产生区间[1,2],[2,3],[3,4],
... [4,5],[5,6],[6,7],[7,8],[8,9],
... [9.10].然后从每个区间产生一个随机数,得到R。
unifrnd (a, b, m, n); 产生m*n阶[a, b]均匀分布
线性规划
[x,fval]=linprog(f,a,b,aeq,beq,lb,ub)
整数线性规划
[x,fval]=intlinprog(f,intcon,a,b,aeq,beq,lb,ub)
(非线性规划)
c(x),ceq(x)是非线性向量函数。
[xmin,ymin]=fmincon(函数名,x0,线性不等式约束,线性等式约束,x下界和上届,M文件定义的非线性向量约束c(x),ceq(x))(局部最优解)
(非线性规划举例)
%%
clc, clear
fun1 = @(x) sum(x.^2)+8;%目标函数
[x,y]=fmincon(fun1,rand(3,1),[],[],[],[],zeros(3,1),[],@fun2)
%这里注意fun2前面要带上@,否则会报错
function [c,ceq]=fun2(x)
c=[-x(1)^2+x(2)-x(3)^2
x(1)+x(2)^2+x(3)^3-20]; %非线性不等式约束
ceq=[-x(1)-x(2)^2+2
x(2)+2*x(3)^2-3]; %非线性等式约束
end
(非线性整数规划举例)
%%
%%%%%%%%%非线性整数规划%%%%%%%%
clear
%rng('shuffle') %根据当前时间为随机数生成器提供种子
rng(0) %进行一致性比较,每次产生的随机数是一样的
p0=0;
n=10^6;
tic %计时开始
for i=1:n
x=randi([0,99],1,5); %产生一行五列的区间[0,99]上的随机整数
[f,g]=mengte(x);
if all(g<=0) %判断是否满足约束条件
if p0<f
x0=x; %记录下当前较好的解
p0=f; %记录下当前较好的解
end
end
end
x0, p0, toc %计时结束
function [f,g]=mengte(x);
%定义目标函数
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
x(4)-2*x(5);
%线性约束条件
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];
end