ex3_3 Equality constrains and unrestricted variables

matlab source code:

% Ex3_3.m
% Example 3.3
%  Optimization Using MATLAB by P.Venkataraman
%
%	Using drawLine.m 
%
drawLine(0,6,1,1,5,'l');
drawLine(0,6,2,1,4,'e');
drawLine(0,6,1,1,1,'g');
drawLine(0,6,2,-1,8,'n');
xlabel('Hours spent studying');
ylabel('Hours of pin ball');
title('Example 3.3 -Equality Constraint and Negative Design Variables')
grid


% drawLine.m
% Drawing linear constraints for LP programming problems
% Dr. P.Venkataraman
% Optimization Using Matlab
% Chapter 3 - linear Programming
%
% Lines are represented as: ax + by = c ( c >= 0)
% x1, x2 indicate the range of x for the line
% typ indicates type of line being drawn l (<=)
%                                        g, (>=)
%                                        n  (none)
%
% The function will draw line(s) in the figure window
% the green line represents the actual value 
% of the constraint
% the red dashed line is 10 % larger or smaller
% (in lieu of hash marks)
% the limit constraints are identifies in magenta color
% the objective function is in blue dashed lines
%
function ret = drawLine(x1,x2,a,b,c,typ)

% recognize the types and set color
if (typ == 'n') 
   str1 = 'b';
   str2 = 'b';
   cmult = 1;
elseif (typ == 'e')
      str1 ='m';
      str2 ='m';
 else
   str1 = 'g';
   str2 = 'r';
end

% values for drawing hash marks
% depending on the direction of inequality
if (typ ~= 'n' | 'e') 
   if (typ == 'l')
      cmult = +1;
   else cmult = -1;
   end
end

% set up a factor for drawing the hash constraint
if (abs(c) >= 10)
   cfac = 0.025;
elseif (abs(c)> 5) & (abs(c) <  10)
   cfac = 0.05;
else
   cfac = 0.1;
end

if (c == 0 ) 
   cdum = cmult*0.1; 
else
   cdum = (1 + cmult* cfac)*c;
end

% if b = 0 then determine end points of line x line
if ( b ~= 0)
   y1 = (c - a*x1)/b;
   y1n = (cdum - a* x1)/b;
   y2 = (c - a* x2)/b;
   y2n = (cdum - a*x2)/b;
else
   % identfy limit constraints by magenta color
   str1 = 'm';
   str2 = 'm';
   y1 = x1; % set  y1 same length as input x1
   y2 = x2;  % set y2 same length as input x2
   x1 = c/a;  % adjust x1 to actual value
   x2 = c/a;  % adjust x2 to actual value
   y1n = 0;  % set y = 0;
   y2n = 0;  % set  y = 0
end

if (a == 0) 
   str1 = 'm'; % set color for limit line
   str2 = 'm'; % set color for limit line
end;
% draw axis with solid black color

hh = line([x1,x2],[0,0]);
set(hh,'LineWidth',1,'Color','k');

hv = line([0,0],[x1,x2]);
set(hv,'LineWidth',1,'Color','k');

% start drawing the lines

h1 = line([x1 x2], [y1,y2]);

if (typ == 'n') 
   set(h1,'LineWidth',2,'LineStyle','--','Color',str1);
else
   set(h1,'LineWidth',1,'LineStyle','-','Color',str1);
end

if (b ~= 0)&(a ~= 0)
   text(x1,y1,num2str(c));
end
if( b == 0)|(a == 0)| (typ == 'n') | (typ == 'e')
   grid
   ret = [h1];
   return, end 
grid;
h2 = line([x1 x2], [y1n,y2n]);
set(h2,'LineWidth',0.5,'LineStyle',':','Color',str2);
grid
hold on
ret = [h1 h2];

here, I would like to analysis drawLine.m

