非线性规划中的混合整数非线性规划基础题
字数 1526 2025-10-27 11:27:25
非线性规划中的混合整数非线性规划基础题
题目描述:
考虑一个简单的混合整数非线性规划问题,其中包含连续变量和整数变量。目标是最小化非线性目标函数,同时满足线性和非线性约束。具体问题如下:
最小化 \(f(x, y) = (x - 1.5)^2 + (y - 2.5)^2\)
约束条件:
- \(x + y \leq 4\) (线性约束)
- \(x^2 + y^2 \geq 1\) (非线性约束)
- \(x \geq 0, y \geq 0\) (变量非负约束)
- \(x\) 为连续变量,\(y\) 为整数变量(即 \(y \in \mathbb{Z}^+\))
解题过程:
混合整数非线性规划结合了连续优化和整数规划,通常使用分支定界法或外部逼近法求解。以下是详细步骤:
-
问题分析:
- 目标函数 \(f(x, y)\) 是凸二次函数,在无约束时最小点为 \((1.5, 2.5)\)。
- 约束1是线性不等式,约束2是非线性非凸约束(因“≥”方向),变量y需取整数值。
- 问题本质是找到整数y的取值,使连续变量x在约束下最小化目标函数。
-
松弛子问题:
- 忽略y的整数约束,将问题转化为连续非线性规划(NLP)问题:
最小化 \(f(x, y) = (x - 1.5)^2 + (y - 2.5)^2\)
约束:\(x + y \leq 4\), \(x^2 + y^2 \geq 1\), \(x \geq 0, y \geq 0\)。 - 使用序列二次规划法求解该松弛问题,得到解 \((x^*, y^*)\) 和目标值下界 \(f^*\)。
- 初始点选为 \((0, 0)\),通过迭代线性化约束并求解二次规划子问题,最终得松弛解约 \((1.0, 2.236)\),但约束2要求 \(y\) 整数,故需进一步处理。
- 忽略y的整数约束,将问题转化为连续非线性规划(NLP)问题:
-
分支定界框架:
- 以松弛解为根节点,目标值 \(f^*\) 作为全局下界。
- 分支策略:对非整数变量 \(y\) 分支。例如,松弛解中 \(y^* \approx 2.236\),创建两个子问题:
- 子问题1:添加约束 \(y \leq 2\)。
- 子问题2:添加约束 \(y \geq 3\)。
- 每个子问题仍是NLP问题,需重新求解。
-
求解子问题:
- 子问题1(y ≤ 2):
- 最小化 \(f(x, y)\),约束包括原约束及 \(y \leq 2\)。
- 求解得 \(x \approx 1.5, y = 2\),目标值 \(f = (1.5-1.5)^2 + (2-2.5)^2 = 0.25\)。
- 由于y已为整数,该解可行,记录为候选解,全局上界更新为0.25。
- 子问题2(y ≥ 3):
- 添加约束 \(y \geq 3\),结合原约束 \(x + y \leq 4\) 得 \(x \leq 1\)。
- 求解得 \(x \approx 1.0, y = 3\),目标值 \(f = (1-1.5)^2 + (3-2.5)^2 = 0.5\)。
- 该解可行,但目标值0.5大于当前上界0.25,故被剪枝(因分支不会产生更优解)。
- 子问题1(y ≤ 2):
-
终止与输出:
- 所有分支被探索或剪枝后,最佳候选解为 \((x=1.5, y=2)\),目标值0.25。
- 验证约束:\(x+y=3.5 \leq 4\), \(x^2+y^2=2.25+4=6.25 \geq 1\),满足要求。
总结:通过松弛、分支和剪枝,将混合整数问题分解为连续子问题求解,逐步逼近整数最优解。此法适用于小规模问题,大规模时需结合启发式策略。