# 数学函数 - 优化与规划

文档类型：函数事实页
是否可直接用于生成代码：是；本页函数条目均包含参数表
遇到不确定时：回到 [../math.md](../math.md)、[../../index.md](../../index.md)

本页收录线性规划、二次规划、整数规划、0/1 规划和二次规划辅助求解函数。

## 服务器优化函数

### `prog_L(f, a, b, aeq, beq, lower_bounds, upper_bounds, x0, options, binary_indices, integer_indices)`

用途：求解带线性约束、边界约束、0/1 约束或整数约束的线性规划问题。

参数个数：11
返回值：数组表；包含 `X`、`Fval`、`Error_M`、`Iter`

| 参数位置 | 参数名            | 必填 | 接收类型        | 说明                             |
| -------- | ----------------- | ---- | --------------- | -------------------------------- |
| 1        | `f`               | 是   | 数值数组        | 目标函数线性系数                 |
| 2        | `a`               | 是   | 数值矩阵/空数组 | 线性不等式约束左侧矩阵           |
| 3        | `b`               | 是   | 数值数组/空数组 | 线性不等式约束右侧向量           |
| 4        | `aeq`             | 是   | 数值矩阵/空数组 | 线性等式约束左侧矩阵             |
| 5        | `beq`             | 是   | 数值数组/空数组 | 线性等式约束右侧向量             |
| 6        | `lower_bounds`    | 是   | 数值数组/空数组 | 变量下界                         |
| 7        | `upper_bounds`    | 是   | 数值数组/空数组 | 变量上界                         |
| 8        | `x0`              | 是   | 数值数组        | 初始解                           |
| 9        | `options`         | 是   | 数组表/空数组   | 算法选项；使用默认设置时传空数组 |
| 10       | `binary_indices`  | 是   | 整数数组/空数组 | 按 0/1 约束处理的变量下标        |
| 11       | `integer_indices` | 是   | 整数数组/空数组 | 按整数约束处理的变量下标         |

### `prog_Q(h, f, a, b, aeq, beq, lower_bounds, upper_bounds)`

用途：求解带线性约束和边界约束的二次规划问题。

参数个数：8
返回值：数组表；包含 `X`、`Fval`、`Error_M`、`Iter`

| 参数位置 | 参数名         | 必填 | 接收类型        | 说明                   |
| -------- | -------------- | ---- | --------------- | ---------------------- |
| 1        | `h`            | 是   | 数值矩阵        | 二次项系数矩阵         |
| 2        | `f`            | 是   | 数值数组        | 一次项系数             |
| 3        | `a`            | 是   | 数值矩阵/空数组 | 线性不等式约束左侧矩阵 |
| 4        | `b`            | 是   | 数值数组/空数组 | 线性不等式约束右侧向量 |
| 5        | `aeq`          | 是   | 数值矩阵/空数组 | 线性等式约束左侧矩阵   |
| 6        | `beq`          | 是   | 数值数组/空数组 | 线性等式约束右侧向量   |
| 7        | `lower_bounds` | 是   | 数值数组/空数组 | 变量下界               |
| 8        | `upper_bounds` | 是   | 数值数组/空数组 | 变量上界               |

### `quadprog(h, f, a, b, aeq, beq)`

用途：求解标准二次规划问题。

参数个数：6
返回值：数组表；包含 `最优值`，并用整数键返回各变量解

| 参数位置 | 参数名 | 必填 | 接收类型        | 说明                   |
| -------- | ------ | ---- | --------------- | ---------------------- |
| 1        | `h`    | 是   | 数值矩阵        | 二次项系数矩阵         |
| 2        | `f`    | 是   | 数值数组        | 一次项系数             |
| 3        | `a`    | 是   | 数值矩阵/空数组 | 线性不等式约束左侧矩阵 |
| 4        | `b`    | 是   | 数值数组/空数组 | 线性不等式约束右侧向量 |
| 5        | `aeq`  | 是   | 数值矩阵/空数组 | 线性等式约束左侧矩阵   |
| 6        | `beq`  | 是   | 数值数组/空数组 | 线性等式约束右侧向量   |

### `linearProgramming(f, a, b, aeq, beq)`