% drawLine.m
% Drawing linear constraints for LP programming problems
% Dr. P.Venkataraman
% Optimization Using Matlab
% Chapter 3 - linear Programming
%
% Lines are represented as: ax + by = c ( c >= 0)
% x1, x2 indicate the range of x for the line
% typ indicates type of line being drawn l (<=)
%                                        g, (>=)
%                                        n  (none)
%
% The function will draw line(s) in the figure window
% the green line represents the actual value 
% of the constraint
% the red dashed line is 10 % larger or smaller
% (in lieu of hash marks)
% the limit constraints are identifies in magenta color
% the objective function is in blue dashed lines
%
function ret = drawLine(x1,x2,a,b,c,typ)


% recognize the types and set color
if (typ == 'n') 
   str1 = 'b';
   str2 = 'b';
   cmult = 1;
elseif (typ == 'e')
      str1 ='m';
      str2 ='m';
 else
   str1 = 'g';
   str2 = 'r';
end

str1是第一根线的颜色,str2是第二根线的颜色



% values for drawing hash marks
% depending on the direction of inequality
if (typ ~= 'n' | 'e') 
   if (typ == 'l')
      cmult = +1;
   else cmult = -1;
   end
end
确定第二根线的挪动方向

% set up a factor for drawing the hash constraint
if (abs(c) >= 10)
   cfac = 0.025;
elseif (abs(c)> 5) & (abs(c) <  10)
   cfac = 0.05;
else
   cfac = 0.1;
end


if (c == 0 ) 
   cdum = cmult*0.1; 
else
   cdum = (1 + cmult* cfac)*c;
end
确定挪动的距离

% if b = 0 then determine end points of line x line
if ( b ~= 0)
   y1 = (c - a*x1)/b;
   y1n = (cdum - a* x1)/b;
   y2 = (c - a* x2)/b;
   y2n = (cdum - a*x2)/b;

确定第一根线和第二根线的方程

h1 = line([x1 x2], [y1,y2]);  [x1 x2]为x的范围, [y1,y2]为y的范围

h2 = line([x1 x2], [y1n,y2n]);
else
   % identfy limit constraints by magenta color
   str1 = 'm';
   str2 = 'm';
   y1 = x1; % set  y1 same length as input x1
   y2 = x2;  % set y2 same length as input x2
   x1 = c/a;  % adjust x1 to actual value
   x2 = c/a;  % adjust x2 to actual value
   y1n = 0;  % set y = 0;
   y2n = 0;  % set  y = 0

当线垂直的情况
end


if (a == 0) 
   str1 = 'm'; % set color for limit line
   str2 = 'm'; % set color for limit line
end;
% draw axis with solid black color


hh = line([x1,x2],[0,0]);
set(hh,'LineWidth',1,'Color','k');


hv = line([0,0],[x1,x2]);
set(hv,'LineWidth',1,'Color','k');


% start drawing the lines


h1 = line([x1 x2], [y1,y2]);


if (typ == 'n') 
   set(h1,'LineWidth',2,'LineStyle','--','Color',str1);
else
   set(h1,'LineWidth',1,'LineStyle','-','Color',str1);
end


if (b ~= 0)&(a ~= 0)
   text(x1,y1,num2str(c));
end
if( b == 0)|(a == 0)| (typ == 'n') | (typ == 'e')
   grid
   ret = [h1];
   return, end 
grid;
h2 = line([x1 x2], [y1n,y2n]);
set(h2,'LineWidth',0.5,'LineStyle',':','Color',str2);
grid
hold on
ret = [h1 h2];


% Ex3_3.m
% Example 3.3
%  Optimization Using MATLAB by P.Venkataraman
%
% Using drawLine.m 
%
drawLine(0,6,1,1,5,'l');

第一条线


画了过后


第一根线是绿线, 第二根线是红线, 表示绿线的左下部分是可行区域


drawLine(0,6,2,1,4,'e');

第二条线

画了过后, 这里用紫线表示



drawLine(0,6,1,1,1,'g');

第三条线


画了过后

红线在此绿线的左下角,则说明可行区域在绿线的右上角部分


drawLine(0,6,2,-1,8,'n');

目标函数


画完过后,这里用蓝虚线表示,这里目标函数的意义为与Y轴截距的负值


xlabel('Hours spent studying');
ylabel('Hours of pin ball');
title('Example 3.3 -Equality Constraint and Negative Design Variables')
grid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值