i4h / php-mip

一个用于创建和输出混合整数规划的 PHP 类

dev-master 2017-02-07 14:43 UTC

This package is not auto-updated.

Last update: 2024-09-23 14:46:58 UTC


README

PhpMIP 是一个表示线性混合整数规划的 PHP 类。

它包含一个写入 IBM CPLEX LP 文件格式的写入器,以及一个基础写入器和接口,这应该有助于添加您自己的写入器类。

安装

可以通过 composer 将此包安装到您的项目中

 $ php composer.phar require i4h/php-mip "*"

用法

请参阅示例目录中的两个 MIP 示例。

工作流程遵循通用建模语言

  • 创建集合
  • 创建变量
  • 创建约束
  • 定义目标函数

以下代码来自 example/trivial.php

$mip = new \vendor\i4h\PhpMIP\MIP();
 
/* Variable x */
$mip->addVariable("x", \vendor\i4h\PhpMIP\MIPvariable::TYPE_CONTINUOUS);
$mip->setVariableLB("x", 0);
  
/* Variable y */
$mip->addVariable("y", \vendor\i4h\PhpMIP\MIPvariable::TYPE_CONTINUOUS);
$mip->setVariableLB("y", 0);
  
/* Objective (default coefficient is 1) */
$mip->addObjectiveCoefficient("x");
$mip->addObjectiveCoefficient("y");
  
/* Constraint x + y <= 1 */
$vars = [
    ['name'=>'x', 'coefficient'=>1],
    ['name'=>'y', 'coefficient'=>1],
];
$mip->addConstraintLE($vars, 1);
  
/* Use Lp writer to write to a file */
$writer = new \vendor\i4h\PhpMIP\LpWriter();
$writer->setOutFile("/path/to/outfile.lp");
$writer->write(create);

上述代码将创建一个包含以下内容的 lp 文件

Minimize
obj: 1 x + 1 y 
Subject To
1 x + 1 y <= 1
Bounds
end