功能:混合整数二次规划

格式:
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min, x0, int, seed, nbird, loop1, loop2)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min, x0, int, seed, nbird, loop1)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min, x0, int, seed, nbird)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min, x0, int, seed)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min, x0, int)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min, x0)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max, min)
[m, x] = QuadProgNLP(Q, g, A, c, B, d, max)
[m, x] = QuadProgNLP(Q, g, A, c, B, d)
[m, x] = QuadProgNLP(Q, g, A, c, B)
[m, x] = QuadProgNLP(Q, g, A, c)
[m, x] = QuadProgNLP(Q, g, A)
[m, x] = QuadProgNLP(Q, g)
[m, x] = QuadProgNLP(Q)

Q: 一个n*n的矩阵变量
g: 一个n*1的矩阵变量,为空时表示0矩阵
A: 一个m*n的约束矩阵变量,为空时表示0矩阵
c: 一个m*1的约束矩阵变量,为空时表示0矩阵
B: 一个p*n的约束矩阵变量,为空时表示0矩阵
d: 一个p*1的约束矩阵变量,为空时表示0矩阵
max: 一个n*1的矩阵变量,或者数值,表示求解变量x的上限,默认为10000
min: 一个n*1的矩阵变量,或者数值,表示求解变量x的下限,默认为0
x0 : 一个n*1的矩阵变量,或者数值,表示求解变量x的初值,默认为1
int: 一个n*1的矩阵变量,或者数值,表示求解变量x是否为整数,为0表示非整数,为1表示整数,默认为0
seed : 数值变量,表示求解种子
nbird: 种群数量,默认为18
loop1: 外循环次数,默认16
loop2: 最大迭代次数,默认2048

m:函数求解成返回的最小值
x:函数求解成功返回的解x

说明:
1、本函数主要求解如下一类约束问题
求目标最小值 : x^T * Q * x + x^T * c
其中x满足约束: A * x ≤ c 且 B * x = d

例子:
//假如有如下矩阵变量, 现在求 x * Q * x + x^T *g最小值,其中满足约束 A * x ≤ c，其x当中第1个元素为双精度数,第2个数据为整数,x当中元素范围[0,10000]
Q =
[-2.81616586857297   -26.9744024504788
 -5.28511561233789    30.2836351004819 ]

g =
[ 49.4263655503403
  2.36745930852715 ]

A =
[ 1.66889696925362    31.7093210675331 ]

c =
[ 87.5493996718663 ]

//输入如下变量进行求解
xt =[0 1];//申明x当中第1个元素为非整数,第2个元素为整数
[m, x] = QuadProgNLP(Q, g, A, c, , , 10000, 0, 1, xt)//回车得到如下结果,如果对结果不满意,可以使用[m, x] = QuadProgNLP(Q, g, A, c, , , 10000, 0, x, xt)再执行一次
m =
[-5157.18793733148 ]
x =
[ 52.4594362379347
  0.00000000000000 ]