求matlab程序(线性规划问题)

目标函数:f=x1y1+x2y2+x3y3+x4y4约束条件:4y1+80y2+35y3+25y4<=6009y1+2y2+30y3+40y4<=700y1=-6.49*... 目标函数:f=x1y1+x2y2+x3y3+x4y4
约束条件:4y1+80y2+35y3+25y4<=600
9y1+2y2+30y3+40y4<=700
y1=-6.49*x1+6748
y2=-1.2*x2+1184
y3=-0.22x3+0.026x4+420
y4=-0.034x4+0.027x3+70
所有变量均〉=0
求:目标函数最大值
另:添加约束条件:x1y1+x2y2+x3y3+x4y4<=1779110后,再求目标函数最大值
展开
 我来答
wacs5
2008-12-31 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2745万
展开全部
你这个不是线性规划,
因为f是关于x1的二次方,这个应当是二次型规划(非线性规划的一种)
下面是用非线性规划求解的。

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f=zhidao_theendoflife(x)
%目标函数构造
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);

y1=-6.49*x1+6748;
y2=-1.2*x2+1184;
y3=-0.22*x3+0.026*x4+420;
y4=-0.034*x4+0.027*x3+70;

f=x1*y1+x2*y2+x3*y3+x4*y4;
f=-f;%你要求最大值,这里加负,然后计算最小值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [y,yeq]=zhidao_theendoflife_cond(x)
%约束条件
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);

y1=-6.49*x1+6748;
y2=-1.2*x2+1184;
y3=-0.22*x3+0.026*x4+420;
y4=-0.034*x4+0.027*x3+70;

y=[4*y1+80*y2+35*y3+25*y4-600;9*y1+2*y2+30*y3+40*y4-700]; %加约束的话,在这里加
yeq=[];%等式约束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

返回Matlab输入:
x0=[0;0;0;0]; xm=[0;0;0;0]; xM=inf*[1;1;1;1]; A=[]; B=[]; Aeq=[]; Beq=[];
[x,f_min,flag,c]=fmincon('zhidao_theendoflife',x0,A,B,Aeq,Beq,xm,xM,'zhidao_theendoflife_cond');
f_max=-f_min;
x,f_max
得到结果
x =
1.0e+003 *

0.9840
0.9619
2.8354
4.0759

f_max =
1.3974e+005

===========
另加条件时,将zhidao_theendoflife_cond文件中的
y=[4*y1+80*y2+35*y3+25*y4-600;9*y1+2*y2+30*y3+40*y4-700]; %加约束的话,在这里加
===>
y=[4*y1+80*y2+35*y3+25*y4-600;9*y1+2*y2+30*y3+40*y4-700;x1*y1+x2*y2+x3*y3+x4*y4-1779110];
改完结果也是一样的.因为第一次不加时,求出的f_max = 1.3974e+005(目标),它自然满足你的新添加的约束.
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
百度网友3995f6b
2008-12-31 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:0
展开全部
你这个问题需要转化一下,把y相关的变成x相关的,然后解法如下http://gyzx.szpt.edu.cn/lei/wskt1/shangce/files/book/5_4.htm
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e56ba1038
2008-12-31 · TA获得超过2499个赞
知道小有建树答主
回答量:821
采纳率:0%
帮助的人:0
展开全部
直接使用:linprog 函数

例子:

f = [-5; -4; -6]
A = [1 -1 1
3 2 4
3 2 0];
b = [20; 42; 30];
lb = zeros(3,1);

[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb);

把参数改成你的就可以了。

不过想问一下,你确定是线性规划么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式