工地开工问题数学建模

        某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系ab表示,距离单位:km)及水泥日用量d(单位:t)由下表给出。目前有两个临时料场位于A(5,1),B(2,7)。日储量各有20t。假设从料场到工地之间均有直线道路相连。

问题一:试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小?(吨千米数为吨乘以路线的千米数)

解:确定决策变量

设第i个工地的坐标为(ai,bi),水泥日用量di= 1,2....,6,料场位置(xj,yj),日储量为ej=1,2;从料场j向工地i的运送量为Xij

解第一问因为已确定使用A和B料场,其坐标xj和yj,是已知的常数,所以决策变量只有Xij;

2、确定约束条件

• 料场水泥运输总量不超过其日储量:

两个料场向某工地运输量之和等于该工地水泥日用量:

3、确定目标函数

• 求总吨千米数最小,即运送量乘以运送距离求和:

根据1、2、3,建立模型

• 综上,可建立规划模型:

模型的建立

• 对于问题而言:决策变量𝑋𝑖𝑗,𝑋𝑖 ,𝑋𝑗,所以目标函数为非线性的,且约束条件也是非线性表示的。

为解决此问题选用lingo程序,lingo程序见下连接。

链接:https://pan.baidu.com/s/1TZn8fWUAUjHhokm7fCJHTw?pwd=rwcn 
提取码:rwcn

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Lingo求解线性规划问题的示例代码: ```java import lingo.*; import java.util.*; public class LingoTest { public static void main(String[] args) { try { // 创建Lingo对象 Lingo lingo = new Lingo(); // 创建模型 lingo.CreateModel(); // 定义决策变量 LingoVariable x1 = lingo.AddVariable("x1", 0, LingoInfinity, LingoInteger); LingoVariable x2 = lingo.AddVariable("x2", 0, LingoInfinity, LingoInteger); // 定义目标函数 LingoObjective obj = lingo.SetObjective("maximize", 5 * x1 + 4 * x2); // 添加约束条件 lingo.AddConstraint(2 * x1 + x2 <= 100); lingo.AddConstraint(x1 + 2 * x2 <= 50); // 求解线性规划问题 lingo.Solve(); // 获取解 Map<String, Object> solution = new HashMap<>(); solution.put("x1", x1.GetLevel()); solution.put("x2", x2.GetLevel()); solution.put("Objective", obj.GetValue()); // 输出解 System.out.println("Solution: " + solution); } catch (LingoException e) { System.err.println(e.getMessage()); } } // 定义正无穷 private static final double LingoInfinity = 1e30; } ``` 在上面的代码中,我们使用了Lingo Java API来求解线性规划问题。首先,我们创建了一个Lingo对象,并创建了一个模型。接着,我们定义了两个决策变量x1和x2,以及一个目标函数obj。然后,我们添加了两个约束条件,并设置了目标函数的优化方向为最大化。最后,我们调用了Solve方法求解线性规划问题,并获取了解的值。在这个例子中,我们使用了整数线性规划,因此将决策变量的类型设置为整数。如果需要使用浮点数线性规划,可以将决策变量的类型设置为LingoContinuous。 需要注意的是,Lingo Java API需要在Lingo的安装目录下添加lingo.jar文件,并将该文件添加到Java的classpath中。同时,还需要添加Lingo的动态链接库文件到操作系统的库路径中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值