用ChatGPT求解线性规划

【例23】某厂计划生产甲、乙、丙三种产品,有机器、人工工时和原材料的限制,有关数据如表5-1所示。用ChatGPT生成MATLAB代码建立获得最大产值的生产计划的线性规划模型。[大谦MATLAB,dqmatlab点com]

表5-1 各产品机器、人工工时和原材料的限制

产品甲 产品乙 产品丙 资源总量
机器(时) 10 5 2 3000
人工(时) 5 10 4 2000
原材料(公斤) 1 1 2 500
产品售价(元) 10 15 10

1.ChatGPT提示词

新建ChatGPT会话,在提问文本框中输入下面的提示词:

prompt
你是MATLAB专家。某厂计划生产甲、乙、丙三种产品,有机器、人工工时和原材料的限制,有关数据如下所示。试建立获得最大产值的生产计划的线性规划模型。请添加代码注释。
	    产品甲	产品乙	产品丙	资源总量
机器(时)	10	5	2	3000
人工(时)	5	10	4	2000
原材料(公斤)	1	1	2	500
产品售价(元)	10	15	10

2.代码

根据提示词得到类似下面的代码:

code.matlab
% 定义目标函数系数向量(即产品的售价)
c = [-10, -15, -10]; % 为了最大化利润,需要取相反数
% 定义不等式约束矩阵 A 和右侧向量 b
A = [10, 5, 2; 5, 10, 4; 1, 1, 2];
b = [3000; 2000; 500];
% 定义上下界限制
lb = [0; 0; 0]; % 产量不小于0
% 使用线性规划工具箱求解最大产值的生产计划
[x, fval, exitflag, output] = linprog(c, [], [], A, b, lb);
% 显示结果
disp('最优生产计划:');
disp(['生产产品甲数量:', num2str(x(1))]);
disp(['生产产品乙数量:', num2str(x(2))]);
disp(['生产产品丙数量:', num2str(x(3))]);
disp(['最大产值(利润):', num2str(-fval)]);
disp(['退出标志:', num2str(exitflag)]);

3.使用代码

在MATLAB中新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/gpt23.m。运行脚本,在MATLAB命令窗口输出计算结果。

code.matlab
>> gpt23
找到最优解。
最优生产计划:
生产产品甲数量:266.6667
生产产品乙数量:25
生产产品丙数量:104.1667
最大产值(利润):4083.3333
退出标志:1

所以,要取得最大产值,需要生产产品甲266.7个单位、产品乙25个单位、产品丙104.2个单位,最大产值为4083.3元。