用MATLAB算法解决如下优化问题:
min: 1./(10-2.^x)-3./(50-2.^y)-x-y;
s.t. 1./(10-2.^x)-3./(50-2.^y)<=0.3;
x,y>=0;
(1)原问题的matlab解决代码
%将代码写成没有返回值的函数形式,方便在同一个文件中调用非线性约束函数
function solve_nonconvex_optimization_problem
clear;clc;
%使用匿名函数定义目标函数
obj_fun=@(x_vec)1./(10-2.^x_vec(1))-3./(50-2.^x_vec(2))-x_vec(1)-x_vec(2);
%调用fmincon求解非线性约束优化问题
x0=1;y0=1;
options = optimoptions('fmincon','Algorithm','interior-point');
result=fmincon(obj_fun,[x0,y0],[],[],[],[],[0,0],[inf,inf],@my_con,options)
end
%定义fmincon需要的非线性约束函数,c表示非线性不等式约束(c<=0),c_eq表示非线性等式约束(c_eq=0)
function [c,c_eq]=my_con(x_vec)
c=1./(10-2.^x_vec(1))-3./(50-2.^x_vec(2))-0.3;
c_eq=[];
end
(2)原问题的运行结果