mpt_demo_set1
Polyhedron(多面体)的基本操作
基础知识
H-representation
用有限个超平面和半空间定义多面体
形式:Ax<b; Aex=be
V-represention
用有限个点(凸集的顶点)和射线(代表方向)定义多面体
形式:extreme points(vertices) V and rays R
创建Polyhedron object
H-representation
P = Polyhedron(‘A’, A, ‘b’, b, ‘lb’,lb,‘ub’,ub,‘Ae’, Ae, ‘be’, be)
例如
P1 = Polyhedron('A',[-1,0.5,2;-3,-1.5,0.2;0.4,-1.8,-1],'b',[2;3;1],'lb',[-1;-1;-1],'ub',[1;1;2],'Ae',[1,2,0],'be',0)
plot(P1,'color','o')
得到的绘图结果为:
V-representation
P = Polyhedron(‘V’,V,‘R’,R)
V表示凸集的顶点,R表示方向,如果构成有界的凸集,则没有R省略。
例如
v1 = [-1,0];
v2 = [1,0.5];
v3 = [1,-0.5];
V = [v1;v2;v3]
R = [1,0.1];
P2 = Polyhedron('V',V,'R',R);
P3 = Polyhedron('V',V);
plot(P2,'color','g',P3,'color','b')
得到的绘图结果为:
类似数组操作
P1,P2,P3均为Polyhedron
P = [P1,P2,P3]
R1 = P(1)
R2 = P(1:3)
R3 = P([3 2]),即R3 = [P(3),P(2)]
R4 = P(end)
查看polyhedron的相关属性(值)
- 基本值
H = [A, b]
He = [Ae, be]
P是一个Polyhedron
H-representation的参数包括A, b, H, Ae, be, He
A = P.A
b = P.b
Ae = P.Ae
be = P.be
H = P.H
He = P.He
V-representation的参数包括V, R
V = P.V
R = P.R
一般无论是哪种方法建立的Polyhedron,都具有这些参数。
如果需要查看是否用H-representation或V-representation表示,则可以查看如下的值:
P.hasHRep
P.hasVRep
- 维数,即Polyhedron的维数
P.Dim
注意:不是x的维数!
- data
任何和Polyhedron共存的数据都可以存在data中,data是一个结构体,其初始化与赋值方法同结构体相同,如下:
# 方式一
P = Polyhedron('A', [1 -2], 'b', 0.5, 'Data' ,struct('alpha', a, 'deta', '-pi/3)) ;
# 方式二
P.Data.theta = ('name1', 'name2');
P.Data.c = [0.5, 0.4, 0.3, 0.2, 0.1];
- 其他
# 是否为空集
P.isEmptySet
# 是否有界
P.isBounded
#是否满维(Polyhedron与x维数是否相同)
P.isFullDim
存疑
上述是非常简单的基本操作,在mpt3工具箱的demo中即可查看。在学习的过程中发现分不清Polyhedron(多面体)和Polytope(多胞形),查找相关资料之后的理解是:
多面体的定义是有限个超平面和半空间的交集;
多胞形是指在n维空间中的一类特殊的凸多面体,一个多胞形就是一个内部非空的紧凸多面体。当dim X=2时,一般不称多胞形,而称之为多边形。