网上牛牛约局游戏牛牛通宝是骗局吗吗?

1650人阅读
latex(9)
latex 中一般的公式拆分可以用 multline 或 split,区别在于公式编码显示的位置不同,前者编码在换行的最后一行,后者编码在整个换行公式的中间。然而,因为不能与align alignat 共用,在大括号中换行并对齐有一定难度。
查阅相关资料后,发现可以在 \equation 环境中插入表格 array,并利用行合并宏包multirow,同时可以用表格线宏包 booktabs&调整公式间距,举例:
\usepackage{amsmath}
\usepackage{booktabs} %调整表格线与上下内容的间隔
\usepackage{multirow}
\usepackage{array}
注意,下面的代码中 \right.后面的点不能丢。
\begin{equation}
B_{t}=\left\{
\begin{array}{ll}
B_{t-1}+z_{t}W+P\min\{D_{t}+\left|I_{t-1}\right|,Q_{t}^{ib}\}\quad &\multirow{2}*{$t&L$}\\
-\left(a\delta_{t}+h\max\{I_{t}0\}+\pi \min\{-I_{t},0\}+vQ_{t}^{ib}\right)&\\
\specialrule{0em}{0.5ex}{0.5ex}
B_{t-1}+z_{t}W+P\min\{D_{t}+\left|I_{t-1}\right|,Q_{t}^{ib}\}\quad &\multirow{2}*{$L\leq t\leq T-L+1$}\\
-\left(a\delta_{t}+h\max\{I_{t}0\}+\pi \min\{-I_{t},0\}+vQ_{t}^{ib}\right)-z_{t-L+1}W(1+r) &\\
\specialrule{0em}{0.5ex}{0.5ex}
B_{t-1}+P\min\{D_{t}+\left|I_{t-1}\right|,Q_{t}^{ib}\}\quad &\multirow{2}*{$t& T-L+1$}\\
-\left(a\delta_{t}+h\max\{I_{t}0\}+\pi \min\{-I_{t},0\}+vQ_{t}^{ib}\right)-z_{t-L+1}W(1+r) &\\
\end{array}\right.
\end{equation}
显示效果如下:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:46265次
积分:1040
积分:1040
排名:千里之外
原创:54篇
评论:26条
(2)(7)(3)(2)(5)(19)(8)(3)(1)(1)(1)(3)(3)(1)基于协同学理论的小电流接地系统单相接地故障选线研究YALMIP的简单说明 - 博客频道 - CSDN.NET
yanerhao的专栏
信雅之言,微言之下
分类:算法区
最近在做论文时,涉及到最优化问题,而最优化里面很多时候涉及的是二次约束二次规划QCQP这样的非凸问题,一般地,这样的非凸问题是得不到全局精确的最优解的,需要另辟蹊径。常用的有半定松弛SDR。将非线性松弛为线性,以致可以SDP,利用CVX这样的专有凸规划工具箱解决;但是缺点也是很明显的:就是灵活性和可靠性不高,当约束条件里面还有正定性未知的矩阵时,SDR力不从心,这时引入了QCQP下的二阶锥规格SOCP,利用YALMIP可以很好解决这样最优化问题的近似解。所以有必要说一下YALMIP的简单应用:
YALMIP总共有四个流程:
1:设置变量 ;
2::设定目标函数f;
3:设置限定条件;
4:利用工具箱求。
1:设置变量
变量设置常用的有三种:sdqvar() 设置实型,intvar()设置整形,binvar()设置二进制形。以sdqvar()为例。Yalmip中最重要的指令就是sdpvar。这个指令是用来定义决策变量。用n行和m列定义一个矩阵(或标量)P,我们写做:
P=sdqvar(n,m),这是一个默认对称的实数方阵,类似的还有简单形式sdqvar(n)以及详细形式sdqvar(n,m,'symmetric');
第三个参数可以用来获得许多预定义类型的变量,如Toeplitz, Hankel, diagonal(对角线), symmetric(对称)和skew-symmetric(反对称)矩阵,有关信息请参阅sdpvar帮助文档;
当然为了获得一个完全参数化(不一定是对称)的方阵,第三个参数是必要的:P =&(n,n,'full');
一个复数形式的完全参数化(不一定是对称)的方阵:P =&(n,n,'full','complex');
同时,也可以补上第三个和第四个参数:P = sdpvar(n,n,'sy','co')
2:sdpsettings
sdpsettings是YALMIP和solver之间通信的桥梁,一般用作最优化函数optimize,
solvesos, solvemoment 和solvemp的第三个入口参数(本文以solvesdp):
=&('field',,'field',,...)
(Constraints,
Objective, options)
=&('solver','sdpa','sdpa.maxIteration',100);
=&;指令中看到其所有选择的默认参数:
solver: ''
verbose: 1
warning: 1
cachesolvers: 0
beeponproblem: [-5 -4 -3 -2 -1]
showprogress: 0
saveduals: 1
removeequalities: 0
savesolveroutput: 0
savesolverinput: 0
convertconvexquad: 1
radius: Inf
savedebug: 0
sos: [1x1 struct]
moment: [1x1 struct]
bnb: [1x1 struct]
bpmpd: [1x1 struct]
bmibnb: [1x1 struct]
cutsdp: [1x1 struct]
global: [1x1 struct]
cdd: [1x1 struct]
clp: [1x1 struct]
cplex: [1x1 struct]
csdp: [1x1 struct]
dsdp: [1x1 struct]
glpk: [1x1 struct]
kypd: [1x1 struct]
lmilab: [1x1 struct]
lmirank: [1x1 struct]
lpsolve: [1x1 struct]
maxdet: [1x1 struct]
nag: [1x1 struct]
penbmi: [1x1 struct]
pennlp: [1x1 struct]
pensdp: [1x1 struct]
sdpa: [1x1 struct]
sdplr: [1x1 struct]
sdpt3: [1x1 struct]
sedumi: [1x1 struct]
qsopt: [1x1 struct]
xpress: [1x1 struct]
quadprog: [1x1 struct]
linprog: [1x1 struct]
bintprog: [1x1 struct]
fmincon: [1x1 struct]
fminsearch: [1x1 struct]
在ops里面有semudi选项,然后ops.semudi,查看semudi工具箱参数例如semudi.sps=1e-12:
ops.sedumi
beta: 0.5000
theta: 0.2500
stepdif: 0
eps: 1.0000e-09
bigeps: 1.0000e-03
maxiter: 150
stopat: -1
denq: 0.7500
numtol: 5.0000e-07
bignumtol: 0.9000
numlvlv: 0
chol: [1x1 struct]
cg: [1x1 struct]
maxradius: Inf
3:optimize(最优化函数本文以solvesdp为例)
optimize是解决最优化问题的常见函数,本文里solvesdp就是其中一种。格式:diagnostics
=&(Constraints,Objective,options)
举个简单例子:我们面对一个线性规划LP:{min cTx subject to Ax&=
b},用本文方法的话:
x = sdpvar(length(c),1);
F = [A*x&=b];
h = c'*x;
optimize(F,h);
solution = value(x);如果我们仅仅考虑灵活性那么可以忽略目标函数h,得到:diagnostics =&(F);返回的diag可以用在检验灵活性:
if diagnostics.problem == 0
disp('Feasible')
elseif diagnostics.problem == 1
disp('Infeasible')
disp('Something else happened')
通过上面函数获得最优化结果后,需要显示,这时就需要value(X),double是其中一种,即从决策向量里抽取数值。
整体效果可以再以一个例子说明:
已知非线性整数规划为:
Max z=x1^2+x2^2+3*x3^2+4*x4^2+2*x5^2-8*x1-2*x2-3*x3-x4-2*x5
0&=xi&=99(i=1,2,...,5)
x1+x2+x3+x4+x5&=400
x1+2*x2+2*x3+x4+6*x5&=800
2*x1+x2+6*x3&=800
x3+x4+5*x5&=200
在matlab中输入 x=intvar(1,5);
f=[1 1 3 4 2]*(x'.^2)-[8 2 3 1 2]*x';F=set(0&=x&=99);
F=F+set([1 1 1 1 1]*x'&=400)+set([1 2 2 1 6]*x'&=800)+set(2*x(1)+x(2)+6*x(3)&=800);
F=F+set(x(3)+x(4)+5*x(5)&=200);solvesdp(F,-f)
intvar(m,n):生成整数型变量;
sdpvar(m,n):生产变量;
solvesdp(F,f):求解最优解(最小值),其中F为约束条件(用set连接),f为目标函数
double:显示求解的答案
排名:第13541名
(38)(3)(41)(9)(21)(0)(75)(9)(22)(0)(2)(21)(0)(4)(0)YALMIP学习总结2
7.SDP建模与求解(没什么特殊之处,方阵默认是对称的,&=0是正定的意思)
A = [-1 2 0;-3 -4 1;0 0 -2];
P = sdpvar(3,3);
F = [P &= 0, A'*P+P*A &= 0];
solvesdp(F);//不写目标时,表示是“可行性”问题
Pfeasible = double(P);//double()表示抽取决策变量的值,是YALMIP对Matlab的重载
8.sdpsettings
YALMIP与solvers的通讯管家
(1)ops=sdpsettings可以查看当前的设置
(2)对YALMIP与Solver的通讯进行设置
ops = sdpsettings('field',value,'field',value,...)
solvesdp(Constraints, Objective, ops)
如:ops = sdpsettings('solver','dsdp','verbose',0)
或:ops = sdpsettings('solver','sdpa');
sdpsettings(ops,'verbose',0);
slover项可以的设置形式有:
---mosek,csdp,dsdp(按你希望的选择顺序)
---mosek,csdp,dsdp,*(通配符告诉YALMIP如果找不到前面的solver就找别的)
usex0项设为1,可以用已经得到的解来作为优化的initial solution
warning,beeponproblem,debug等项用来对warning,error信息控制、调试,也常用
(3)ops.sedumi可以把求解器sedumi的具体参数调出来(其它求解器类似)
9.最大特征值问题
& 在Control
Theory中常用,唯一注意的是logdet是仅针对SDPT3的命令,且调用时要指定SDPT3求解器,另外,只能用于Objective
不能用于约束中;而geomean是一个所有求解器和Objetive and Constraint中广泛使用的命令。
10.Geometric
Programming
(1)见Mosek技术文档
(2)能转化GP形式的问题,见Boyd et al.:2007
(3)MIGP& 指定integer变量的方法
&& solvesdp([F,
integer(x)],D)//在约束[]中增加integer(x)
注:mixed-integer branch and bound solver in YALMIP
作为一个组件或工具,使得一切问题的MI版本的求解(branch&bound)变得很容易
(4)GP中,幂用“^”输入,不要用sqrt,cpower等
11.常用非线性操作符
min, max, abs, sqrt, norm, sumk, sumabsk, geomean and cpower;
or, and, ne, iff, implies, nnz, alldifferent, sort and
ismember;
有三种方式将其表示为一般的凸/非凸问题
(1)Graph-based representations:增加变量和约束,表示为LP等问题
(2)Mixed-integer representations: 采用整数变量,表示min, max and abs, and
combinatorial and logical operators such as or,
and, ne, iff, implies, nnz, alldifferent, sort and ismember
(3)uation-based representations:采用callback
uations,只能和general purpose nonlinear
solver如fmincon一起使用,大部分
的非线性操作符都可以用这种方式转化。
12.一般的凸/非凸优化问题:见YALMIP
(1)solvesdp(A*x &=
b,sum(log(b-A*x)),sdpsettings('allownonconvex',0))
可以控制YALMIP只能把问题formulate为凸规划
(2)在不影响最优解(optimal solution)的情况下,有时候换一下目标函数的形式有利于求解,新的问题虽然optimal
objective与原问题不一
样,但optimal
solution与原问题一样。但新的问题在问题结构上更容易求解。这也是模型转化的技巧中需要重点掌握的。
13.Robust Optimization
(1)YALMIP脱胎于控制领域,自然对Robust Optimization(Robust
Control)的支持很好,它基于最坏情况分析(min-max),在认为不确定性变量w
达到最坏情况时,保证原问题可行,原目标达到最优。其理论基础是: Linear Conic Programming and Robust
Optimization. 方便的是,
YALMIP可以帮助你自动生成原问题的Robust
Counterpart,完成必要的推导并求解。这也是YALMIP最特别的地方。若只想要Counterpart,不想求
解,可以用命令
robustify,如果之后想进一步求解,可以把robustify生成的Robust
Counterpart用solvesdp求解,如
[Frobust,robust_objective] = robustify(F + W,objective);
sol = solvesdp(Frobust,robust_objective);
也可以跳过生成Robust
Counterpart的命令robustify,直接调用solvesdp求解,这时,YALMIP自动完成robustify的工作。
(2)要求:不确定集能表示成锥的形式,或不确定集本身是一个凸多面体(其定点已知);不确定性参数w以双线性或线性形式进入element-wise
constraint.
(3)Reference:(i)Ben-Tal and Nemerovskii:2002 (ii)Poster presented
at Reglerm?te 2008
例1:凸多面体形式
sdpvar x w t1 t2
F = [x+w &= 1];
W = [w == t1*(-0.5) + t2*0.5, t1+t2 == 1, 0 &= [t1
W = [W,uncertain([t1 t2 w])];
objective = -x;
sol = solvesdp(F + W,objective)
例2:锥形式
sdpvar x w(2,1)
F = [x+sum(w) &= 1];
W = [norm(w) &= 1/sqrt(2), uncertain(w)];
objective = -x
sol = solvesdp(F + W,objective)
或(因为在Robust Optimization中,QC自动转为SOCP Constraints)
sdpvar x w(2,1)
F = [x+sum(w) &= 1];
W = [w'*w &= 1/2, uncertain(w)];
objective = -x
sol = solvesdp(F + W,objective)
例3:MISDP与Robust Optimization
sdpvar x y t u a
p = a*x^4+y^4+u*x*y+1;
F = [uncertain(u), -1 & u & 1];
F = [F, ismember(a,[3 4 5])];
F = [F, sos(p - t)];
solvesos(F,-t)
这里,不确定变量(参数)是u,a只能取有限个整数;由于a的存在,会激活Branch&Bound,
且每个子问题是uncertain sum-of-square(SOS)问题
,这通常会对偶成一个SDP问题,所以最终是一个MISDP problem.
例4.uncertain SOCP/SDP Constraint Problem也能做Robust
Optimation.这时,通常需要uncertain varible在一个多面体中变动,YALMIP会
枚举其定点,通常需要安装MPT。略,见YALMIP Wiki.
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 牛牛理财是骗局 的文章

 

随机推荐