Excel解算器-can';t在解算器中确定必要的约束以完成任务

Excel解算器-can';t在解算器中确定必要的约束以完成任务,excel,solver,Excel,Solver,我很难找出完成任务所需的正确约束条件 关于该任务的小说明如下: A、 B、C、D、E、F=城市 A和B工厂正在进行制造 仓库在C和D城市 生产必须交付给E和F城市 A厂每月可生产700公斤,B厂为450公斤 E需求量为每月450公斤,F-550公斤 第一个表显示了城市之间的运输成本 每公斤 目标是获得最小的运输成本并满足 要求 流程应类似于工厂->仓库->E或F城市 我已经开始使用Excel和Solver,只是缺少了一些我无法理解的约束 链接到Excel:mega.nz/#!该死!gx4c0Bw

我很难找出完成任务所需的正确约束条件

关于该任务的小说明如下:

A、 B、C、D、E、F=城市

A和B工厂正在进行制造

仓库在C和D城市

生产必须交付给E和F城市

A厂每月可生产700公斤,B厂为450公斤

E需求量为每月450公斤,F-550公斤

第一个表显示了城市之间的运输成本 每公斤

目标是获得最小的运输成本并满足 要求

流程应类似于工厂->仓库->E或F城市

我已经开始使用Excel和Solver,只是缺少了一些我无法理解的约束

链接到Excel:mega.nz/#!该死!gx4c0Bwg3NtEEyqs0Zdnkwbclr0uWOUxW45RkSTn_‌​9k(最新版本)

只要看一下运输成本表,它看起来(至少我认为)应该是这样的:1)生产的物料移动到->B,2)B,生产的物料移动到仓库C或D,3)然后从C和D移动到E或F

例如,自动取款机直接从C仓库到E仓库,这是不可能的,因为C还没有收到A或B仓库的信息。

您在A仓库。请查看该页面上的约束

当前模型中缺少的约束涉及转运节点
C和D
。您应该声明这些只是传输节点;因此,在其列中输入的
C
(resp.
D
)数量必须等于在其行中留下的
C
(resp.
D
)数量

为此:

1-将
H20
的公式复制到
H21
H22
中。这些将说明运输节点
C
D
留下的内容

2-将
E25
的公式复制到
C25
D25
中。这些将说明进入运输节点
C
D
的内容

3-添加一个约束条件,规定进入
C
的内容应等于离开
C
(类似于
D
)。可以在数组中输入此约束,如下所示:

$H$21:$H$22 = $C$25:$D$25
最后,您可以通过删除第三个表并使用非常强大的Excel函数
SUMPRODUCT
来简化模型。也就是说,将其作为目标函数输入单元格B29中:

=SUMPRODUCT(B8:F12,B19:F23)

此函数将为您计算产品的总和
Sigma(cij*xij)
,而无需使用公式计算不同单元格中的每个产品。

@user3688039在您所附的表格中,
E25
中有一个公式:
=sum(D19:D23)
,它总结了交付到E列项目的项目。我想说的是,您应该对
C
D
中的每一项都执行相同的操作。是的,我的意思是将
E25
复制到
C25
D25
。是的,这就是我得到的,进展不错,但C20值似乎很奇怪@用户3688039对于此类线性程序,请使用
单纯形LP
解算器方法,而不是
GRG非线性
方法。再次检查您的约束,您在初始约束中添加了太多约束,因此问题变得不可行。在我添加了指定的约束之后,最初的一个对我有效;我得到:
B-->D=450
A-->E=450
A-->F=100
,其他的都是零。基本上,我用0代替了9999999,因此增加了额外的约束,否则Solver会选择一些99999作为最佳路线,我的成本高得离谱。您的成本合适吗?@user3688039没有,因为没有成本很低的路线。但是,如果您从初始工作表中修改这些值,您将看到一个有趣的解决方案:将
C8
F10
修改为某个合理的数字,即
5
。这将通过中转节点
C
创建从
a
F
的路线。