MILP 预处理结果 + 节点 LP 工作形式(含全部"工作列 → 原始变量"映射)。
MilpLpForm
01 Syntax
Microsoft.VisualBasic.Math.LinearAlgebra.LinearProgramming.MILP.MilpLpForm
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| ToOriginalSolution | 1 | 把工作解转换为原始变量的解向量。 |
| ToOriginalObjective | 1 | 原始方向目标值 = ObjOffset + Sigma · c_workᵀx_work。 |
| IsIntegerColumn | 1 | 工作列绑定的原始变量是否为整数(松弛/剩余列为 False)。 |
| InternalObjective | 1 | 内部 min 方向目标值。 |
| SetOriginalBounds | 1 | 按原始变量界更新对应工作列的界(仅支持单列变量;整数变量在预处理 后必然单列,因为整数变量被要求具有有限下界)。 |
| WorkBoundsFor | 1 | 计算"原始变量界 [lower, upper]"对应的工作列界(不修改对象状态)。 |
| GetOriginalBounds | 1 | 由工作列界反推原始变量的当前界(不修改对象状态)。 |
| AddCutRowWork | 1 | 追加一条割平面约束(系数直接定义在工作变量空间)。 |
| ToString | 1 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| c | 1 | 内部 min 方向目标(已乘 Sigma 与列符号) |
| ColumnOriginal | 1 | 工作列 → 原始变量索引;松弛/剩余列为 −1 |
| ColumnSign | 1 | 工作列符号(±1) |
| ColumnShift | 1 | 工作列平移 |
| ColumnNames | 1 | 工作列名称 |
| ColumnTypes | 1 | 工作列类型(松弛列一律连续) |
| SlackColumn | 1 | 约束行对应的松弛列索引;无松弛行为 −1 |
| VariableColumns | 1 | 原始变量 → 组成它的工作列(自由变量为两列,固定变量为空) |
| VariableShift | 1 | 原始变量的总平移量(固定变量为固定值;翻转变量为 u;自由变量为 0) |
| IsFixed | 1 | 是否为固定变量 |
| FixedValue | 1 | 固定变量的取值 |
| VariableNames | 1 | 原始变量名 |
| VariableTypes | 1 | 原始变量类型 |
| IntegerVariables | 1 | 整数(含二进制)原始变量索引 |
| Sigma | 1 | 目标方向:+1 = min,−1 = max(c_work 已乘该系数) |
| ObjOffset | 1 | 平移/固定变量引入的原始方向目标常数 |
| RowTypes | 1 | 约束行方向("<=" / ">=" / "=");割平面追加行为 "<=" / ">=" |
| RowRhs | 1 | 约束行右端项(原始尺度) |
| A | 1 | |
| b | 1 | |
| l | 1 | |
| u | 1 | |
| Rows | 1 | |
| Cols | 1 | |
| OriginalVariableCount | 1 | |
| Stats | 1 |
04 Members
ToOriginalSolution(
Double())把工作解转换为原始变量的解向量。
ToOriginalObjective(
Double())原始方向目标值 = ObjOffset + Sigma · c_workᵀx_work。
IsIntegerColumn(
Int32)工作列绑定的原始变量是否为整数(松弛/剩余列为 False)。
InternalObjective(
Double())内部 min 方向目标值。
SetOriginalBounds(
Int32, Double, Double)按原始变量界更新对应工作列的界(仅支持单列变量;整数变量在预处理 后必然单列,因为整数变量被要求具有有限下界)。
WorkBoundsFor(
Int32, Double, Double)计算"原始变量界 [lower, upper]"对应的工作列界(不修改对象状态)。
GetOriginalBounds(
Int32, Double(), Double())由工作列界反推原始变量的当前界(不修改对象状态)。
AddCutRowWork(
Double(), String, Double)追加一条割平面约束(系数直接定义在工作变量空间)。
Parameters
| Name | Type | Description |
|---|---|---|
gamma | Double() | 长度 = 工作列数 MilpLpForm.Cols 的行系数 |
op | String | "<=" 或 ">=" |
rhs | Double | 右端项(工作变量尺度) |
Returns
新松弛列的索引
c
内部 min 方向目标(已乘 Sigma 与列符号)
ColumnOriginal
工作列 → 原始变量索引;松弛/剩余列为 −1
ColumnSign
工作列符号(±1)
ColumnShift
工作列平移
ColumnNames
工作列名称
ColumnTypes
工作列类型(松弛列一律连续)
SlackColumn
约束行对应的松弛列索引;无松弛行为 −1
VariableColumns
原始变量 → 组成它的工作列(自由变量为两列,固定变量为空)
VariableShift
原始变量的总平移量(固定变量为固定值;翻转变量为 u;自由变量为 0)
IsFixed
是否为固定变量
FixedValue
固定变量的取值
VariableNames
原始变量名
VariableTypes
原始变量类型
IntegerVariables
整数(含二进制)原始变量索引
Sigma
目标方向:+1 = min,−1 = max(c_work 已乘该系数)
ObjOffset
平移/固定变量引入的原始方向目标常数
RowTypes
约束行方向("<=" / ">=" / "=");割平面追加行为 "<=" / ">="
RowRhs
约束行右端项(原始尺度)
A
b
l
u
Rows
Cols
OriginalVariableCount
Stats
ToString()