html5网站基础,工作站做网站,思维导图模板免费下载,网站获利模式一、基本概念
非线性规划的应用包括工程设计、资源分配、经济模型等。在求解过程中#xff0c;由于非线性特性#xff0c;常用的方法有梯度法、牛顿法、启发式算法等。求解非线性规划问题时#xff0c;解的存在性和唯一性通常较难保证#xff0c;且可能存在多个局部最优解…一、基本概念
非线性规划的应用包括工程设计、资源分配、经济模型等。在求解过程中由于非线性特性常用的方法有梯度法、牛顿法、启发式算法等。求解非线性规划问题时解的存在性和唯一性通常较难保证且可能存在多个局部最优解。 非线性规划是数学建模中处理优化问题的一种方法尤其在目标函数或约束条件为非线性时。它的基本形式可以表示为 二、实际应用
1、投资决策问题 三、程序代码求解方法
1、例题一 MATLAB求解
clc,clear
x0[150 85 150 145 130 0];
y0[140 85 155 50 150 0];
q[243 236 220.5 159 230 52];
xy0[x0; y0];
d0dist(xy0); %求矩阵各个列向量之间的距离
d0(find(d00))inf;
a0asind(8./d0) %以度为单位的反函数
xy1x0i*y0
xy2exp(i*q*pi/180)
for m1:6for n1:6if n~mb0(m,n)angle((xy2(n)-xy2(m))/(xy1(m)-xy1(n))); endend
end
b0b0*180/pi;
dlmwrite(txt1.txt,a0,delimiter, \t,newline,PC);
dlmwrite(txt1.txt,~,-append); %往纯文本文件中写LINGO数据的分割符
dlmwrite(txt1.txt,b0,delimiter, \t,newline,PC,-append,roffset, 1)Python求解
import numpy as np# 初始化数据
x0 np.array([150, 85, 150, 145, 130, 0])
y0 np.array([140, 85, 155, 50, 150, 0])
q np.array([243, 236, 220.5, 159, 230, 52])
xy0 np.vstack((x0, y0))# 计算距离矩阵
def dist(xy):return np.linalg.norm(xy[:, np.newaxis] - xy[:, np.newaxis].T, axis0)d0 dist(xy0)
d0[d0 0] np.inf # 将距离为0的值设为无穷大a0 np.degrees(np.arcsin(8.0 / d0)) # 以度为单位的反正弦# 复数表示
xy1 x0 1j * y0
xy2 np.exp(1j * np.radians(q))# 计算角度矩阵
b0 np.zeros((6, 6))
for m in range(6):for n in range(6):if n ! m:b0[m, n] np.angle((xy2[n] - xy2[m]) / (xy1[m] - xy1[n]))b0 np.degrees(b0)# 写入文件
np.savetxt(txt1.txt, a0, delimiter\t, newline\n)
with open(txt1.txt, a) as f:f.write(~\n) # 写入分隔符np.savetxt(f, b0, delimiter\t, newline\n, fmt%f, header, comments, footer, encodingutf-8)2、例题二 MATLAB求解
function [g,h]fun2(x);
g[-x(1)^2x(2)-x(3)^2
x(1)x(2)^2x(3)^3-20]; %非线性不等式约束
h[-x(1)-x(2)^22
x(2)2*x(3)^2-3]; %非线性等式约束function ffun1(x);
fsum(x.^2)8;[x,y]fmincon(fun1,rand(3,1),[],[],[],[],zeros(3,1),[],fun2)
Python求解
import numpy as np
from scipy.optimize import minimize# 非线性不等式约束
def constraints_inequality(x):return np.array([-x[0]**2 x[1] - x[2]**2,x[0] x[1]**2 x[2]**3 - 20])# 非线性等式约束
def constraints_equality(x):return np.array([-x[0] - x[1]**2 2,x[1] 2*x[2]**2 - 3])# 目标函数
def objective(x):return np.sum(x**2) 8# 初始猜测
x0 np.random.rand(3)# 定义约束
cons [{type: ineq, fun: constraints_inequality},{type: eq, fun: constraints_equality}]# 优化
result minimize(objective, x0, constraintscons, bounds[(0, None)]*3)# 输出结果
print(Optimal solution:, result.x)
print(Objective function value:, result.fun)