条件优化约束

时间:2018-10-08 20:01:14

标签: r linear-programming lpsolve

我正在尝试向曲棍球数据集添加一些约束。我正在尝试根据约束条件优化投影点

  1. 工资<= 50000
  2. 中心= 2
  3. 防御= 2
  4. 翅膀= 2
  5. 目标= 1

我已经获得了使用lpSolveAPI的这些约束

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");

这适用于以下代码

if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}

我现在想添加一些更复杂的约束,例如:

  • 这8名球员应该完全来自3个不同的球队

我对此进行了几次尝试,但一直陷于困境。例如,这就是我为3个不同的团队尝试过的。它将从2支球队中选出3名球员,但第7名和第8名球员并未分组。

hockey <- structure(list( Last.Name = c("Doe1", "Doe2", "Doe3", "Doe4", 
"Doe5", "Doe6", "Doe7", "Doe8", "Doe9", "Doe10", "Doe11", "Doe12", 
"Doe13", "Doe14", "Doe15", "Doe16", "Doe17", "Doe18", "Doe19", 
"Doe20", "Doe21", "Doe22", "Doe23", "Doe24", "Doe25", "Doe26", 
"Doe27", "Doe28", "Doe29", "Doe30", "Doe31", "Doe32", "Doe33", 
"Doe34", "Doe35", "Doe36", "Doe37", "Doe38", "Doe39", "Doe40", 
"Doe41", "Doe42", "Doe43", "Doe44", "Doe45", "Doe46", "Doe47", 
"Doe48", "Doe49", "Doe50", "Doe51", "Doe52", "Doe53", "Doe54", 
"Doe55", "Doe56", "Doe57", "Doe58", "Doe59", "Doe60", "Doe61", 
"Doe62", "Doe63", "Doe64", "Doe65", "Doe66", "Doe67", "Doe68", 
"Doe69", "Doe70", "Doe71", "Doe72", "Doe73", "Doe74", "Doe75", 
"Doe76", "Doe77", "Doe78", "Doe79", "Doe80", "Doe81", "Doe82", 
"Doe83", "Doe84", "Doe85", "Doe86", "Doe87", "Doe88", "Doe89", 
"Doe90", "Doe91", "Doe92", "Doe93", "Doe94", "Doe95", "Doe96", 
"Doe97", "Doe98", "Doe99", "Doe100", "Doe101", "Doe102", "Doe103", 
"Doe104", "Doe105", "Doe106", "Doe107", "Doe108", "Doe109", "Doe110", 
"Doe111", "Doe112", "Doe113", "Doe114", "Doe115", "Doe116", "Doe117", 
"Doe118", "Doe119", "Doe120", "Doe121", "Doe122", "Doe123", "Doe124", 
"Doe125", "Doe126", "Doe127", "Doe128", "Doe129", "Doe130", "Doe131", 
"Doe132", "Doe133", "Doe134", "Doe135", "Doe136", "Doe137", "Doe138", 
"Doe139", "Doe140", "Doe141", "Doe142", "Doe143", "Doe144", "Doe145", 
"Doe146", "Doe147", "Doe148", "Doe149", "Doe150", "Doe151", "Doe152", 
"Doe153", "Doe154", "Doe155", "Doe156", "Doe157", "Doe158", "Doe159", 
"Doe160", "Doe161", "Doe162", "Doe163", "Doe164", "Doe165", "Doe166", 
"Doe167", "Doe168", "Doe169", "Doe170", "Doe171", "Doe172", "Doe173", 
"Doe174", "Doe175", "Doe176", "Doe177", "Doe178", "Doe179", "Doe180", 
"Doe_goalie_1", "Doe_goalie_2", "Doe_goalie_3", "Doe_goalie_4", 
"Doe_goalie_5", "Doe_goalie_6", "Doe_goalie_7", "Doe_goalie_8", 
"Doe_goalie_9", "Doe_goalie_10"), Salary = c(4300L, 4200L, 4200L, 
4700L, 4700L, 4500L, 4900L, 4400L, 3600L, 3200L, 3000L, 3000L, 
6300L, 7800L, 4400L, 5800L, 5800L, 4000L, 4000L, 6500L, 5100L, 
4200L, 5800L, 5800L, 3100L, 3200L, 3700L, 3100L, 3100L, 3500L, 
4600L, 4900L, 4400L, 7000L, 7600L, 7200L, 5500L, 7500L, 6300L, 
5600L, 5400L, 5600L, 3400L, 4600L, 3100L, 3100L, 3300L, 3400L, 
6500L, 8000L, 6500L, 7000L, 5900L, 5000L, 5400L, 4400L, 7800L, 
3700L, 3400L, 3100L, 4500L, 3900L, 3800L, 3100L, 3200L, 3500L, 
6500L, 5200L, 6700L, 4700L, 4300L, 5700L, 6300L, 7200L, 5600L, 
3300L, 4900L, 4400L, 5000L, 4700L, 3700L, 3100L, 3300L, 3400L, 
4000L, 4700L, 7700L, 7900L, 7200L, 4800L, 7700L, 7500L, 7500L, 
3200L, 4700L, 3500L, 4700L, 3500L, 3900L, 3000L, 3000L, 3100L, 
7200L, 7100L, 5600L, 6900L, 4300L, 7000L, 6500L, 4300L, 7800L, 
5400L, 3400L, 4900L, 3000L, 3600L, 3500L, 3000L, 3400L, 3500L, 
5200L, 5400L, 5400L, 6500L, 6000L, 5400L, 7200L, 6500L, 8000L, 
4900L, 5400L, 5800L, 4000L, 3100L, 4000L, 3200L, 3000L, 3100L, 
6200L, 7200L, 4800L, 4800L, 7400L, 4000L, 4300L, 5400L, 6600L, 
4600L, 3900L, 5700L, 3900L, 3500L, 3500L, 3100L, 3200L, 3000L, 
5700L, 6800L, 6700L, 6600L, 5800L, 7600L, 7000L, 7800L, 7000L, 
5800L, 5800L, 4800L, 3200L, 4200L, 4000L, 3500L, 3300L, 3100L, 
4900L, 6100L, 7300L, 4700L, 8000L, 5100L, 6700L, 6800L, 6900L, 
6900L, 6800L, 6700L, 6000L, 5800L, 4400L, 6500L), Position = c("C", 
"W", "W", "C", "W", "W", "C", "W", "W", "C", "W", "W", "D", "D", 
"D", "D", "D", "D", "C", "W", "W", "C", "W", "W", "C", "W", "W", 
"C", "W", "W", "D", "D", "D", "D", "D", "D", "C", "W", "W", "C", 
"W", "W", "C", "W", "W", "C", "W", "W", "D", "D", "D", "D", "D", 
"D", "C", "W", "W", "C", "W", "W", "C", "W", "W", "C", "W", "W", 
"D", "D", "D", "D", "D", "D", "C", "W", "W", "C", "W", "W", "C", 
"W", "W", "C", "W", "W", "D", "D", "D", "D", "D", "D", "C", "W", 
"W", "C", "W", "W", "C", "W", "W", "C", "W", "W", "D", "D", "D", 
"D", "D", "D", "C", "W", "W", "C", "W", "W", "C", "W", "W", "C", 
"W", "W", "D", "D", "D", "D", "D", "D", "C", "W", "W", "C", "W", 
"W", "C", "W", "W", "C", "W", "W", "D", "D", "D", "D", "D", "D", 
"C", "W", "W", "C", "W", "W", "C", "W", "W", "C", "W", "W", "D", 
"D", "D", "D", "D", "D", "C", "W", "W", "C", "W", "W", "C", "W", 
"W", "C", "W", "W", "D", "D", "D", "D", "D", "D", "G", "G", "G", 
"G", "G", "G", "G", "G", "G", "G"), Team = c("A", "A", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", 
"B", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "D", "D", 
"D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
"D", "D", "D", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
"E", "E", "E", "E", "E", "E", "E", "E", "F", "F", "F", "F", "F", 
"F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
"G", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
"G", "G", "G", "G", "G", "H", "H", "H", "H", "H", "H", "H", "H", 
"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "I", "I", "I", 
"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
"I", "I", "J", "J", "J", "J", "J", "J", "J", "J", "J", "J", "J", 
"J", "J", "J", "J", "J", "J", "J", "A", "B", "C", "D", "E", "F", 
"G", "H", "I", "J"), Opponent = c("B", "B", "B", "B", "B", "B", 
"B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "D", "D", "D", "D", "D", "D", "D", "D", "D", 
"D", "D", "D", "D", "D", "D", "D", "D", "D", "C", "C", "C", "C", 
"C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", "C", 
"C", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", "F", 
"F", "F", "F", "F", "F", "F", "E", "E", "E", "E", "E", "E", "E", 
"E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "H", "H", 
"H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", "H", 
"H", "H", "H", "G", "G", "G", "G", "G", "G", "G", "G", "G", "G", 
"G", "G", "G", "G", "G", "G", "G", "G", "J", "J", "J", "J", "J", 
"J", "J", "J", "J", "J", "J", "J", "J", "J", "J", "J", "J", "J", 
"I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", "I", 
"I", "I", "I", "I", "I", "B", "A", "D", "C", "F", "E", "H", "G", 
"J", "I"), Line = c("1", "1", "1", "2", "2", "2", "3", "3", "3", 
"4", "4", "4", "x", "x", "x", "x", "x", "x", "1", "1", "1", "2", 
"2", "2", "3", "3", "3", "4", "4", "4", "x", "x", "x", "x", "x", 
"x", "1", "1", "1", "2", "2", "2", "3", "3", "3", "4", "4", "4", 
"x", "x", "x", "x", "x", "x", "1", "1", "1", "2", "2", "2", "3", 
"3", "3", "4", "4", "4", "x", "x", "x", "x", "x", "x", "1", "1", 
"1", "2", "2", "2", "3", "3", "3", "4", "4", "4", "x", "x", "x", 
"x", "x", "x", "1", "1", "1", "2", "2", "2", "3", "3", "3", "4", 
"4", "4", "x", "x", "x", "x", "x", "x", "1", "1", "1", "2", "2", 
"2", "3", "3", "3", "4", "4", "4", "x", "x", "x", "x", "x", "x", 
"1", "1", "1", "2", "2", "2", "3", "3", "3", "4", "4", "4", "x", 
"x", "x", "x", "x", "x", "1", "1", "1", "2", "2", "2", "3", "3", 
"3", "4", "4", "4", "x", "x", "x", "x", "x", "x", "1", "1", "1", 
"2", "2", "2", "3", "3", "3", "4", "4", "4", "x", "x", "x", "x", 
"x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"), 
Power_Play = c("1", "1", "1", "1", "2", "2", "2", "2", "x", 
"x", "x", "x", "1", "2", "x", "x", "x", "x", "1", "1", "1", 
"1", "2", "2", "2", "2", "x", "x", "x", "x", "1", "2", "x", 
"x", "x", "x", "1", "1", "1", "1", "2", "2", "2", "2", "x", 
"x", "x", "x", "1", "2", "x", "x", "x", "x", "1", "1", "1", 
"1", "2", "2", "2", "2", "x", "x", "x", "x", "1", "2", "x", 
"x", "x", "x", "1", "1", "1", "1", "2", "2", "2", "2", "x", 
"x", "x", "x", "1", "2", "x", "x", "x", "x", "1", "1", "1", 
"1", "2", "2", "2", "2", "x", "x", "x", "x", "1", "2", "x", 
"x", "x", "x", "1", "1", "1", "1", "2", "2", "2", "2", "x", 
"x", "x", "x", "1", "2", "x", "x", "x", "x", "1", "1", "1", 
"1", "2", "2", "2", "2", "x", "x", "x", "x", "1", "2", "x", 
"x", "x", "x", "1", "1", "1", "1", "2", "2", "2", "2", "x", 
"x", "x", "x", "1", "2", "x", "x", "x", "x", "1", "1", "1", 
"1", "2", "2", "2", "2", "x", "x", "x", "x", "1", "2", "x", 
"x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", 
"x"), Projection = c(7.9, 6.4, 4, 4.3, 5.4, 3, 3.1, 3, 4, 
1.6, 0.7, 1.5, 2.5, 2.2, 0, 2.3, 2.2, 0.5, 3, 7, 5.7, 5.1, 
5.6, 4.5, 2.6, 2.6, 2.2, 1.8, 0, 0.1, 1.4, 2.1, 0.9, 0.4, 
1.5, 0.1, 6.1, 5.6, 5.7, 6, 5.7, 4, 2.7, 3.7, 2, 0.8, 0.7, 
1.8, 2.7, 1.1, 2.6, 0.4, 1.8, 2.9, 4.7, 4.9, 4.8, 4.1, 3.6, 
5.3, 3.2, 3.7, 2.4, 1.6, 2, 1.9, 3.4, 1.7, 2.4, 0.6, 0.8, 
1.4, 5.6, 4.8, 7.7, 5.9, 5.6, 3.8, 2.1, 3.5, 3.1, 1.9, 0.8, 
1.9, 1.7, 4, 1.5, 2.5, 0.8, 1.3, 6.7, 3.3, 7.6, 5.4, 5, 5.3, 
3.2, 3.8, 2.7, 0.9, 0.1, 0.9, 2.6, 2.7, 2.3, 1.7, 0, 1.8, 
6.8, 3.3, 6.1, 4.7, 3.8, 6, 3.1, 2.4, 3.7, 0.5, 1.4, 1.5, 
3.1, 3.4, 0.3, 2.6, 3, 1.5, 3.3, 4.5, 6.1, 4.8, 5.5, 3.8, 
2.4, 2.2, 3.8, 0.6, 1.2, 0.8, 3.1, 1.2, 0.8, 0.6, 0.5, 1.8, 
8, 3.3, 7.2, 3.6, 5.8, 5.4, 2.1, 2.6, 2.8, 0.9, 1.7, 1.4, 
1.7, 3.4, 1.9, 2.4, 2.9, 0, 7.5, 7.3, 4.8, 4.5, 5.9, 4.3, 
3.8, 3.6, 2.8, 1.5, 1.4, 2, 2.5, 1.9, 2.3, 1, 2.1, 1.6, 5.3, 
5.7, 4.5, 4.7, 8.7, 8.9, 7.6, 5.2, 6.7, 6.7)), .Names = c("Last.Name", 
"Salary", "Position", "Team", "Opponent", "Line","Power_Play", "Projection"), 
row.names = c(NA, -190L), class = "data.frame")

0 个答案:

没有答案