calc_profit 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +6 -0
- data/.rspec +2 -0
- data/Gemfile +3 -0
- data/Install +4 -0
- data/README.rdoc +23 -0
- data/Rakefile +13 -0
- data/bin/calc_profit +75 -0
- data/bin/do-demo.sh +7 -0
- data/bin/easters.rb +17 -0
- data/bin/tm-profit.rb +60 -0
- data/calc_profit.gemspec +39 -0
- data/examples/Trans.csv +92 -0
- data/examples/driver.tex +16 -0
- data/examples/lopez.csv +34 -0
- data/examples/profit.lp +93 -0
- data/examples/solution.out +814 -0
- data/lib/calc_profit.rb +14 -0
- data/lib/calc_profit/core_ext.rb +2 -0
- data/lib/calc_profit/core_ext/array.rb +10 -0
- data/lib/calc_profit/core_ext/string.rb +32 -0
- data/lib/calc_profit/latex_table_builder.rb +182 -0
- data/lib/calc_profit/match.rb +57 -0
- data/lib/calc_profit/table.rb +151 -0
- data/lib/calc_profit/transaction.rb +50 -0
- data/lib/calc_profit/transaction_group.rb +181 -0
- data/lib/calc_profit/version.rb +7 -0
- data/test/TestAddress.rb +23 -0
- data/test/TestDBase.rb +47 -0
- data/test/TestDate.rb +267 -0
- data/test/TestLog.rb +19 -0
- data/test/TestName.rb +110 -0
- data/test/TestRetriever.rb +38 -0
- data/test/TestString.rb +12 -0
- data/test/TestTeXString.rb +12 -0
- data/test/TestTransaction.rb +56 -0
- data/test/Trans.csv +92 -0
- data/test/tabdemo-tm.tex +37 -0
- data/test/tabdemo.tex +37 -0
- data/test/tables-tm.tex +235 -0
- data/test/tables.tex +235 -0
- data/test/test_helper.rb +38 -0
- metadata +222 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64a81fb45103f8d239c3aa1c9f405d74297c35a4
|
4
|
+
data.tar.gz: 49efa8af1b7e550ffb2f423f866ae228030d84d6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e34775a6ca4ea497b548bda935f1f04f677521fae27baa86935d47d45b4b9cea905b22609db93174d1a04ecee07168cbadc381ba4f3e6b54853cebcdf3ec8dd4
|
7
|
+
data.tar.gz: 2b1e6f5af7894ab734bf525687f690ff7f99754cf74ff23f96993cd6b78fac2aad6ab6fc298b26bcb0e082a0ad95dc259fc8d11014b45de222b7068f8d2322f3
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Install
ADDED
data/README.rdoc
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
= calc_profit
|
2
|
+
|
3
|
+
Description goes here.
|
4
|
+
|
5
|
+
== Installation
|
6
|
+
|
7
|
+
=== Prerequisites
|
8
|
+
* Ruby version 2.1.2 or later
|
9
|
+
|
10
|
+
== Contributing to calc_profit
|
11
|
+
|
12
|
+
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
13
|
+
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
14
|
+
* Fork the project.
|
15
|
+
* Start a feature/bugfix branch.
|
16
|
+
* Commit and push until you are happy with your contribution.
|
17
|
+
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
18
|
+
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
19
|
+
|
20
|
+
== Copyright
|
21
|
+
|
22
|
+
Copyright (c) 2015 Daniel E. Doherty. See LICENSE.txt for
|
23
|
+
further details.
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
|
4
|
+
RSpec::Core::RakeTask.new(:spec, :tag) do |t|
|
5
|
+
t.rspec_opts = "--tag ~online"
|
6
|
+
end
|
7
|
+
|
8
|
+
require "rake/testtask"
|
9
|
+
Rake::TestTask.new(:test) do |test|
|
10
|
+
test.libs << 'spec'
|
11
|
+
test.pattern = 'spec/**/*_spec.rb'
|
12
|
+
test.verbose = true
|
13
|
+
end
|
data/bin/calc_profit
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
# -*- mode: enh-ruby -*-
|
3
|
+
|
4
|
+
require 'calc_profit'
|
5
|
+
|
6
|
+
module CalcProfit
|
7
|
+
class Runner
|
8
|
+
|
9
|
+
attr_reader :transaction_group
|
10
|
+
|
11
|
+
def initialize(input)
|
12
|
+
@transaction_group = TransactionGroup.new(Table.new(input))
|
13
|
+
end
|
14
|
+
|
15
|
+
def profit(recalc = false)
|
16
|
+
recalc if recalc
|
17
|
+
transaction_group.profit
|
18
|
+
end
|
19
|
+
|
20
|
+
def raw_transaction_tex_table
|
21
|
+
transaction_group.raw_transaction_table
|
22
|
+
end
|
23
|
+
|
24
|
+
def transaction_tex_table
|
25
|
+
tb = LatexTableBuilder.new(transaction_group.transaction_table)
|
26
|
+
tb.build(formats: { shares: 0, price: 4 },
|
27
|
+
align: {code: 'c', info: 'l'},
|
28
|
+
define_as: 'TransTable')
|
29
|
+
end
|
30
|
+
|
31
|
+
def match_tex_table
|
32
|
+
tb = LatexTableBuilder.new(transaction_group.match_table)
|
33
|
+
tb.build(exclude: [:info_p, :info_s],
|
34
|
+
total_on: [:shares_p, :shares_s, :profit],
|
35
|
+
align: { code_p: 'c', code_s: 'c'},
|
36
|
+
formats: {
|
37
|
+
shares_p: 0, price_p: 4,
|
38
|
+
shares_s: 0, price_s: 4, profit: 2
|
39
|
+
},
|
40
|
+
define_as: 'MatchTable')
|
41
|
+
end
|
42
|
+
|
43
|
+
def run
|
44
|
+
transaction_group.match
|
45
|
+
puts transaction_tex_table
|
46
|
+
puts match_tex_table
|
47
|
+
puts "\\newcommand{\\TotalProfit}{#{transaction_group.profit}}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
if __FILE__ == $0
|
53
|
+
if !ARGV[0].blank? && File.readable?(ARGV[0])
|
54
|
+
CalcProfit::Runner.new(ARGV[0]).run
|
55
|
+
else
|
56
|
+
msg = <<EOS
|
57
|
+
Each csv file header must be as follows:
|
58
|
+
|
59
|
+
Ref, Date, Code, Raw Shares, Shares, Price, Info
|
60
|
+
|
61
|
+
Where:
|
62
|
+
'Ref' is any text (preferably short, like a number) attached to a
|
63
|
+
transaction to identify it when matching
|
64
|
+
'Date' is the date of the transaction in ISO form: '2014-05-14'
|
65
|
+
'Code' is 'P' or 'S' for purchase or sale
|
66
|
+
'Raw Shares' is the number of shares in the original transaction for ref
|
67
|
+
'Shares' is the number of shares adjusted to take into account pecuniary
|
68
|
+
interest or other adjustment to original number of shares
|
69
|
+
'Price' is the price per share for the transaction
|
70
|
+
'Info' is also free text, like entity name, etc., that helps to identify
|
71
|
+
the transaction.
|
72
|
+
EOS
|
73
|
+
STDERR.puts "usage: calc-profit <trans-csv-file>" + "\n\n" + msg
|
74
|
+
end
|
75
|
+
end
|
data/bin/do-demo.sh
ADDED
data/bin/easters.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#! /usr/bin/ruby -w
|
2
|
+
|
3
|
+
require 'dedutils'
|
4
|
+
|
5
|
+
base = Date.new(33, 1, 1)
|
6
|
+
3000.times { |k|
|
7
|
+
dt = Date.new(base.year + k, 1, 1)
|
8
|
+
easter = dt.easter_this_year
|
9
|
+
print "%04d: #{easter}" % dt.year
|
10
|
+
if easter.month == 3 and easter.day <= 23
|
11
|
+
print easter.day == 22 ? " <<<\n" : " <<\n"
|
12
|
+
elsif easter.month == 4 and easter.day >= 24
|
13
|
+
print easter.day == 25 ? " >>>\n" : " >>\n"
|
14
|
+
else
|
15
|
+
print "\n"
|
16
|
+
end
|
17
|
+
}
|
data/bin/tm-profit.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
#! /usr/bin/ruby
|
2
|
+
|
3
|
+
# This is meant to be like calc-profit except that it uses lp_solve to
|
4
|
+
# solve a transportation method expression of the problem.
|
5
|
+
|
6
|
+
require 'calc-profit/transaction.rb'
|
7
|
+
require 'optparse'
|
8
|
+
require 'ostruct'
|
9
|
+
require 'pathname'
|
10
|
+
|
11
|
+
# Read in each file_names in turn, prepend with
|
12
|
+
# initialization files, run through erb, then
|
13
|
+
# run through TeX processor of choice
|
14
|
+
|
15
|
+
class ProfitCalc
|
16
|
+
include CalcProfit
|
17
|
+
|
18
|
+
def initialize(file)
|
19
|
+
@file = file
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
tg = TransactionGroup.new
|
24
|
+
File.open(@file, 'r') { |f|
|
25
|
+
# discard header for now
|
26
|
+
heads = f.readline.chomp.split(',')
|
27
|
+
# Read each transaction into tg
|
28
|
+
f.each { |l|
|
29
|
+
l.chomp!
|
30
|
+
ref, dat, code, raw_shares, shares, price, info = l.split(',')
|
31
|
+
next unless not dat.nil?
|
32
|
+
ref.sub!(/^\s*"?([^"]*)"?\s*$/, '\1') if ref.strip =~ /^"/
|
33
|
+
dat.sub!(/^\s*"([^"]*)"\s*$/, '\1') if dat.strip =~ /^"/
|
34
|
+
code.sub!(/^\s*"([^"]*)"\s*$/, '\1') if code.strip =~ /^"/
|
35
|
+
raw_shares.sub!(/^\s*"([^"]*)"\s*$/, '\1') if raw_shares.strip =~ /^"/
|
36
|
+
shares.sub!(/^\s*"([^"]*)"\s*$/, '\1') if shares.strip =~ /^"/
|
37
|
+
price.sub!(/^\s*"([^"]*)"\s*$/, '\1') if price.strip =~ /^"/
|
38
|
+
info.sub!(/^\s*"([^"]*)"\s*$/, '\1') if info.strip =~ /^"/
|
39
|
+
#print "Adding ... #{dat}, #{code}, #{raw_shares}, #{shares}, #{price}, #{ref}\n"
|
40
|
+
t = Transaction.new(code, Date.parse(dat), price.to_f,
|
41
|
+
shares.to_f, ref, info, raw_shares)
|
42
|
+
tg << t
|
43
|
+
}
|
44
|
+
tg.tp_solve
|
45
|
+
# You can pass parameters to the table_macros method to specify captions
|
46
|
+
# for each of the three tables. Otherwise, they will have no captions.
|
47
|
+
# E.g.,
|
48
|
+
#print tg.table_macros("Unadjusted Transactions", "Transactions", "Profit Calculation")
|
49
|
+
print tg.table_macros
|
50
|
+
}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
if __FILE__ == $0
|
55
|
+
if File.readable?(ARGV[0])
|
56
|
+
ProfitCalc.new(ARGV[0]).run
|
57
|
+
else
|
58
|
+
raise "usage: calc-profit <trans-csv-file>"
|
59
|
+
end
|
60
|
+
end
|
data/calc_profit.gemspec
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require './lib/calc_profit/version.rb'
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "calc_profit"
|
7
|
+
gem.authors = ["Daniel E. Doherty"]
|
8
|
+
gem.platform = Gem::Platform::RUBY
|
9
|
+
gem.summary = "Library for calculation od Section 16 short-swing profits"
|
10
|
+
gem.email = "ded-law@ddoherty.net"
|
11
|
+
gem.licenses = ["MIT"]
|
12
|
+
|
13
|
+
gem.add_runtime_dependency 'fat_core'
|
14
|
+
|
15
|
+
gem.add_development_dependency "pry"
|
16
|
+
gem.add_development_dependency "pry-doc"
|
17
|
+
gem.add_development_dependency 'rspec'
|
18
|
+
gem.add_development_dependency 'byebug'
|
19
|
+
gem.add_development_dependency "pry-byebug"
|
20
|
+
gem.add_development_dependency 'rake'
|
21
|
+
gem.add_development_dependency 'wirble'
|
22
|
+
|
23
|
+
gem.files = `git ls-files`.split("\n")
|
24
|
+
gem.files.reject! { |fn| fn =~ /^Gemfile.lock/ }
|
25
|
+
gem.files.reject! { |fn| fn =~ /^Guardfile/ }
|
26
|
+
gem.files.reject! { |fn| fn =~ /^\.ackrc/ }
|
27
|
+
gem.files.reject! { |fn| fn =~ /^\.simplecov/ }
|
28
|
+
gem.files.reject! { |fn| fn =~ /^spec/ }
|
29
|
+
gem.files.reject! { |fn| fn =~ /^features/ }
|
30
|
+
|
31
|
+
gem.has_rdoc = true
|
32
|
+
gem.extra_rdoc_files = ['README.rdoc']
|
33
|
+
gem.rdoc_options << '--title' << 'byr' << '--main' << 'README.rdoc' << '-ri'
|
34
|
+
gem.bindir = 'bin'
|
35
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
36
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
37
|
+
gem.require_paths = ["lib"]
|
38
|
+
gem.version = CalcProfit::VERSION
|
39
|
+
end
|
data/examples/Trans.csv
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
Ref,Date,Code,RawShares,Shares,Price,Info
|
2
|
+
1,2006-05-02,P,5000,5000,8.6000,2006-08-09-1-I
|
3
|
+
2,2006-05-03,P,5000,5000,8.4200,2006-08-09-1-I
|
4
|
+
3,2006-05-04,P,5000,5000,8.4000,2006-08-09-1-I
|
5
|
+
4,2006-05-10,P,8600,8600,8.0200,2006-08-09-1-D
|
6
|
+
5,2006-05-12,P,10000,10000,7.2500,2006-08-09-1-D
|
7
|
+
6,2006-05-12,P,2000,2000,6.7400,2006-08-09-1-I
|
8
|
+
7,2006-05-16,P,5000,5000,7.0000,2006-08-09-1-D
|
9
|
+
8,2006-05-17,P,5000,5000,6.7000,2006-08-09-1-D
|
10
|
+
9,2006-05-17,P,2000,2000,6.7400,2006-08-09-1-I
|
11
|
+
10,2006-05-19,P,1000,1000,7.2500,2006-08-09-1-I
|
12
|
+
11,2006-05-19,P,1000,1000,7.2500,2006-08-09-1-I
|
13
|
+
12,2006-05-31,P,2000,2000,7.9200,2006-08-09-1-I
|
14
|
+
13,2006-06-05,P,1000,1000,7.9200,2006-08-09-1-I
|
15
|
+
14,2006-06-15,P,5000,5000,6.9800,2006-08-09-1-I
|
16
|
+
15,2006-06-16,P,1000,1000,6.9300,2006-08-09-1-I
|
17
|
+
16,2006-06-16,P,1000,1000,6.9400,2006-08-09-1-I
|
18
|
+
17,2006-06-29,P,4000,4000,7.0000,2006-08-09-1-I
|
19
|
+
18,2006-07-14,P,2000,2000,6.2000,2006-08-09-1-D
|
20
|
+
19,2006-08-03,P,1400,1400,4.3900,2006-08-09-1-D
|
21
|
+
20,2006-08-07,P,1100,1100,4.5900,2006-08-09-1-D
|
22
|
+
21,2006-08-08,P,16000,16000,4.7000,2006-08-21-1-D
|
23
|
+
22,2006-08-08,S,16000,16000,4.7000,2006-08-21-1-I
|
24
|
+
23,2006-08-15,P,16000,16000,4.8000,2006-08-21-1-D
|
25
|
+
24,2006-08-15,S,16000,16000,4.8000,2006-08-21-1-I
|
26
|
+
25,2006-08-16,P,2100,2100,5.2900,2006-08-21-1-I
|
27
|
+
26,2006-08-17,P,2900,2900,5.7000,2006-08-21-1-I
|
28
|
+
27,2006-08-23,P,8000,8000,5.2400,2006-08-25-1-D
|
29
|
+
28,2006-08-23,S,8000,8000,5.2400,2006-08-29-1-I
|
30
|
+
29,2006-08-28,P,1000,1000,5.4000,2006-08-29-1-D
|
31
|
+
30,2006-08-29,P,2000,2000,5.4000,2006-08-30-1-D
|
32
|
+
31,2006-08-29,S,2000,2000,5.4000,2006-08-30-1-I
|
33
|
+
32,2006-09-05,P,2700,2700,5.7500,2006-09-06-1-I
|
34
|
+
33,2006-09-11,P,4000,4000,5.7200,2006-09-15-1-D
|
35
|
+
34,2006-09-11,S,4000,4000,5.7200,2006-09-15-1-I
|
36
|
+
35,2006-09-12,P,3000,3000,5.4800,2006-09-15-2-I
|
37
|
+
36,2006-09-13,P,1700,1700,5.4100,2006-09-15-2-I
|
38
|
+
37,2006-09-20,P,7500,7500,5.4900,2006-09-21-1-I
|
39
|
+
38,2006-12-07,S,6000,6000,7.8900,2006-12-11-1-I
|
40
|
+
39,2006-12-11,S,100,100,8.0000,2006-12-11-1-I
|
41
|
+
40,2007-01-29,P,2500,2500,12.1000,2007-04-27-1-I
|
42
|
+
41,2007-01-31,P,2500,2500,13.7000,2007-04-27-1-I
|
43
|
+
42,2007-02-02,P,4000,4000,15.1500,2007-04-27-1-I
|
44
|
+
43,2007-02-06,P,5000,5000,14.9500,2007-04-27-1-I
|
45
|
+
44,2007-02-07,P,400,400,15.0000,2007-04-27-1-I
|
46
|
+
45,2007-02-08,P,4600,4600,15.0000,2007-04-27-1-I
|
47
|
+
46,2007-02-12,P,3500,3500,14.9100,2007-04-27-1-I
|
48
|
+
47,2007-02-13,P,1500,1500,14.6500,2007-04-27-1-D
|
49
|
+
48,2007-02-14,P,2000,2000,14.4900,2007-04-27-1-D
|
50
|
+
49,2007-02-15,P,3000,3000,14.3000,2007-04-27-1-I
|
51
|
+
50,2007-02-21,P,8500,8500,14.6500,2007-04-27-1-D
|
52
|
+
51,2007-02-21,S,8500,8500,14.6500,2007-04-27-1-I
|
53
|
+
52,2007-02-22,P,1500,1500,14.8800,2007-04-27-1-I
|
54
|
+
53,2007-02-23,P,3000,3000,14.9700,2007-04-27-1-I
|
55
|
+
54,2007-02-23,P,5000,5000,14.9700,2007-04-27-1-I
|
56
|
+
55,2007-02-27,P,5200,5200,13.8800,2007-04-27-1-I
|
57
|
+
56,2007-02-28,P,6700,6700,13.0000,2007-04-27-1-D
|
58
|
+
57,2007-02-28,P,800,800,13.0000,2007-04-27-1-I
|
59
|
+
58,2007-02-28,P,8400,8400,13.0000,2007-04-27-1-I
|
60
|
+
59,2007-03-01,P,2500,2500,12.2500,2007-04-27-1-D
|
61
|
+
60,2007-03-05,P,1800,1800,11.9700,2007-04-27-1-D
|
62
|
+
61,2007-03-06,P,500,500,12.1300,2007-04-27-1-D
|
63
|
+
62,2007-03-07,P,3000,3000,12.3700,2007-04-27-1-D
|
64
|
+
63,2007-03-08,P,2000,2000,12.6000,2007-04-27-1-I
|
65
|
+
64,2007-03-09,P,7700,7700,12.8100,2007-04-27-1-I
|
66
|
+
65,2007-03-12,P,4200,4200,12.4600,2007-04-27-1-I
|
67
|
+
66,2007-03-13,P,800,800,12.2500,2007-04-27-1-I
|
68
|
+
67,2007-03-19,P,2000,2000,14.5500,2007-04-27-2-I
|
69
|
+
68,2007-03-19,P,5000,5000,14.5500,2007-04-27-2-I
|
70
|
+
69,2007-03-19,P,2000,2000,14.3300,2007-04-27-2-I
|
71
|
+
70,2007-03-20,P,1000,1000,14.4600,2007-04-27-2-I
|
72
|
+
71,2007-03-20,P,1500,1500,14.4600,2007-04-27-2-I
|
73
|
+
72,2007-03-21,P,3900,3900,16.9000,2007-04-27-2-I
|
74
|
+
73,2007-03-23,P,8000,8000,14.9700,2007-04-27-1-D
|
75
|
+
74,2007-03-27,P,1000,1000,16.9300,2007-04-27-2-I
|
76
|
+
75,2007-03-28,P,1000,1000,16.5000,2007-04-27-2-D
|
77
|
+
76,2007-03-29,P,1000,1000,16.2500,2007-04-27-2-D
|
78
|
+
77,2007-04-04,P,200,200,17.8600,2007-04-27-2-I
|
79
|
+
78,2007-04-04,P,2000,2000,19.5000,2007-04-27-2-I
|
80
|
+
79,2007-04-04,P,3000,3000,19.1300,2007-04-27-2-I
|
81
|
+
80,2007-04-05,P,1000,1000,19.1500,2007-04-27-2-I
|
82
|
+
81,2007-04-10,P,2000,2000,20.7500,2007-04-27-2-I
|
83
|
+
82,2007-04-11,P,1000,1000,20.5000,2007-04-27-2-I
|
84
|
+
83,2007-04-12,P,600,600,21.5000,2007-04-27-2-I
|
85
|
+
84,2007-04-12,P,1000,1000,21.4500,2007-04-27-2-I
|
86
|
+
85,2007-04-13,P,2100,2100,21.5000,2007-04-27-2-I
|
87
|
+
86,2007-04-16,P,500,500,22.6000,2007-04-27-2-I
|
88
|
+
87,2007-04-17,P,3500,3500,23.5500,2007-04-27-2-D
|
89
|
+
88,2007-04-17,S,3500,3500,23.5500,2007-04-27-2-I
|
90
|
+
89,2007-04-23,P,5000,5000,23.4500,2007-04-27-2-I
|
91
|
+
90,2007-04-24,P,5000,5000,24.3000,2007-04-27-2-I
|
92
|
+
91,2007-04-25,S,10000,10000,25.7000,2007-04-27-2-I
|
data/examples/driver.tex
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
\documentclass[12pt,draft]{article}
|
2
|
+
|
3
|
+
\usepackage{legal-general}
|
4
|
+
\usepackage{longtable}
|
5
|
+
\usepackage{lscape}
|
6
|
+
|
7
|
+
\begin{document}
|
8
|
+
\include{Trans}
|
9
|
+
\TransTable
|
10
|
+
\newpage
|
11
|
+
\begin{landscape}
|
12
|
+
\begin{footnotesize}
|
13
|
+
\MatchTable
|
14
|
+
\end{footnotesize}
|
15
|
+
\end{landscape}
|
16
|
+
\end{document}
|
data/examples/lopez.csv
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
Ref,Date,Code,RawShares,Shares,Price,Info
|
2
|
+
1,2010-01-15,S,7400,7400,5.6430,Common
|
3
|
+
2,2010-01-21,S,15309,15309,5.6500,Common
|
4
|
+
3,2010-02-18,S,29279,29279,5.5965,Common
|
5
|
+
4,2010-02-19,S,25600,25600,5.5939,Common
|
6
|
+
5,2010-02-22,S,8700,8700,5.6240,Common
|
7
|
+
6,2010-02-23,S,11854,11854,5.6306,Common
|
8
|
+
7,2010-02-24,S,9258,9258,5.6076,Common
|
9
|
+
8,2010-02-25,S,3500,3500,5.6000,Common
|
10
|
+
9,2010-02-26,S,6000,6000,5.6000,Common
|
11
|
+
10,2010-03-01,S,15142,15142,5.6011,Common
|
12
|
+
11,2010-03-02,S,18800,18800,5.6100,Common
|
13
|
+
12,2010-03-03,S,3500,3500,5.6300,Common
|
14
|
+
13,2010-03-04,S,25300,25300,5.6301,Common
|
15
|
+
14,2010-03-06,S,3004,3004,5.6400,Common
|
16
|
+
15,2010-03-08,S,4200,4200,5.6400,Common
|
17
|
+
16,2010-03-09,S,18600,18600,5.6400,Common
|
18
|
+
17,2009-11-04,P,18000,18000,5.2267,Common
|
19
|
+
18,2009-11-05,P,12700,12700,5.2471,Common
|
20
|
+
19,2009-11-06,P,6000,6000,5.2400,Common
|
21
|
+
20,2009-11-09,P,33200,33200,5.2935,Common
|
22
|
+
21,2009-11-10,P,13983,13983,5.2825,Common
|
23
|
+
22,2009-11-11,P,11100,11100,5.2673,Common
|
24
|
+
23,2009-11-12,P,400,400,5.2800,Common
|
25
|
+
24,2009-11-12,P,16363,16363,5.2781,Common
|
26
|
+
25,2009-11-13,P,31000,31000,5.2648,Common
|
27
|
+
26,2009-11-16,P,3000,3000,5.2900,Common
|
28
|
+
27,2009-11-16,P,3300,3300,5.2900,Common
|
29
|
+
28,2009-11-17,P,6000,6000,5.2900,Common
|
30
|
+
29,2009-11-18,P,14200,14200,5.2909,Common
|
31
|
+
30,2009-11-19,P,4700,4700,5.2866,Common
|
32
|
+
31,2009-11-20,P,5400,5400,5.3000,Common
|
33
|
+
32,2009-11-30,P,15000,15000,5.3000,Common
|
34
|
+
33,2010-02-05,P,11100,11100,5.3622,Common
|
data/examples/profit.lp
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
max: 0.909999999999999 X_14~38 + 1.02 X_14~39 + 0.96 X_15~38 + 1.07 X_15~39 + 0.949999999999999 X_16~38 + 1.06 X_16~39 + 0.89 X_17~38 + 1.0 X_17~39 + 1.69 X_18~38 + 1.8 X_18~39 + 0.31 X_19~22 + 0.41 X_19~24 + 0.850000000000001 X_19~28 + 1.01 X_19~31 + 1.33 X_19~34 + 3.5 X_19~38 + 3.61 X_19~39 + 0.11 X_20~22 + 0.21 X_20~24 + 0.65 X_20~28 + 0.81 X_20~31 + 1.13 X_20~34 + 3.3 X_20~38 + 3.41 X_20~39 + 0.0999999999999996 X_21~24 + 0.54 X_21~28 + 0.7 X_21~31 + 1.02 X_21~34 + 3.19 X_21~38 + 3.3 X_21~39 + 0.44 X_23~28 + 0.600000000000001 X_23~31 + 0.92 X_23~34 + 3.09 X_23~38 + 3.2 X_23~39 + 0.11 X_25~31 + 0.43 X_25~34 + 2.6 X_25~38 + 2.71 X_25~39 + 0.0199999999999996 X_26~34 + 2.19 X_26~38 + 2.3 X_26~39 + 0.16 X_27~31 + 0.48 X_27~34 + 2.65 X_27~38 + 2.76 X_27~39 + 9.41 X_27~51 + 0.319999999999999 X_29~34 + 2.49 X_29~38 + 2.6 X_29~39 + 9.25 X_29~51 + 0.319999999999999 X_30~34 + 2.49 X_30~38 + 2.6 X_30~39 + 9.25 X_30~51 + 2.14 X_32~38 + 2.25 X_32~39 + 8.9 X_32~51 + 2.17 X_33~38 + 2.28 X_33~39 + 8.93 X_33~51 + 0.239999999999999 X_35~34 + 2.41 X_35~38 + 2.52 X_35~39 + 9.17 X_35~51 + 0.31 X_36~34 + 2.48 X_36~38 + 2.59 X_36~39 + 9.24 X_36~51 + 0.23 X_37~34 + 2.4 X_37~38 + 2.51 X_37~39 + 9.16 X_37~51 + 2.55 X_40~51 + 11.45 X_40~88 + 13.6 X_40~91 + 0.950000000000001 X_41~51 + 9.85 X_41~88 + 12.0 X_41~91 + 8.4 X_42~88 + 10.55 X_42~91 + 8.6 X_43~88 + 10.75 X_43~91 + 8.55 X_44~88 + 10.7 X_44~91 + 8.55 X_45~88 + 10.7 X_45~91 + 8.64 X_46~88 + 10.79 X_46~91 + 8.9 X_47~88 + 11.05 X_47~91 + 0.16 X_48~51 + 9.06 X_48~88 + 11.21 X_48~91 + 0.35 X_49~51 + 9.25 X_49~88 + 11.4 X_49~91 + 8.9 X_50~88 + 11.05 X_50~91 + 8.67 X_52~88 + 10.82 X_52~91 + 8.58 X_53~88 + 10.73 X_53~91 + 8.58 X_54~88 + 10.73 X_54~91 + 0.77 X_55~51 + 9.67 X_55~88 + 11.82 X_55~91 + 1.65 X_56~51 + 10.55 X_56~88 + 12.7 X_56~91 + 1.65 X_57~51 + 10.55 X_57~88 + 12.7 X_57~91 + 1.65 X_58~51 + 10.55 X_58~88 + 12.7 X_58~91 + 2.4 X_59~51 + 11.3 X_59~88 + 13.45 X_59~91 + 2.68 X_60~51 + 11.58 X_60~88 + 13.73 X_60~91 + 2.52 X_61~51 + 11.42 X_61~88 + 13.57 X_61~91 + 2.28 X_62~51 + 11.18 X_62~88 + 13.33 X_62~91 + 2.05 X_63~51 + 10.95 X_63~88 + 13.1 X_63~91 + 1.84 X_64~51 + 10.74 X_64~88 + 12.89 X_64~91 + 2.19 X_65~51 + 11.09 X_65~88 + 13.24 X_65~91 + 2.4 X_66~51 + 11.3 X_66~88 + 13.45 X_66~91 + 0.0999999999999996 X_67~51 + 9.0 X_67~88 + 11.15 X_67~91 + 0.0999999999999996 X_68~51 + 9.0 X_68~88 + 11.15 X_68~91 + 0.32 X_69~51 + 9.22 X_69~88 + 11.37 X_69~91 + 0.19 X_70~51 + 9.09 X_70~88 + 11.24 X_70~91 + 0.19 X_71~51 + 9.09 X_71~88 + 11.24 X_71~91 + 6.65 X_72~88 + 8.8 X_72~91 + 8.58 X_73~88 + 10.73 X_73~91 + 6.62 X_74~88 + 8.77 X_74~91 + 7.05 X_75~88 + 9.2 X_75~91 + 7.3 X_76~88 + 9.45 X_76~91 + 5.69 X_77~88 + 7.84 X_77~91 + 4.05 X_78~88 + 6.2 X_78~91 + 4.42 X_79~88 + 6.57 X_79~91 + 4.4 X_80~88 + 6.55 X_80~91 + 2.8 X_81~88 + 4.95 X_81~91 + 3.05 X_82~88 + 5.2 X_82~91 + 2.05 X_83~88 + 4.2 X_83~91 + 2.1 X_84~88 + 4.25 X_84~91 + 2.05 X_85~88 + 4.2 X_85~91 + 0.949999999999999 X_86~88 + 3.1 X_86~91 + 2.15 X_87~91 + 0.100000000000001 X_89~88 + 2.25 X_89~91 + 1.4 X_90~91 + 0;
|
2
|
+
|
3
|
+
P_1: X_1~22 + X_1~24 + X_1~28 + X_1~31 + X_1~34 + X_1~38 + X_1~39 + X_1~51 + X_1~88 + X_1~91 + 0 <= 5000;
|
4
|
+
P_2: X_2~22 + X_2~24 + X_2~28 + X_2~31 + X_2~34 + X_2~38 + X_2~39 + X_2~51 + X_2~88 + X_2~91 + 0 <= 5000;
|
5
|
+
P_3: X_3~22 + X_3~24 + X_3~28 + X_3~31 + X_3~34 + X_3~38 + X_3~39 + X_3~51 + X_3~88 + X_3~91 + 0 <= 5000;
|
6
|
+
P_4: X_4~22 + X_4~24 + X_4~28 + X_4~31 + X_4~34 + X_4~38 + X_4~39 + X_4~51 + X_4~88 + X_4~91 + 0 <= 8600;
|
7
|
+
P_5: X_5~22 + X_5~24 + X_5~28 + X_5~31 + X_5~34 + X_5~38 + X_5~39 + X_5~51 + X_5~88 + X_5~91 + 0 <= 10000;
|
8
|
+
P_6: X_6~22 + X_6~24 + X_6~28 + X_6~31 + X_6~34 + X_6~38 + X_6~39 + X_6~51 + X_6~88 + X_6~91 + 0 <= 2000;
|
9
|
+
P_7: X_7~22 + X_7~24 + X_7~28 + X_7~31 + X_7~34 + X_7~38 + X_7~39 + X_7~51 + X_7~88 + X_7~91 + 0 <= 5000;
|
10
|
+
P_8: X_8~22 + X_8~24 + X_8~28 + X_8~31 + X_8~34 + X_8~38 + X_8~39 + X_8~51 + X_8~88 + X_8~91 + 0 <= 5000;
|
11
|
+
P_9: X_9~22 + X_9~24 + X_9~28 + X_9~31 + X_9~34 + X_9~38 + X_9~39 + X_9~51 + X_9~88 + X_9~91 + 0 <= 2000;
|
12
|
+
P_10: X_10~22 + X_10~24 + X_10~28 + X_10~31 + X_10~34 + X_10~38 + X_10~39 + X_10~51 + X_10~88 + X_10~91 + 0 <= 1000;
|
13
|
+
P_11: X_11~22 + X_11~24 + X_11~28 + X_11~31 + X_11~34 + X_11~38 + X_11~39 + X_11~51 + X_11~88 + X_11~91 + 0 <= 1000;
|
14
|
+
P_12: X_12~22 + X_12~24 + X_12~28 + X_12~31 + X_12~34 + X_12~38 + X_12~39 + X_12~51 + X_12~88 + X_12~91 + 0 <= 2000;
|
15
|
+
P_13: X_13~22 + X_13~24 + X_13~28 + X_13~31 + X_13~34 + X_13~38 + X_13~39 + X_13~51 + X_13~88 + X_13~91 + 0 <= 1000;
|
16
|
+
P_14: X_14~22 + X_14~24 + X_14~28 + X_14~31 + X_14~34 + X_14~38 + X_14~39 + X_14~51 + X_14~88 + X_14~91 + 0 <= 5000;
|
17
|
+
P_15: X_15~22 + X_15~24 + X_15~28 + X_15~31 + X_15~34 + X_15~38 + X_15~39 + X_15~51 + X_15~88 + X_15~91 + 0 <= 1000;
|
18
|
+
P_16: X_16~22 + X_16~24 + X_16~28 + X_16~31 + X_16~34 + X_16~38 + X_16~39 + X_16~51 + X_16~88 + X_16~91 + 0 <= 1000;
|
19
|
+
P_17: X_17~22 + X_17~24 + X_17~28 + X_17~31 + X_17~34 + X_17~38 + X_17~39 + X_17~51 + X_17~88 + X_17~91 + 0 <= 4000;
|
20
|
+
P_18: X_18~22 + X_18~24 + X_18~28 + X_18~31 + X_18~34 + X_18~38 + X_18~39 + X_18~51 + X_18~88 + X_18~91 + 0 <= 2000;
|
21
|
+
P_19: X_19~22 + X_19~24 + X_19~28 + X_19~31 + X_19~34 + X_19~38 + X_19~39 + X_19~51 + X_19~88 + X_19~91 + 0 <= 1400;
|
22
|
+
P_20: X_20~22 + X_20~24 + X_20~28 + X_20~31 + X_20~34 + X_20~38 + X_20~39 + X_20~51 + X_20~88 + X_20~91 + 0 <= 1100;
|
23
|
+
P_21: X_21~22 + X_21~24 + X_21~28 + X_21~31 + X_21~34 + X_21~38 + X_21~39 + X_21~51 + X_21~88 + X_21~91 + 0 <= 16000;
|
24
|
+
P_23: X_23~22 + X_23~24 + X_23~28 + X_23~31 + X_23~34 + X_23~38 + X_23~39 + X_23~51 + X_23~88 + X_23~91 + 0 <= 16000;
|
25
|
+
P_25: X_25~22 + X_25~24 + X_25~28 + X_25~31 + X_25~34 + X_25~38 + X_25~39 + X_25~51 + X_25~88 + X_25~91 + 0 <= 2100;
|
26
|
+
P_26: X_26~22 + X_26~24 + X_26~28 + X_26~31 + X_26~34 + X_26~38 + X_26~39 + X_26~51 + X_26~88 + X_26~91 + 0 <= 2900;
|
27
|
+
P_27: X_27~22 + X_27~24 + X_27~28 + X_27~31 + X_27~34 + X_27~38 + X_27~39 + X_27~51 + X_27~88 + X_27~91 + 0 <= 8000;
|
28
|
+
P_29: X_29~22 + X_29~24 + X_29~28 + X_29~31 + X_29~34 + X_29~38 + X_29~39 + X_29~51 + X_29~88 + X_29~91 + 0 <= 1000;
|
29
|
+
P_30: X_30~22 + X_30~24 + X_30~28 + X_30~31 + X_30~34 + X_30~38 + X_30~39 + X_30~51 + X_30~88 + X_30~91 + 0 <= 2000;
|
30
|
+
P_32: X_32~22 + X_32~24 + X_32~28 + X_32~31 + X_32~34 + X_32~38 + X_32~39 + X_32~51 + X_32~88 + X_32~91 + 0 <= 2700;
|
31
|
+
P_33: X_33~22 + X_33~24 + X_33~28 + X_33~31 + X_33~34 + X_33~38 + X_33~39 + X_33~51 + X_33~88 + X_33~91 + 0 <= 4000;
|
32
|
+
P_35: X_35~22 + X_35~24 + X_35~28 + X_35~31 + X_35~34 + X_35~38 + X_35~39 + X_35~51 + X_35~88 + X_35~91 + 0 <= 3000;
|
33
|
+
P_36: X_36~22 + X_36~24 + X_36~28 + X_36~31 + X_36~34 + X_36~38 + X_36~39 + X_36~51 + X_36~88 + X_36~91 + 0 <= 1700;
|
34
|
+
P_37: X_37~22 + X_37~24 + X_37~28 + X_37~31 + X_37~34 + X_37~38 + X_37~39 + X_37~51 + X_37~88 + X_37~91 + 0 <= 7500;
|
35
|
+
P_40: X_40~22 + X_40~24 + X_40~28 + X_40~31 + X_40~34 + X_40~38 + X_40~39 + X_40~51 + X_40~88 + X_40~91 + 0 <= 2500;
|
36
|
+
P_41: X_41~22 + X_41~24 + X_41~28 + X_41~31 + X_41~34 + X_41~38 + X_41~39 + X_41~51 + X_41~88 + X_41~91 + 0 <= 2500;
|
37
|
+
P_42: X_42~22 + X_42~24 + X_42~28 + X_42~31 + X_42~34 + X_42~38 + X_42~39 + X_42~51 + X_42~88 + X_42~91 + 0 <= 4000;
|
38
|
+
P_43: X_43~22 + X_43~24 + X_43~28 + X_43~31 + X_43~34 + X_43~38 + X_43~39 + X_43~51 + X_43~88 + X_43~91 + 0 <= 5000;
|
39
|
+
P_44: X_44~22 + X_44~24 + X_44~28 + X_44~31 + X_44~34 + X_44~38 + X_44~39 + X_44~51 + X_44~88 + X_44~91 + 0 <= 400;
|
40
|
+
P_45: X_45~22 + X_45~24 + X_45~28 + X_45~31 + X_45~34 + X_45~38 + X_45~39 + X_45~51 + X_45~88 + X_45~91 + 0 <= 4600;
|
41
|
+
P_46: X_46~22 + X_46~24 + X_46~28 + X_46~31 + X_46~34 + X_46~38 + X_46~39 + X_46~51 + X_46~88 + X_46~91 + 0 <= 3500;
|
42
|
+
P_47: X_47~22 + X_47~24 + X_47~28 + X_47~31 + X_47~34 + X_47~38 + X_47~39 + X_47~51 + X_47~88 + X_47~91 + 0 <= 1500;
|
43
|
+
P_48: X_48~22 + X_48~24 + X_48~28 + X_48~31 + X_48~34 + X_48~38 + X_48~39 + X_48~51 + X_48~88 + X_48~91 + 0 <= 2000;
|
44
|
+
P_49: X_49~22 + X_49~24 + X_49~28 + X_49~31 + X_49~34 + X_49~38 + X_49~39 + X_49~51 + X_49~88 + X_49~91 + 0 <= 3000;
|
45
|
+
P_50: X_50~22 + X_50~24 + X_50~28 + X_50~31 + X_50~34 + X_50~38 + X_50~39 + X_50~51 + X_50~88 + X_50~91 + 0 <= 8500;
|
46
|
+
P_52: X_52~22 + X_52~24 + X_52~28 + X_52~31 + X_52~34 + X_52~38 + X_52~39 + X_52~51 + X_52~88 + X_52~91 + 0 <= 1500;
|
47
|
+
P_53: X_53~22 + X_53~24 + X_53~28 + X_53~31 + X_53~34 + X_53~38 + X_53~39 + X_53~51 + X_53~88 + X_53~91 + 0 <= 3000;
|
48
|
+
P_54: X_54~22 + X_54~24 + X_54~28 + X_54~31 + X_54~34 + X_54~38 + X_54~39 + X_54~51 + X_54~88 + X_54~91 + 0 <= 5000;
|
49
|
+
P_55: X_55~22 + X_55~24 + X_55~28 + X_55~31 + X_55~34 + X_55~38 + X_55~39 + X_55~51 + X_55~88 + X_55~91 + 0 <= 5200;
|
50
|
+
P_56: X_56~22 + X_56~24 + X_56~28 + X_56~31 + X_56~34 + X_56~38 + X_56~39 + X_56~51 + X_56~88 + X_56~91 + 0 <= 6700;
|
51
|
+
P_57: X_57~22 + X_57~24 + X_57~28 + X_57~31 + X_57~34 + X_57~38 + X_57~39 + X_57~51 + X_57~88 + X_57~91 + 0 <= 800;
|
52
|
+
P_58: X_58~22 + X_58~24 + X_58~28 + X_58~31 + X_58~34 + X_58~38 + X_58~39 + X_58~51 + X_58~88 + X_58~91 + 0 <= 8400;
|
53
|
+
P_59: X_59~22 + X_59~24 + X_59~28 + X_59~31 + X_59~34 + X_59~38 + X_59~39 + X_59~51 + X_59~88 + X_59~91 + 0 <= 2500;
|
54
|
+
P_60: X_60~22 + X_60~24 + X_60~28 + X_60~31 + X_60~34 + X_60~38 + X_60~39 + X_60~51 + X_60~88 + X_60~91 + 0 <= 1800;
|
55
|
+
P_61: X_61~22 + X_61~24 + X_61~28 + X_61~31 + X_61~34 + X_61~38 + X_61~39 + X_61~51 + X_61~88 + X_61~91 + 0 <= 500;
|
56
|
+
P_62: X_62~22 + X_62~24 + X_62~28 + X_62~31 + X_62~34 + X_62~38 + X_62~39 + X_62~51 + X_62~88 + X_62~91 + 0 <= 3000;
|
57
|
+
P_63: X_63~22 + X_63~24 + X_63~28 + X_63~31 + X_63~34 + X_63~38 + X_63~39 + X_63~51 + X_63~88 + X_63~91 + 0 <= 2000;
|
58
|
+
P_64: X_64~22 + X_64~24 + X_64~28 + X_64~31 + X_64~34 + X_64~38 + X_64~39 + X_64~51 + X_64~88 + X_64~91 + 0 <= 7700;
|
59
|
+
P_65: X_65~22 + X_65~24 + X_65~28 + X_65~31 + X_65~34 + X_65~38 + X_65~39 + X_65~51 + X_65~88 + X_65~91 + 0 <= 4200;
|
60
|
+
P_66: X_66~22 + X_66~24 + X_66~28 + X_66~31 + X_66~34 + X_66~38 + X_66~39 + X_66~51 + X_66~88 + X_66~91 + 0 <= 800;
|
61
|
+
P_67: X_67~22 + X_67~24 + X_67~28 + X_67~31 + X_67~34 + X_67~38 + X_67~39 + X_67~51 + X_67~88 + X_67~91 + 0 <= 2000;
|
62
|
+
P_68: X_68~22 + X_68~24 + X_68~28 + X_68~31 + X_68~34 + X_68~38 + X_68~39 + X_68~51 + X_68~88 + X_68~91 + 0 <= 5000;
|
63
|
+
P_69: X_69~22 + X_69~24 + X_69~28 + X_69~31 + X_69~34 + X_69~38 + X_69~39 + X_69~51 + X_69~88 + X_69~91 + 0 <= 2000;
|
64
|
+
P_70: X_70~22 + X_70~24 + X_70~28 + X_70~31 + X_70~34 + X_70~38 + X_70~39 + X_70~51 + X_70~88 + X_70~91 + 0 <= 1000;
|
65
|
+
P_71: X_71~22 + X_71~24 + X_71~28 + X_71~31 + X_71~34 + X_71~38 + X_71~39 + X_71~51 + X_71~88 + X_71~91 + 0 <= 1500;
|
66
|
+
P_72: X_72~22 + X_72~24 + X_72~28 + X_72~31 + X_72~34 + X_72~38 + X_72~39 + X_72~51 + X_72~88 + X_72~91 + 0 <= 3900;
|
67
|
+
P_73: X_73~22 + X_73~24 + X_73~28 + X_73~31 + X_73~34 + X_73~38 + X_73~39 + X_73~51 + X_73~88 + X_73~91 + 0 <= 8000;
|
68
|
+
P_74: X_74~22 + X_74~24 + X_74~28 + X_74~31 + X_74~34 + X_74~38 + X_74~39 + X_74~51 + X_74~88 + X_74~91 + 0 <= 1000;
|
69
|
+
P_75: X_75~22 + X_75~24 + X_75~28 + X_75~31 + X_75~34 + X_75~38 + X_75~39 + X_75~51 + X_75~88 + X_75~91 + 0 <= 1000;
|
70
|
+
P_76: X_76~22 + X_76~24 + X_76~28 + X_76~31 + X_76~34 + X_76~38 + X_76~39 + X_76~51 + X_76~88 + X_76~91 + 0 <= 1000;
|
71
|
+
P_77: X_77~22 + X_77~24 + X_77~28 + X_77~31 + X_77~34 + X_77~38 + X_77~39 + X_77~51 + X_77~88 + X_77~91 + 0 <= 200;
|
72
|
+
P_78: X_78~22 + X_78~24 + X_78~28 + X_78~31 + X_78~34 + X_78~38 + X_78~39 + X_78~51 + X_78~88 + X_78~91 + 0 <= 2000;
|
73
|
+
P_79: X_79~22 + X_79~24 + X_79~28 + X_79~31 + X_79~34 + X_79~38 + X_79~39 + X_79~51 + X_79~88 + X_79~91 + 0 <= 3000;
|
74
|
+
P_80: X_80~22 + X_80~24 + X_80~28 + X_80~31 + X_80~34 + X_80~38 + X_80~39 + X_80~51 + X_80~88 + X_80~91 + 0 <= 1000;
|
75
|
+
P_81: X_81~22 + X_81~24 + X_81~28 + X_81~31 + X_81~34 + X_81~38 + X_81~39 + X_81~51 + X_81~88 + X_81~91 + 0 <= 2000;
|
76
|
+
P_82: X_82~22 + X_82~24 + X_82~28 + X_82~31 + X_82~34 + X_82~38 + X_82~39 + X_82~51 + X_82~88 + X_82~91 + 0 <= 1000;
|
77
|
+
P_83: X_83~22 + X_83~24 + X_83~28 + X_83~31 + X_83~34 + X_83~38 + X_83~39 + X_83~51 + X_83~88 + X_83~91 + 0 <= 600;
|
78
|
+
P_84: X_84~22 + X_84~24 + X_84~28 + X_84~31 + X_84~34 + X_84~38 + X_84~39 + X_84~51 + X_84~88 + X_84~91 + 0 <= 1000;
|
79
|
+
P_85: X_85~22 + X_85~24 + X_85~28 + X_85~31 + X_85~34 + X_85~38 + X_85~39 + X_85~51 + X_85~88 + X_85~91 + 0 <= 2100;
|
80
|
+
P_86: X_86~22 + X_86~24 + X_86~28 + X_86~31 + X_86~34 + X_86~38 + X_86~39 + X_86~51 + X_86~88 + X_86~91 + 0 <= 500;
|
81
|
+
P_87: X_87~22 + X_87~24 + X_87~28 + X_87~31 + X_87~34 + X_87~38 + X_87~39 + X_87~51 + X_87~88 + X_87~91 + 0 <= 3500;
|
82
|
+
P_89: X_89~22 + X_89~24 + X_89~28 + X_89~31 + X_89~34 + X_89~38 + X_89~39 + X_89~51 + X_89~88 + X_89~91 + 0 <= 5000;
|
83
|
+
P_90: X_90~22 + X_90~24 + X_90~28 + X_90~31 + X_90~34 + X_90~38 + X_90~39 + X_90~51 + X_90~88 + X_90~91 + 0 <= 5000;
|
84
|
+
S_22: X_1~22 + X_2~22 + X_3~22 + X_4~22 + X_5~22 + X_6~22 + X_7~22 + X_8~22 + X_9~22 + X_10~22 + X_11~22 + X_12~22 + X_13~22 + X_14~22 + X_15~22 + X_16~22 + X_17~22 + X_18~22 + X_19~22 + X_20~22 + X_21~22 + X_23~22 + X_25~22 + X_26~22 + X_27~22 + X_29~22 + X_30~22 + X_32~22 + X_33~22 + X_35~22 + X_36~22 + X_37~22 + X_40~22 + X_41~22 + X_42~22 + X_43~22 + X_44~22 + X_45~22 + X_46~22 + X_47~22 + X_48~22 + X_49~22 + X_50~22 + X_52~22 + X_53~22 + X_54~22 + X_55~22 + X_56~22 + X_57~22 + X_58~22 + X_59~22 + X_60~22 + X_61~22 + X_62~22 + X_63~22 + X_64~22 + X_65~22 + X_66~22 + X_67~22 + X_68~22 + X_69~22 + X_70~22 + X_71~22 + X_72~22 + X_73~22 + X_74~22 + X_75~22 + X_76~22 + X_77~22 + X_78~22 + X_79~22 + X_80~22 + X_81~22 + X_82~22 + X_83~22 + X_84~22 + X_85~22 + X_86~22 + X_87~22 + X_89~22 + X_90~22 + 0 <= 16000;
|
85
|
+
S_24: X_1~24 + X_2~24 + X_3~24 + X_4~24 + X_5~24 + X_6~24 + X_7~24 + X_8~24 + X_9~24 + X_10~24 + X_11~24 + X_12~24 + X_13~24 + X_14~24 + X_15~24 + X_16~24 + X_17~24 + X_18~24 + X_19~24 + X_20~24 + X_21~24 + X_23~24 + X_25~24 + X_26~24 + X_27~24 + X_29~24 + X_30~24 + X_32~24 + X_33~24 + X_35~24 + X_36~24 + X_37~24 + X_40~24 + X_41~24 + X_42~24 + X_43~24 + X_44~24 + X_45~24 + X_46~24 + X_47~24 + X_48~24 + X_49~24 + X_50~24 + X_52~24 + X_53~24 + X_54~24 + X_55~24 + X_56~24 + X_57~24 + X_58~24 + X_59~24 + X_60~24 + X_61~24 + X_62~24 + X_63~24 + X_64~24 + X_65~24 + X_66~24 + X_67~24 + X_68~24 + X_69~24 + X_70~24 + X_71~24 + X_72~24 + X_73~24 + X_74~24 + X_75~24 + X_76~24 + X_77~24 + X_78~24 + X_79~24 + X_80~24 + X_81~24 + X_82~24 + X_83~24 + X_84~24 + X_85~24 + X_86~24 + X_87~24 + X_89~24 + X_90~24 + 0 <= 16000;
|
86
|
+
S_28: X_1~28 + X_2~28 + X_3~28 + X_4~28 + X_5~28 + X_6~28 + X_7~28 + X_8~28 + X_9~28 + X_10~28 + X_11~28 + X_12~28 + X_13~28 + X_14~28 + X_15~28 + X_16~28 + X_17~28 + X_18~28 + X_19~28 + X_20~28 + X_21~28 + X_23~28 + X_25~28 + X_26~28 + X_27~28 + X_29~28 + X_30~28 + X_32~28 + X_33~28 + X_35~28 + X_36~28 + X_37~28 + X_40~28 + X_41~28 + X_42~28 + X_43~28 + X_44~28 + X_45~28 + X_46~28 + X_47~28 + X_48~28 + X_49~28 + X_50~28 + X_52~28 + X_53~28 + X_54~28 + X_55~28 + X_56~28 + X_57~28 + X_58~28 + X_59~28 + X_60~28 + X_61~28 + X_62~28 + X_63~28 + X_64~28 + X_65~28 + X_66~28 + X_67~28 + X_68~28 + X_69~28 + X_70~28 + X_71~28 + X_72~28 + X_73~28 + X_74~28 + X_75~28 + X_76~28 + X_77~28 + X_78~28 + X_79~28 + X_80~28 + X_81~28 + X_82~28 + X_83~28 + X_84~28 + X_85~28 + X_86~28 + X_87~28 + X_89~28 + X_90~28 + 0 <= 8000;
|
87
|
+
S_31: X_1~31 + X_2~31 + X_3~31 + X_4~31 + X_5~31 + X_6~31 + X_7~31 + X_8~31 + X_9~31 + X_10~31 + X_11~31 + X_12~31 + X_13~31 + X_14~31 + X_15~31 + X_16~31 + X_17~31 + X_18~31 + X_19~31 + X_20~31 + X_21~31 + X_23~31 + X_25~31 + X_26~31 + X_27~31 + X_29~31 + X_30~31 + X_32~31 + X_33~31 + X_35~31 + X_36~31 + X_37~31 + X_40~31 + X_41~31 + X_42~31 + X_43~31 + X_44~31 + X_45~31 + X_46~31 + X_47~31 + X_48~31 + X_49~31 + X_50~31 + X_52~31 + X_53~31 + X_54~31 + X_55~31 + X_56~31 + X_57~31 + X_58~31 + X_59~31 + X_60~31 + X_61~31 + X_62~31 + X_63~31 + X_64~31 + X_65~31 + X_66~31 + X_67~31 + X_68~31 + X_69~31 + X_70~31 + X_71~31 + X_72~31 + X_73~31 + X_74~31 + X_75~31 + X_76~31 + X_77~31 + X_78~31 + X_79~31 + X_80~31 + X_81~31 + X_82~31 + X_83~31 + X_84~31 + X_85~31 + X_86~31 + X_87~31 + X_89~31 + X_90~31 + 0 <= 2000;
|
88
|
+
S_34: X_1~34 + X_2~34 + X_3~34 + X_4~34 + X_5~34 + X_6~34 + X_7~34 + X_8~34 + X_9~34 + X_10~34 + X_11~34 + X_12~34 + X_13~34 + X_14~34 + X_15~34 + X_16~34 + X_17~34 + X_18~34 + X_19~34 + X_20~34 + X_21~34 + X_23~34 + X_25~34 + X_26~34 + X_27~34 + X_29~34 + X_30~34 + X_32~34 + X_33~34 + X_35~34 + X_36~34 + X_37~34 + X_40~34 + X_41~34 + X_42~34 + X_43~34 + X_44~34 + X_45~34 + X_46~34 + X_47~34 + X_48~34 + X_49~34 + X_50~34 + X_52~34 + X_53~34 + X_54~34 + X_55~34 + X_56~34 + X_57~34 + X_58~34 + X_59~34 + X_60~34 + X_61~34 + X_62~34 + X_63~34 + X_64~34 + X_65~34 + X_66~34 + X_67~34 + X_68~34 + X_69~34 + X_70~34 + X_71~34 + X_72~34 + X_73~34 + X_74~34 + X_75~34 + X_76~34 + X_77~34 + X_78~34 + X_79~34 + X_80~34 + X_81~34 + X_82~34 + X_83~34 + X_84~34 + X_85~34 + X_86~34 + X_87~34 + X_89~34 + X_90~34 + 0 <= 4000;
|
89
|
+
S_38: X_1~38 + X_2~38 + X_3~38 + X_4~38 + X_5~38 + X_6~38 + X_7~38 + X_8~38 + X_9~38 + X_10~38 + X_11~38 + X_12~38 + X_13~38 + X_14~38 + X_15~38 + X_16~38 + X_17~38 + X_18~38 + X_19~38 + X_20~38 + X_21~38 + X_23~38 + X_25~38 + X_26~38 + X_27~38 + X_29~38 + X_30~38 + X_32~38 + X_33~38 + X_35~38 + X_36~38 + X_37~38 + X_40~38 + X_41~38 + X_42~38 + X_43~38 + X_44~38 + X_45~38 + X_46~38 + X_47~38 + X_48~38 + X_49~38 + X_50~38 + X_52~38 + X_53~38 + X_54~38 + X_55~38 + X_56~38 + X_57~38 + X_58~38 + X_59~38 + X_60~38 + X_61~38 + X_62~38 + X_63~38 + X_64~38 + X_65~38 + X_66~38 + X_67~38 + X_68~38 + X_69~38 + X_70~38 + X_71~38 + X_72~38 + X_73~38 + X_74~38 + X_75~38 + X_76~38 + X_77~38 + X_78~38 + X_79~38 + X_80~38 + X_81~38 + X_82~38 + X_83~38 + X_84~38 + X_85~38 + X_86~38 + X_87~38 + X_89~38 + X_90~38 + 0 <= 6000;
|
90
|
+
S_39: X_1~39 + X_2~39 + X_3~39 + X_4~39 + X_5~39 + X_6~39 + X_7~39 + X_8~39 + X_9~39 + X_10~39 + X_11~39 + X_12~39 + X_13~39 + X_14~39 + X_15~39 + X_16~39 + X_17~39 + X_18~39 + X_19~39 + X_20~39 + X_21~39 + X_23~39 + X_25~39 + X_26~39 + X_27~39 + X_29~39 + X_30~39 + X_32~39 + X_33~39 + X_35~39 + X_36~39 + X_37~39 + X_40~39 + X_41~39 + X_42~39 + X_43~39 + X_44~39 + X_45~39 + X_46~39 + X_47~39 + X_48~39 + X_49~39 + X_50~39 + X_52~39 + X_53~39 + X_54~39 + X_55~39 + X_56~39 + X_57~39 + X_58~39 + X_59~39 + X_60~39 + X_61~39 + X_62~39 + X_63~39 + X_64~39 + X_65~39 + X_66~39 + X_67~39 + X_68~39 + X_69~39 + X_70~39 + X_71~39 + X_72~39 + X_73~39 + X_74~39 + X_75~39 + X_76~39 + X_77~39 + X_78~39 + X_79~39 + X_80~39 + X_81~39 + X_82~39 + X_83~39 + X_84~39 + X_85~39 + X_86~39 + X_87~39 + X_89~39 + X_90~39 + 0 <= 100;
|
91
|
+
S_51: X_1~51 + X_2~51 + X_3~51 + X_4~51 + X_5~51 + X_6~51 + X_7~51 + X_8~51 + X_9~51 + X_10~51 + X_11~51 + X_12~51 + X_13~51 + X_14~51 + X_15~51 + X_16~51 + X_17~51 + X_18~51 + X_19~51 + X_20~51 + X_21~51 + X_23~51 + X_25~51 + X_26~51 + X_27~51 + X_29~51 + X_30~51 + X_32~51 + X_33~51 + X_35~51 + X_36~51 + X_37~51 + X_40~51 + X_41~51 + X_42~51 + X_43~51 + X_44~51 + X_45~51 + X_46~51 + X_47~51 + X_48~51 + X_49~51 + X_50~51 + X_52~51 + X_53~51 + X_54~51 + X_55~51 + X_56~51 + X_57~51 + X_58~51 + X_59~51 + X_60~51 + X_61~51 + X_62~51 + X_63~51 + X_64~51 + X_65~51 + X_66~51 + X_67~51 + X_68~51 + X_69~51 + X_70~51 + X_71~51 + X_72~51 + X_73~51 + X_74~51 + X_75~51 + X_76~51 + X_77~51 + X_78~51 + X_79~51 + X_80~51 + X_81~51 + X_82~51 + X_83~51 + X_84~51 + X_85~51 + X_86~51 + X_87~51 + X_89~51 + X_90~51 + 0 <= 8500;
|
92
|
+
S_88: X_1~88 + X_2~88 + X_3~88 + X_4~88 + X_5~88 + X_6~88 + X_7~88 + X_8~88 + X_9~88 + X_10~88 + X_11~88 + X_12~88 + X_13~88 + X_14~88 + X_15~88 + X_16~88 + X_17~88 + X_18~88 + X_19~88 + X_20~88 + X_21~88 + X_23~88 + X_25~88 + X_26~88 + X_27~88 + X_29~88 + X_30~88 + X_32~88 + X_33~88 + X_35~88 + X_36~88 + X_37~88 + X_40~88 + X_41~88 + X_42~88 + X_43~88 + X_44~88 + X_45~88 + X_46~88 + X_47~88 + X_48~88 + X_49~88 + X_50~88 + X_52~88 + X_53~88 + X_54~88 + X_55~88 + X_56~88 + X_57~88 + X_58~88 + X_59~88 + X_60~88 + X_61~88 + X_62~88 + X_63~88 + X_64~88 + X_65~88 + X_66~88 + X_67~88 + X_68~88 + X_69~88 + X_70~88 + X_71~88 + X_72~88 + X_73~88 + X_74~88 + X_75~88 + X_76~88 + X_77~88 + X_78~88 + X_79~88 + X_80~88 + X_81~88 + X_82~88 + X_83~88 + X_84~88 + X_85~88 + X_86~88 + X_87~88 + X_89~88 + X_90~88 + 0 <= 3500;
|
93
|
+
S_91: X_1~91 + X_2~91 + X_3~91 + X_4~91 + X_5~91 + X_6~91 + X_7~91 + X_8~91 + X_9~91 + X_10~91 + X_11~91 + X_12~91 + X_13~91 + X_14~91 + X_15~91 + X_16~91 + X_17~91 + X_18~91 + X_19~91 + X_20~91 + X_21~91 + X_23~91 + X_25~91 + X_26~91 + X_27~91 + X_29~91 + X_30~91 + X_32~91 + X_33~91 + X_35~91 + X_36~91 + X_37~91 + X_40~91 + X_41~91 + X_42~91 + X_43~91 + X_44~91 + X_45~91 + X_46~91 + X_47~91 + X_48~91 + X_49~91 + X_50~91 + X_52~91 + X_53~91 + X_54~91 + X_55~91 + X_56~91 + X_57~91 + X_58~91 + X_59~91 + X_60~91 + X_61~91 + X_62~91 + X_63~91 + X_64~91 + X_65~91 + X_66~91 + X_67~91 + X_68~91 + X_69~91 + X_70~91 + X_71~91 + X_72~91 + X_73~91 + X_74~91 + X_75~91 + X_76~91 + X_77~91 + X_78~91 + X_79~91 + X_80~91 + X_81~91 + X_82~91 + X_83~91 + X_84~91 + X_85~91 + X_86~91 + X_87~91 + X_89~91 + X_90~91 + 0 <= 10000;
|