用途：求解标准线性规划问题。

参数个数：5
返回值：数组表；包含 `最优值`，并用整数键返回各变量解

| 参数位置 | 参数名 | 必填 | 接收类型        | 说明                   |
| -------- | ------ | ---- | --------------- | ---------------------- |
| 1        | `f`    | 是   | 数值数组        | 目标函数线性系数       |
| 2        | `a`    | 是   | 数值矩阵/空数组 | 线性不等式约束左侧矩阵 |
| 3        | `b`    | 是   | 数值数组/空数组 | 线性不等式约束右侧向量 |
| 4        | `aeq`  | 是   | 数值矩阵/空数组 | 线性等式约束左侧矩阵   |
| 5        | `beq`  | 是   | 数值数组/空数组 | 线性等式约束右侧向量   |

### `quadLagR(h, f, aeq, beq)`

用途：用拉格朗日方法求解带等式约束的二次规划问题。

参数个数：4
返回值：数组表；包含 `最优值`，并用整数键返回各变量解

| 参数位置 | 参数名 | 必填 | 接收类型 | 说明                 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1        | `h`    | 是   | 数值矩阵 | 二次项系数矩阵       |
| 2        | `f`    | 是   | 数值数组 | 一次项系数           |
| 3        | `aeq`  | 是   | 数值矩阵 | 线性等式约束左侧矩阵 |
| 4        | `beq`  | 是   | 数值数组 | 线性等式约束右侧向量 |

### `ozProg(f, a, b)`

用途：求解 0/1 规划问题。

参数个数：3
返回值：数组表；包含 `最优值`，并用整数键返回各变量解

| 参数位置 | 参数名 | 必填 | 接收类型 | 说明                   |
| -------- | ------ | ---- | -------- | ---------------------- |
| 1        | `f`    | 是   | 数值数组 | 目标函数线性系数       |
| 2        | `a`    | 是   | 数值矩阵 | 线性不等式约束左侧矩阵 |
| 3        | `b`    | 是   | 数值数组 | 线性不等式约束右侧向量 |

### `quadTrackRoute(h, f, a, b, aeq, beq, x0)`

用途：用路径跟踪法求解二次规划问题。

参数个数：7
返回值：数组表；包含 `最优值`，并用整数键返回各变量解

| 参数位置 | 参数名 | 必填 | 接收类型        | 说明                   |
| -------- | ------ | ---- | --------------- | ---------------------- |
| 1        | `h`    | 是   | 数值矩阵        | 二次项系数矩阵         |
| 2        | `f`    | 是   | 数值数组        | 一次项系数             |
| 3        | `a`    | 是   | 数值矩阵/空数组 | 线性不等式约束左侧矩阵 |
| 4        | `b`    | 是   | 数值数组/空数组 | 线性不等式约束右侧向量 |
| 5        | `aeq`  | 是   | 数值矩阵/空数组 | 线性等式约束左侧矩阵   |
| 6        | `beq`  | 是   | 数值数组/空数组 | 线性等式约束右侧向量   |
| 7        | `x0`   | 是   | 数值数组        | 初始解                 |

### `intLinProg(f, a, b, aeq, beq, integer_indices)`

用途：求解整数线性规划问题。

参数个数：6
返回值：数组表；包含 `最优值`，并用整数键返回各变量解

| 参数位置 | 参数名            | 必填 | 接收类型        | 说明                                                   |
| -------- | ----------------- | ---- | --------------- | ------------------------------------------------------ |
| 1        | `f`               | 是   | 数值数组        | 目标函数线性系数                                       |
| 2        | `a`               | 是   | 数值矩阵/空数组 | 线性不等式约束左侧矩阵                                 |
| 3        | `b`               | 是   | 数值数组/空数组 | 线性不等式约束右侧向量                                 |
| 4        | `aeq`             | 是   | 数值矩阵/空数组 | 线性等式约束左侧矩阵                                   |
| 5        | `beq`             | 是   | 数值数组/空数组 | 线性等式约束右侧向量                                   |
| 6        | `integer_indices` | 是   | 整数数组/空数组 | 按整数约束处理的变量下标；传空数组时按函数默认规则处理 |
