数学建模笔记(三)非线性规划和多目标优化
非线性规划概念和理论
非线性规划问题的数学模型
有约束非线性规划的求解
常见的处理思路是:可能的话将非线性问题转化为线性问题,将约束问题转化为无约束问题。
1.对有等式约束的非线性规划问题使用Lagrange乘数法求解
2.罚函数法:
利用目标函数和约束函数构造带参数的增广目标函数,从而转换成一系列无约束非线性规划问题来进行求解。
凸规划
基本概念:
1.凸集与凸函数的定义
凸集:
凸函数:
例题1.
求解:
先对目标函数和约束函数中的非线性函数求二阶行列式,若均大于0,则是凸优化问题。
求解代码:
import numpy as np
import cvxpy as cp
x=cp.Variable(2,pos=True)
obj=cp.Minimize(sum(x**2)-4*x[0]+4)
con=[-x[0]+x[1]-2<=0,
x[0]**2-x[1]+1<=0]
prob = cp.Problem(obj, con)
prob.solve(solver='CVXOPT')
print("最优值为:",round(prob.value,4))
print("最优解为:\n", np.round(x.value,4))
#-------------结果--------------
最优值为: 3.7989
最优解为:
[0.5536 1.3064]
一个简单的非线性规划模型
数学建模五步骤:
提出问题、选择建模方法、推导模型的数学表达式、求解模型、回答问题
例题2.
19英寸数量 x 1 x_1 x1
21英寸数量 x 2 x_2 x2
19英寸利润 x 1 ∗ ( 339 − 195 − 0.01 x 1 − 0.003 x 2 ) x_1* (339-195-0.01x_1-0.003x_2) x1∗